اتساق خوارزميات الملخص في 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 للاطلاع على عقود المزوّدين والتحقق من المستندات المحمّلة