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