Firmantes primarios múltiples de CMS

HotPDF puede crear un contenedor SignedData RFC 5652 que contiene hasta 256 registros SignerInfo primarios independientes

Solicitudes de compilación

Cada THPDFCMSPrimarySignerRequest suministra su propio material de certificado y clave, el resumen del documento, THPDFCMSSignOptions, un THPDFSignatureProvider opcional y el identificador de clave del proveedor

HPDFCMSBuildMultiSignedData valida cada solicitud antes de invocar cualquier clave nativa, devolución de llamada externa, devolución de llamada de sello de tiempo, devolución de llamada de PDF MAC o proveedor, evitando que una solicitud posterior inválida cause trabajo de firma remota parcial evitable

SetLength(Signers, 2);
Signers[0].KeyMaterial := FirstKey;
Signers[0].DocumentDigest := HPDFCMSDigestBytes(DocumentBytes, cmsdaSHA256);
Signers[0].Options := FirstOptions;

Signers[1].KeyMaterial := SecondKey;
Signers[1].DocumentDigest := HPDFCMSDigestBytes(DocumentBytes, cmsdaSHA384);
Signers[1].Options := SecondOptions;
Signers[1].Provider := RemoteProvider;
Signers[1].KeyIdentifier := 'approval-key';

CMS := HPDFCMSBuildMultiSignedData(Signers);

Fusión determinista

HPDFCMSMergeSignedData combina contenedores CMS ya compilados para flujos de trabajo de firma asíncrona o distribuida sin repetir operaciones con clave privada

Cada entrada debe usar envoltorios y conjuntos signedData de longitud determinada, debe declarar cada algoritmo de resumen usado por sus firmantes primarios y debe llevar encapContentInfo con bytes idénticos; los algoritmos de resumen adicionales declarados siguen estando permitidos

El contenedor combinado deduplica algoritmos de resumen, certificados y valores de revocación, ordena todos los valores SET OF por orden de bytes DER, conserva todos los firmantes primarios y eleva la versión externa al requisito de entrada válido más alto

El orden de las solicitudes no es observable a propósito después de la codificación porque signerInfos es un SET OF DER; por lo tanto, los resultados de análisis y verificación usan el orden DER en lugar del orden de las solicitudes

Una compilación de un firmante y una fusión de un contenedor conservan exactamente los bytes CMS existentes

Validación independiente

HPDFParseCMSSignatures, HPDFVerifyCMSSignaturesEx y HPDFVerifyCMSSignerReport devuelven un resultado independiente para cada firmante primario, incluidos sus atributos, resumen y política de firma, certificado coincidente, sellos de tiempo, contrafirmas y estado de fallo

Un firmante malformado o criptográficamente inválido no borra un resultado válido hermano, mientras que el resultado booleano agregado es falso a menos que todos los firmantes primarios tengan éxito

Ajuste del tamaño del marcador de posición

HPDFCMSEstimateMultiSignerPlaceholder deriva cada longitud de firma sin firmar, compila la forma de contenedor estática deduplicada exacta con valores de firma sintéticos, suma las reservas dinámicas de devoluciones de llamada y aplica una vez el margen de seguridad global configurado, la alineación, el mínimo y el máximo

THPDFCMSPlaceholderEstimateInfo.SignatureBytes informa de la suma de todos los firmantes primarios y cpesMixed identifica un resultado cuyos firmantes usaron diferentes fuentes de estimación

Límite del flujo de trabajo PDF

Las API de varios firmantes exponen funcionalidad CMS genérica para aplicaciones cuyo perfil consumidor permite varios firmantes primarios en un contenedor

Muchos flujos de trabajo de firma PDF y PAdES modelan un firmante primario por diccionario de firma, por lo que use campos de firma PDF independientes a menos que el perfil del destinatario acepte explícitamente CMS de varios firmantes

Consulte firmantes con SubjectKeyIdentifier de CMS, consistencia del algoritmo de resumen de CMS y ajuste automático del tamaño del marcador de posición de CMS