Consistencia del algoritmo de resumen CMS
HotPDF diagnostica identificadores de algoritmo CMS inconsistentes antes de leer los rangos del documento firmado, calcular el resumen del contenido, construir rutas de certificados o invocar un proveedor de firma
Comprobaciones de consistencia
El SignerInfo.digestAlgorithm actual debe estar presente en el conjunto SignedData.digestAlgorithms envolvente, mientras que los algoritmos adicionales no relacionados siguen estando permitidos para contenedores interoperables con varios firmantes
Los OID de firma RSA PKCS#1 v1.5 y ECDSA específicos del resumen, y el hash explícito en los parámetros RSA-PSS, deben seleccionar el mismo resumen que SignerInfo.digestAlgorithm
Cuando el atributo firmado CMSAlgorithmProtection de RFC 6211 está presente, debe aparecer una vez con un valor, y sus valores protegidos de AlgorithmIdentifier de resumen y firma deben coincidir con los campos reales de SignerInfo
Los parámetros ausentes y DER NULL se comparan como equivalentes para identificadores de algoritmo sin parámetros; otros parámetros se comparan exactamente para que los mecanismos de firma parametrizados no puedan normalizarse en silencio
Resultado legible por máquina
HPDFParseCMSSignature conserva los metadatos analizados correctamente, pero establece THPDFSignatureInfo.Status en svDigestAlgorithmMismatch cuando falla una comprobación de consistencia
La verificación devuelve svDigestAlgorithmMismatch, los informes de validación usan vfcDigestAlgorithmMismatch y JSON emite digestAlgorithmMismatch sin colapsar la condición en CMS malformado, algoritmo no admitido o discrepancia de resumen de contenido
THPDFSignatureInfo.DigestAlgorithmOID registra el OID de resumen del firmante y THPDFSignatureInfo.DigestConsistencyIssue selecciona una de las siguientes causas
dciSignerDigestNotDeclared— el resumen conocido del firmante está ausente del conjunto de resúmenes externodciSignatureDigestMismatch— un mecanismo de firma fijo o parametrizado selecciona otro resumendciAlgorithmProtectionDigestMismatch— el identificador de resumen protegido difiere del identificador de resumen del firmantedciAlgorithmProtectionSignatureMismatch— el identificador de firma protegido difiere del identificador de firma del firmante
Los objetos de firmante JSON exponen la misma información como digestAlgorithmOID y digestConsistencyIssue con los valores signerDigestNotDeclared, signatureDigestMismatch, algorithmProtectionDigestMismatch o algorithmProtectionSignatureMismatch
Sellos de tiempo y precedencia
Los sellos de tiempo de documento RFC 3161 y los tokens de sello de tiempo de firma sin firmar usan las mismas comprobaciones, y su valor THPDFTimestampInfo.DigestConsistencyIssue identifica un contenedor CMS anidado incoherente
Los errores estructurales aún fallan como CMS malformado, los resúmenes de firmante desconocidos siguen sin admitirse y el primer problema de consistencia determinista se conserva en el orden contenedor, protección de algoritmo y, luego, mecanismo de firma
Consulte proveedores de firma modernos y THotPDF.VerifyLoadedSignatureWithOptions para los contratos de verificación de proveedores y documentos cargados