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

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