Spójność algorytmów skrótów CMS
HotPDF diagnozuje niespójne identyfikatory algorytmów CMS, zanim odczyta podpisane zakresy dokumentu, zhaszuje zawartość, zbuduje ścieżki certyfikatów albo wywoła dostawcę podpisu
Kontrole spójności
Bieżący SignerInfo.digestAlgorithm musi występować w otaczającym zestawie SignedData.digestAlgorithms, natomiast niezwiązane dodatkowe algorytmy pozostają dozwolone dla interoperacyjnych kontenerów wielopodpisowych
Specyficzne dla skrótu OID-y podpisów RSA PKCS#1 v1.5 i ECDSA oraz jawny hash w parametrach RSA-PSS muszą wybierać ten sam skrót co SignerInfo.digestAlgorithm
Gdy podpisany atrybut CMSAlgorithmProtection z RFC 6211 występuje, musi wystąpić dokładnie raz z jedną wartością, a jego chronione wartości AlgorithmIdentifier skrótu i podpisu muszą odpowiadać rzeczywistym polom SignerInfo
Brak parametrów i parametry DER NULL są porównywane jako równoważne dla identyfikatorów algorytmów bez parametrów; pozostałe parametry porównuje się dokładnie, więc sparametryzowane mechanizmy podpisu nie mogą zostać po cichu znormalizowane
Wynik czytelny maszynowo
HPDFParseCMSSignature zachowuje poprawnie sparsowane metadane, ale ustawia THPDFSignatureInfo.Status na svDigestAlgorithmMismatch, gdy kontrola spójności zawiedzie
Weryfikacja zwraca svDigestAlgorithmMismatch, raporty walidacji używają vfcDigestAlgorithmMismatch, a JSON emituje digestAlgorithmMismatch — bez spłaszczania tego stanu do wadliwego CMS, nieobsługiwanego algorytmu albo niezgodności skrótu zawartości
THPDFSignatureInfo.DigestAlgorithmOID zapisuje OID skrótu podpisującego, a THPDFSignatureInfo.DigestConsistencyIssue wybiera jedną z poniższych przyczyn
dciSignerDigestNotDeclared— znany skrót podpisującego nie występuje w zewnętrznym zestawie skrótówdciSignatureDigestMismatch— stały lub sparametryzowany mechanizm podpisu wybiera inny skrótdciAlgorithmProtectionDigestMismatch— chroniony identyfikator skrótu różni się od identyfikatora skrótu podpisującegodciAlgorithmProtectionSignatureMismatch— chroniony identyfikator podpisu różni się od identyfikatora podpisu podpisującego
Obiekty JSON podpisujących wystawiają te same informacje jako digestAlgorithmOID i digestConsistencyIssue z wartościami signerDigestNotDeclared, signatureDigestMismatch, algorithmProtectionDigestMismatch lub algorithmProtectionSignatureMismatch
Znaczniki czasu i pierwszeństwo
Znaczniki czasu dokumentu z RFC 3161 i niepodpisane tokeny znacznika czasu podpisu używają tych samych kontroli, a ich wartość THPDFTimestampInfo.DigestConsistencyIssue wskazuje niespójny zagnieżdżony kontener CMS
Błędy strukturalne dalej zawodzą jako wadliwy CMS, nieznane skróty podpisującego pozostają nieobsługiwane, a pierwsza deterministyczna kwestia spójności jest zapamiętywana w kolejności: kontener, ochrona algorytmów, potem mechanizm podpisu
Zobacz nowoczesnych dostawców podpisu oraz THotPDF.VerifyLoadedSignatureWithOptions dla kontraktów dostawców i weryfikacji załadowanych dokumentów