Consistencia de algoritmos de digest CMS
HotPDF diagnostica identificadores de algoritmo CMS inconsistentes antes de leer rangos firmados del documento, calcular el hash del contenido, construir certificate paths o invocar un signature provider
Comprobaciones de consistencia
El SignerInfo.digestAlgorithm actual debe estar presente en el conjunto SignedData.digestAlgorithms que lo envuelve, mientras que los algoritmos extra no relacionados siguen permitiéndose en contenedores multi-signer interoperables
Los OIDs de firma RSA PKCS#1 v1.5 y ECDSA específicos del digest, y el hash explícito en los parámetros RSA-PSS, deben seleccionar el mismo digest que SignerInfo.digestAlgorithm
Cuando el atributo firmado RFC 6211 CMSAlgorithmProtection está presente, debe aparecer una sola vez con un único valor, y sus valores protegidos de digest y de firma en AlgorithmIdentifier deben coincidir con los campos reales de SignerInfo
Los parámetros ausentes y los DER NULL se comparan como equivalentes en identificadores de algoritmo sin parámetros; los demás parámetros se comparan de forma exacta para que los mecanismos de firma parametrizados no se normalicen silenciosamente
Resultado legible por máquina
HPDFParseCMSSignature conserva los metadatos parseados con éxito, pero establece THPDFSignatureInfo.Status en svDigestAlgorithmMismatch cuando falla una comprobación de consistencia
La verificación devuelve svDigestAlgorithmMismatch, los reportes de validación usan vfcDigestAlgorithmMismatch y el JSON emite digestAlgorithmMismatch sin colapsar la condición en un CMS malformado, un algoritmo no soportado o un mismatch del digest de contenido
THPDFSignatureInfo.DigestAlgorithmOID registra el OID del digest del signer y THPDFSignatureInfo.DigestConsistencyIssue selecciona una de las siguientes causas
dciSignerDigestNotDeclared— el digest conocido del signer está ausente del conjunto de digests externodciSignatureDigestMismatch— un mecanismo de firma fijo o parametrizado selecciona otro digestdciAlgorithmProtectionDigestMismatch— el identificador de digest protegido difiere del identificador de digest del signerdciAlgorithmProtectionSignatureMismatch— el identificador de firma protegido difiere del identificador de firma del signer
Los objetos signer del JSON exponen la misma información mediante digestAlgorithmOID y digestConsistencyIssue con los valores signerDigestNotDeclared, signatureDigestMismatch, algorithmProtectionDigestMismatch o algorithmProtectionSignatureMismatch
Timestamps y precedencia
Los document timestamps RFC 3161 y los tokens de signature-timestamp sin firmar aplican las mismas comprobaciones, y su valor THPDFTimestampInfo.DigestConsistencyIssue identifica un contenedor CMS anidado inconsistente
Los errores estructurales siguen fallando como CMS malformado, los digests de signer desconocidos siguen sin soportarse, y se retiene el primer issue de consistencia determinista en el orden contenedor, algorithm-protection y luego mecanismo de firma
Consulte los modern signature providers y THotPDF.VerifyLoadedSignatureWithOptions para conocer los contratos de verificación por provider y por documento cargado