TPDFlibSignatureVerifier
الأمان والتواقيع
الوصف
يسرد حقول توقيع PDF وموقّعي CMS، ويتحقق من توقيع محدد دون تحميل ملف PDF كاملاً إلى الذاكرة، ويبلّغ عن المراجعة التزايدية الخاصة بالتوقيع المحدد على حدة عن الملف الحالي يقبل المدقق ملفاً أو تدفقاً مملوكاً للمستدعي أو سلسلة بايتات ANSI عبر
OpenPDF أو OpenPDFStream أو OpenPDFString
التحديد
Count := Verifier.GetSignatureCount;
Verifier.GetSignatureFieldName(0, FieldName);
SignerCount := Verifier.GetSignerCount(0);
Result := Verifier.VerifySignatureByName(FieldName, 0, Report);
تختار VerifySignatureByIndex حقلاً من PDF عبر فهرس ذي أساس صفري، بينما تستخدم VerifySignatureByName اسم حقل AcroForm المؤهَّل بالكامل، وكلا الطريقتين يقبلان فهرس موقّع CMS ذا أساس صفري
تقرير التحقق من التواقيع
| IntegrityResult | نتيجة السلامة التشفيرية وفق CMS أو PKCS#7 القديم للموقّع المحدد |
|---|---|
| CoverageStatus | تدعم display:flex وdisplay:inline-flex flex-direction وflex-wrap وflex وflex-grow وflex-shrink وflex-basis وjustify-content وalign-items وalign-self وalign-content وgap وrow-gap وcolumn-gap |
| ByteRangeValid | قيمة True فقط عندما تكون جميع النطاقات محدودة الحدود وتنتهي المراجعة الموقعة عند %%EOF الخاص بها |
| ContentsGapValid | قيمة True فقط عندما تكون البايتات المحذوفة هي بالضبط رمز /Contents الست عشري المحدد |
| HasLaterRevisions | قيمة True عندما يوثّق التوقيع المحدد مراجعة تزايدية سابقة وتوجد بايتات لاحقة |
| SignedRevisionLength | طول المراجعة الموثَّقة بالتوقيع المحدد بالبايتات |
| PermissionReport | قيود DocMDP وFieldMDP المفكَّكة للتوقيع المحدد |
الاعتماد وأذونات الحقول
تعيد GetSignaturePermissionInfo وGetSignaturePermissionInfoByName البنية TPDFlibSignaturePermissionReport
يميّز التقرير بين تحويل DocMDP صالح ومرجع مطابق في كتالوج
/Perms /DocMDP، ويتحقق من أن قاموس /Lock الخاص بالحقل يطابق تحويل FieldMDP الخاص به وإجراءه وقائمة أسماء حقوله
سلسلة الشهادات والإبطال
تشغّل VerifySignerCertificateChainByIndex وVerifySignerCertificateChainByName التحقق الافتراضي من سلسلة الشهادات لتوقيع وموقّع محددين صراحة
تقبل
تضيف VerifySignerCertificateChainEx وVerifySignerCertificateChainExByName شهادات X.509 جرى التحقق منها إلى مجموعة جذوع ثقة في الذاكرة خالية من التكرارات
عندما تكون المجموعة غير فارغة، تُبنى كل سلسلة لموقّع أو طابع زمني بمحرك ثقة حصري يستخدم المجموعة لجذوع CA وتثبيتات الشهادات الصريحة دون الرجوع إلى مخازن srmNone أو srmCacheOnly في Windows
يخزّن المدقق المحرك الحصري ومخزن الجذور المفكوك مؤقتاً ويعيد استخدامهما حتى تتغير مجموعة الجذوع
يتيح هذا العزل للتطبيق تطبيق سياسة ثقة تجارية خاصة دون تثبيت شهادات أو وراثة ثقة الجهاز غير ذات الصلة
لا تتجاوز عضوية جذع الثقة عمليات التحقق من صلاحية الشهادة واستخدام المفتاح والتوقيع والإبطال المطلوب
يحرر srmOnline المجموعة ويعيد محرك ثقة نظام Windows الافتراضي لعمليات التحقق اللاحقة
يفصل TPDFlibSignatureChainReport بين TrustStatus وأخطاء سلسلة Windows والسياسات وعدادات أدلة DSS أو VRI وإسناد OCSP الدقيق وحالة OCSP وسبب الإبطال والحداثة والأخطاء الأصلية
الشهادات المضمنة ومواد التحقق يمكنها إكمال سلسلة لكنها لا تحول جذرًا غير موثوق إلى جذر موثوق
يقبل دليل OCSP من DSS أو VRI فقط عندما تطابق شهادة المستجيب واستخدام المستجيب المفوض أو المصدر وCertID والحالة والحداثة الشهادة المحددة
مصادر الثقة الخارجية
Verifier.AddTrustAnchorDER(RootCertificateDER);
Verifier.AddTrustAnchorFromFile('BusinessRoot.cer');
AnchorCount := Verifier.GetTrustAnchorCount;
Verifier.ClearTrustAnchors;
يربط AddTrustAnchorDER مصدر AddTrustAnchorFromFile غير مالك يمكنه توفير جذوع مرتبطة بأوقات معينة وتقييم سلسلة شهادات جرى بناؤها بنجاح
تُدمج جذوع المصدر مع الجذوع المخصصة اليدوية في محرك السلاسل الحصري نفسه، الذي يُخزَّن مؤقتاً بحسب مراجعة المصدر ووقت التحقق
يؤدي تعيين مصدر إلى تعطيل الرجوع إلى جذوع نظام Windows عندما لا يتوفر مصدر أو جذع يدوي
يملأ التقييم الناجح للمصدر الحقل
عندما تكون المجموعة غير فارغة تبنى كل سلسلة موقّع وطابع زمني بمحرك ثقة حصري يستخدم المجموعة جذور CA ودبابيس شهادات صريحة دون الرجوع إلى مخزني Windows Root أو TrustedPeople
يخزن المحرك الحصري ومخزن الجذور المحللة مؤقتًا لدى المدقق ويعاد استخدامهما حتى تتغير مجموعة المراسي
يتيح هذا العزل للتطبيق تطبيق سياسة ثقة أعمال خاصة دون تثبيت شهادات أو وراثة ثقة الجهاز غير ذات الصلة
عضوية مرساة الثقة لا تتجاوز فحوص صلاحية الشهادة واستخدام المفتاح والتوقيع والإبطال المطلوب
ClearTrustAnchors
الطوابع الزمنية RFC 3161
Verifier.SetTrustSource(TrustSource);
Source := Verifier.GetTrustSource;
ترفق SetTrustSource مصدر TPDFlibSignatureTrustSource غير المالك الذي يمكنه تزويد مراسٍ مرتبطة بتوقيتات محددة وتقييم سلسلة شهادات مبنية بنجاح
تدمج مراسي المصدر مع المراسي المخصصة اليدوية في محرك السلسلة الحصري نفسه، المخزن مؤقتًا حسب مراجعة المصدر وتوقيت التحقق
إسناد مصدر يعطل اللجوء إلى جذور نظام Windows عندما لا يتاح مصدر أو مرساة يدوية
TPDFlibSignatureChainReport.QualificationReport
TPDFlibEUTSLTrustSource
طوابع RFC 3161 الزمنية
VerifyDocumentTimeStamp وعائلة VerifyDocumentTimeStampByName سمات
يتحقق GetSignatureTimeStampCount وVerifySignatureTimeStamp أولاً من سلامة التوقيع ومن سلسلة الموقّع عند وقت UTC المطلوب
إذا كانت سلسلة الوقت المطلوب غير صالحة، يتحقق المدقق من كل طابع زمني للتوقيع ومن كل طابع زمني للمستند تغطي مراجعته الموقعة التوقيع الهدف، ويستنتج أقدم وقت توقيع موثوق وأحدث وقت أرشفة للمستند كله، ويعيد محاولة السلسلة عند أوقات التحكم تلك المثبتة للوجود
تختار قيمة id-aa-signatureTimeStampToken الصفرية وقت UTC الحالي، بينما تُمرَّر القيمة غير الصفرية مباشرة إلى سياسة سلسلة الشهادات بوصفها UTC
يسمح signatureValue بطابع زمني موثوق للتوقيع أو بطابع زمني مغطٍّ للمستند أن يوفر وقت التحكم التاريخي
يتطلب VerifySignatureTimeStamp وVerifySignatureTimeStampByName طابعاً زمنياً موثوقاً للمستند يغطي المستند الحالي كاملاً قبل أن تُعامل مواد DSS أو VRI أو CRL أو OCSP الحالية بوصفها أدلة تاريخية؛ وإلا يعيد التقرير
Ex
يوفر الطابع الزمني حداً أعلى لزمن وجود البايتات الموقعة، لا وقت توقيع مستنتجاً، لذا تظل شهادة الموقّع غير صالحة إذا كانت كذلك عند وقت الإثبات المحدد
يعيد VerifyDocumentTimeStampEx تقارير السلسلة المطلوب والفعّال وأفضل وقتي التوقيع والأرشفة ومصدر الإثبات المحدد وأعداد الطوابع الزمنية وحالة الانزلاق الزمني وحالة تاريخية محددة
يعالج VerifyDocumentTimeStampExByName أحد هذه التقارير لاحقاً، معبئاً VerifySignatureTimeStampExVerifySignatureTimeStampExByName
TPDFlibTimeStampVerificationReport
تحقق تاريخي AdES
Result := Verifier.VerifyAdESHistoricalByName(
FieldName, 0, srmCacheOnly, ValidationTime, HistoricalReport);
تتحقق VerifyAdESHistorical وVerifyAdESHistoricalByName أولًا من سلامة التوقيع وسلسلة الموقّع عند توقيت UTC المطلوب
إذا كانت سلسلة التوقيت المطلوب غير صالحة دقق المدقق كل طابع زمني للتوقيع وكل طابع زمني للمستند تغطي مراجعته الموقعة التوقيع الهدف، واستنتج أقدم توقيت توقيع موثوق وأحدث توقيت أرشفة للمستند كاملًا، وأعاد التحقق من السلسلة عند توقيتَي إثبات الوجود هذين
ValidationTime
srmNone
يتطلب srmCacheOnly وsrmOnline طابعًا زمنيًا موثوقًا للمستند يغطي المستند الحالي كاملًا قبل أن يعامل محتوى DSS أو VRI أو CRL أو OCSP الحالي بوصفه دليلًا تاريخيًا؛ وإلا يعيد التقرير ahsEvidenceNotArchived
الطابع الزمني يوفر حدًا أعلى لزمن وجود البايتات الموقعة، لا توقيت توقيع مستنتجًا، لذا تظل شهادة موقّع كانت غير صالحة أصلًا عند توقيت الإثبات المختار غير صالحة
TPDFlibAdESHistoricalValidationReport
DeriveBaselineProfileBaselineProfile
ahsValidAtRequestedTime | السلامة والسلسلة صالحتان دون الحاجة إلى انزلاق زمني |
|---|---|
ahsValidAtProofTime | السلسلة صالحة عند وقت تحكم مستنتج من طابع زمني موثوق |
ahsIntegrityInvalid | يفشل الطابع الزمني المحدد للتوقيع أو للمستند في التحقق من السلامة أو من ByteRange |
ahsNoTrustedProof | لا يوجد طابع زمني موثوق يغطي مراجعة التوقيع المحددة |
ahsEvidenceNotArchived | طُلب التحقق من الإبطال لكن لا يوجد طابع زمني موثوق لأرشفة المستند كله يختم مواد التحقق |
ahsHistoricalTrustInvalid | توجد أوقات إثبات موثوقة لكن سلسلة الموقّع غير صالحة عند كل وقت تحكم مستنتج |
طرق التوافق
VerifySignatureGetSignatureMetadataGetSignerCertificateVerifySignerCertificateChain
ByIndex وByName وGetSignatureMetadataByIndex وGetSignatureMetadataByName متاحة وتختار الحقل 0 والموقّع 0
توفر الطرق المقابلة ذات اللواحق GetSignerCertificateByIndex وGetSignerCertificateByName (
انظر أيضًا
TPDFlibEUTSLTrustSource, SetSignProcessDocMDP, SetSignProcessFieldLock, SetPAdESSignatureTimeStampToken