Узгодженість алгоритму дайджеста CMS

HotPDF діагностує неузгоджені ідентифікатори алгоритмів CMS до того, як читає діапазони підписаного документа, обчислює геш вмісту, будує ланцюжки сертифікатів чи викликає постачальника підпису

Перевірки узгодженості

Поточний SignerInfo.digestAlgorithm має бути присутнім у множині охоплюючого SignedData.digestAlgorithms, тоді як непов'язані додаткові алгоритми залишаються дозволеними для інтероперабельних контейнерів із кількома підписувачами

Специфічні для дайджеста OID RSA PKCS#1 v1.5 та ECDSA-підписів, а також явний геш у параметрах RSA-PSS, мають вибирати той самий дайджест, що й SignerInfo.digestAlgorithm

Коли присутній підписаний атрибут CMSAlgorithmProtection за RFC 6211, він має зустрічатися один раз з одним значенням, а його захищені значення AlgorithmIdentifier дайджеста й підпису мають збігатися з фактичними полями SignerInfo

Відсутні параметри та DER NULL порівнюються як еквівалентні для ідентифікаторів алгоритмів без параметрів; інші параметри порівнюються точно, тому параметризовані механізми підпису не можуть бути мовчки нормалізовані

Машинозчитуваний результат

HPDFParseCMSSignature зберігає успішно розібрані метадані, але встановлює THPDFSignatureInfo.Status у svDigestAlgorithmMismatch, коли перевірка узгодженості не проходить

Перевірка повертає svDigestAlgorithmMismatch, звіти перевірки використовують vfcDigestAlgorithmMismatch, а JSON видає digestAlgorithmMismatch, не звівши цю умову до пошкодженого CMS, непідтримуваного алгоритму чи неузгодженості геша вмісту

THPDFSignatureInfo.DigestAlgorithmOID фіксує OID дайджеста підписувача, а THPDFSignatureInfo.DigestConsistencyIssue вибирає одну з наведених нижче причин

JSON-об'єкти підписувачів розкривають ту саму інформацію як digestAlgorithmOID і digestConsistencyIssue зі значеннями signerDigestNotDeclared, signatureDigestMismatch, algorithmProtectionDigestMismatch або algorithmProtectionSignatureMismatch

Позначки часу та пріоритет

Позначки часу документа RFC 3161 і непідписані токени підпису з позначкою часу використовують ті самі перевірки, а їхнє значення THPDFTimestampInfo.DigestConsistencyIssue виявляє неузгоджений вкладений CMS-контейнер

Структурні помилки все ще завершуються як пошкоджений CMS, невідомі дайджести підписувачів лишаються непідтримуваними, а перша детермінована проблема узгодженості зберігається в порядку: контейнер, захист алгоритму, потім механізм підпису

Див. сучасні постачальники підписів та THotPDF.VerifyLoadedSignatureWithOptions для контрактів перевірки постачальника та завантаженого документа