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
dciSignerDigestNotDeclared— le condensat connu du signataire est absent de l'ensemble externe de condensatsdciSignatureDigestMismatch— un mécanisme de signature fixe ou paramétré sélectionne un autre condensatdciAlgorithmProtectionDigestMismatch— l'identifiant de condensat protégé diffère de l'identifiant de condensat du signatairedciAlgorithmProtectionSignatureMismatch— l'identifiant de signature protégé diffère de l'identifiant de signature du signataire
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é