Cohérence des algorithmes de condensat CMS

HotPDF diagnostique les identifiants d'algorithme CMS incohérents avant de lire les plages de documents signées, de hacher le contenu, de construire les chemins de certificat ou d'invoquer un fournisseur de signature

Vérifications de cohérence

Le SignerInfo.digestAlgorithm courant doit être présent dans l'ensemble SignedData.digestAlgorithms englobant, tandis que des algorithmes supplémentaires sans rapport restent autorisés pour des conteneurs multi-signataires interopérables

Les OID de signature RSA PKCS#1 v1.5 et ECDSA spécifiques au condensat, ainsi que le hachage explicite des paramètres RSA-PSS, doivent sélectionner le même condensat que SignerInfo.digestAlgorithm

Lorsque l'attribut signé CMSAlgorithmProtection de la RFC 6211 est présent, il doit apparaître une seule fois avec une valeur, et ses valeurs AlgorithmIdentifier protégées de condensat et de signature doivent correspondre aux champs réels du SignerInfo

Les paramètres absents et la valeur DER NULL sont comparés comme équivalents pour les identifiants sans paramètre ; les autres paramètres sont comparés exactement afin que les mécanismes de signature paramétrés ne puissent pas être silencieusement normalisés

Résultat lisible par machine

HPDFParseCMSSignature conserve les métadonnées correctement analysées mais définit THPDFSignatureInfo.Status sur svDigestAlgorithmMismatch lorsqu'une vérification de cohérence échoue

La vérification renvoie svDigestAlgorithmMismatch, les rapports de validation utilisent vfcDigestAlgorithmMismatch, et le JSON émet digestAlgorithmMismatch sans rabattre la condition sur du CMS mal formé, un algorithme non pris en charge ou un condensat de contenu incohérent

THPDFSignatureInfo.DigestAlgorithmOID enregistre l'OID de condensat du signataire et THPDFSignatureInfo.DigestConsistencyIssue sélectionne l'une des causes suivantes

Les objets signataires JSON exposent les mêmes informations sous les noms digestAlgorithmOID et digestConsistencyIssue avec les valeurs signerDigestNotDeclared, signatureDigestMismatch, algorithmProtectionDigestMismatch ou algorithmProtectionSignatureMismatch

Horodatages et précédence

Les horodatages de document RFC 3161 et les jetons de signature-horodatage non signés utilisent les mêmes vérifications, et leur valeur THPDFTimestampInfo.DigestConsistencyIssue identifie un conteneur CMS imbriqué incohérent

Les erreurs structurelles échouent toujours en tant que CMS mal formé, les condensats de signataire inconnus restent non pris en charge, et le premier problème de cohérence déterministe est conservé dans l'ordre conteneur, protection d'algorithme, puis mécanisme de signature

Voir fournisseurs de signature modernes et THotPDF.VerifyLoadedSignatureWithOptions pour les contrats de vérification de fournisseur et de document chargé