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