Coerența algoritmului de digest CMS

HotPDF diagnostichează identificatorii de algoritm CMS incoerenți înainte de a citi intervalele de document semnate, de a genera hash-uri de conținut, de a construi lanțuri de certificate sau de a invoca un furnizor de semnături

Verificări de coerență

SignerInfo.digestAlgorithm curent trebuie să fie prezent în setul SignedData.digestAlgorithms care îl conține, în timp ce algoritmii suplimentari necorelați rămân permisi pentru containere interoperabile cu mai mulți semnatari

OID-urile de semnătură RSA PKCS#1 v1.5 și ECDSA specifice digestului, precum și hash-ul explicit din parametrii RSA-PSS, trebuie să selecteze același digest ca SignerInfo.digestAlgorithm

Când atributul semnat CMSAlgorithmProtection din RFC 6211 este prezent, trebuie să apară o singură dată cu o singură valoare, iar valorile protejate AlgorithmIdentifier de digest și semnătură trebuie să corespundă câmpurilor reale din SignerInfo

Parametrii absenți și DER NULL se compară ca echivalenți pentru identificatorii de algoritm fără parametri; ceilalți parametri se compară exact, astfel încât mecanismele de semnătură parametrizate nu pot fi normalizate silențios

Rezultat interpretabil de mașină

HPDFParseCMSSignature păstrează metadatele analizate cu succes, dar setează THPDFSignatureInfo.Status la svDigestAlgorithmMismatch când o verificare de coerență eșuează

Verificarea returnează svDigestAlgorithmMismatch, rapoartele de validare folosesc vfcDigestAlgorithmMismatch, iar JSON emite digestAlgorithmMismatch fără a reduce condiția la CMS malformat, algoritm nesuportat sau nepotrivire a digestului de conținut

THPDFSignatureInfo.DigestAlgorithmOID înregistrează OID-ul digestului semnatarului, iar THPDFSignatureInfo.DigestConsistencyIssue selectează una dintre următoarele cauze

Obiectele JSON ale semnatarului expun aceleași informații ca digestAlgorithmOID și digestConsistencyIssue, cu valorile signerDigestNotDeclared, signatureDigestMismatch, algorithmProtectionDigestMismatch sau algorithmProtectionSignatureMismatch

Marcaje temporale și precedență

Marcajele temporale de document RFC 3161 și token-urile nesemnate de marcaj temporal al semnăturii folosesc aceleași verificări, iar valoarea lor THPDFTimestampInfo.DigestConsistencyIssue identifică un container CMS imbricat incoerent

Erorile structurale eșuează în continuare ca CMS malformat, digeste necunoscute ale semnatarului rămân nesuportate, iar prima problemă deterministă de coerență este reținută în ordinea container, protecție de algoritm, apoi mecanism de semnătură

Consultați furnizorii moderni de semnături și THotPDF.VerifyLoadedSignatureWithOptions pentru contractele de verificare ale furnizorului și ale documentului încărcat