اتساق خوارزميات الملخص في 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 أحد الأسباب التالية
dciSignerDigestNotDeclared— ملخّص الموقّع المعروف غير موجود في مجموعة الملخصات الخارجيةdciSignatureDigestMismatch— آلية توقيع ثابتة أو مُعاملة تختار ملخصًا آخرdciAlgorithmProtectionDigestMismatch— معرّف الملخص المحمي يختلف عن معرّف ملخّص الموقّعdciAlgorithmProtectionSignatureMismatch— معرّف التوقيع المحمي يختلف عن معرّف توقيع الموقّع
تعرّض كائنات الموقّعين في JSON المعلومات نفسها عبر digestAlgorithmOID وdigestConsistencyIssue بالقيم signerDigestNotDeclared أو signatureDigestMismatch أو algorithmProtectionDigestMismatch أو algorithmProtectionSignatureMismatch
الطوابع الزمنية وأولوية الفحوصات
تستخدم طوابع المستندات الزمنية وفق RFC 3161 ورموز طابع التوقيع الزمني غير الموقّعة الفحوصات نفسها، وتحدّد قيمة THPDFTimestampInfo.DigestConsistencyIssue حاوية CMS متداخلة غير متسقة
تظل الأخطاء الهيكلية تفشل كـ CMS تالف، وتبقى ملخصات الموقّعين غير المعروفة غير مدعومة، ويحتفظ بأول مسألة اتساق حتمية بالترتيب: الحاوية، ثم حماية الخوارزمية، ثم آلية التوقيع
راجع مزوّدي التوقيع الحديثين وTHotPDF.VerifyLoadedSignatureWithOptions للاطلاع على عقود المزوّدين والتحقق من المستندات المحمّلة