Konzistence digest algoritmu CMS
HotPDF diagnostikuje nekonzistentní identifikátory algoritmů CMS dříve, než přečte podepsané rozsahy dokumentu, vypočítá hash obsahu, sestaví cesty certifikátů nebo vyvolá poskytovatele podpisů
Kontroly konzistence
Aktuální SignerInfo.digestAlgorithm musí být přítomen v obklopující sadě SignedData.digestAlgorithms, zatímco nesouvisející další algoritmy zůstávají povoleny pro interoperabilní kontejnery s více podepisovateli
OID podpisů specifických pro digest typicky RSA PKCS#1 v1.5 a ECDSA a explicitní hash v parametrech RSA-PSS musí vybrat stejný digest jako SignerInfo.digestAlgorithm
Pokud je přítomen podepsaný atribut CMSAlgorithmProtection podle RFC 6211, musí se vyskytnout jednou s jednou hodnotou a jeho chráněné hodnoty AlgorithmIdentifier digestu a podpisu se musí shodovat se skutečnými poli SignerInfo
Chybějící a DER NULL parametry se porovnávají jako ekvivalentní pro identifikátory algoritmů bez parametrů; ostatní parametry se porovnávají přesně, takže parametrizované mechanismy podpisů nelze tiše normalizovat
Strojově čitelný výsledek
HPDFParseCMSSignature zachovává úspěšně analyzovaná metadata, ale nastavuje THPDFSignatureInfo.Status na svDigestAlgorithmMismatch, když kontrola konzistence selže
Ověřování vrací svDigestAlgorithmMismatch, zprávy o validaci používají vfcDigestAlgorithmMismatch a JSON vydává digestAlgorithmMismatch, aniž by podmínku srazil do malformovaného CMS, nepodporovaného algoritmu nebo neshody digestu obsahu
THPDFSignatureInfo.DigestAlgorithmOID zaznamenává OID podepisovatelského digestu a THPDFSignatureInfo.DigestConsistencyIssue vybírá jednu z následujících příčin
dciSignerDigestNotDeclared— známý podepisovatelský digest chybí ve vnější sadě digestůdciSignatureDigestMismatch— fixní nebo parametrizovaný mechanismus podpisu vybírá jiný digestdciAlgorithmProtectionDigestMismatch— chráněný identifikátor digestu se liší od identifikátoru podepisovatelského digestudciAlgorithmProtectionSignatureMismatch— chráněný identifikátor podpisu se liší od identifikátoru podepisovatelského podpisu
JSON objekty podepisovatelů vystavují stejné informace jako digestAlgorithmOID a digestConsistencyIssue s hodnotami signerDigestNotDeclared, signatureDigestMismatch, algorithmProtectionDigestMismatch nebo algorithmProtectionSignatureMismatch
Časová razítka a priorita
Časová razítka dokumentu podle RFC 3161 a nepodepsané tokeny časového razítka podpisu používají stejné kontroly a jejich hodnota THPDFTimestampInfo.DigestConsistencyIssue identifikuje nekonzistentní vnořený CMS kontejner
Strukturální chyby stále selhávají jako malformovaný CMS, neznámé podepisovatelské digesty zůstávají nepodporované a první deterministický problém konzistence je zachován v pořadí kontejner, ochrana algoritmu a poté mechanismus podpisu
Viz moderní poskytovatele podpisů a THotPDF.VerifyLoadedSignatureWithOptions pro kontrakty ověřování poskytovatele a načteného dokumentu