TPDFlibEUTSLTrustSource
الأمان والتواقيع
الوصف
يحمل قائمة الاتحاد الأوروبي للقوائم الموثوقة وقوائم خدماته الوطنية الموثوقة المشار إليها، ويدقق تواقيع XML لها، ويزود TPDFlibSignatureVerifier بمراسي ثقة واعية بالتوقيت
يقيّم المصدر كذلك عبارات الشهادات المؤهلة ومؤهلات الخدمة الموثوقة ومعايير التأهيل وامتدادات نطاق الخدمة وسجل الخدمة ليصنف التواقيع والأختام الإلكترونية المؤهلة وفق eIDAS
الوحدة
PDFlibEUTSL
تهيئة الثقة
Function AddLOTLSigningCertificateDER(
Const CertificateDER: AnsiString): Boolean;
Function AddLOTLSigningCertificateFromFile(
Const CertificateFile: WideString): Boolean;
Procedure ClearLOTLSigningCertificates;
Procedure Clear;
على التطبيق تثبيت شهادة توقيع LOTL موثوقة باستقلال واحدة على الأقل قبل تحميل LOTL يتجاهل
Clear الـ LOTL المحمّل وكل لقطة TSL وطنية ومؤشراتها وخدماتها وحالتها التشخيصية دون مساس بشهادات توقيع LOTL المثبتة؛ وتصبح النسخة جاهزة بعد ذلك لتحميل لقطة جديدة
يجب أن تطابق شهادة التوقيع المضمّنة في
يجب أن تطابق شهادة التوقيع المضمنة في KeyInfo داخل XML شهادة مثبتة بايتًا ببايت فلا يستطيع موقّع يدّعي بنفسه تأسيس ثقته
يجب أن توقع كل TSL وطنية بدورها بشهادة يحملها مؤشر LOTL المطابق الموثق سلفًا
تحميل القوائم الموثوقة
Function LoadLOTLFromString(Const XMLData: AnsiString): Boolean;
Function LoadLOTLFromFile(Const FileName: WideString): Boolean;
Function LoadLOTLFromURL(Const URL: WideString): Boolean;
Function LoadTSLFromString(PointerIndex: Integer;
Const XMLData: AnsiString): Boolean;
Function LoadTSLFromFile(PointerIndex: Integer;
Const FileName: WideString): Boolean;
Function LoadTSLFromURL(PointerIndex: Integer): Boolean;
Function RefreshAllTSLs: Integer;
يعطّل تحميل XML أنواع DTD والكيانات الخارجية، ويطبق حد حجم قابلًا للضبط، ويتطلب توقيعًا مغلفًا واحدًا فوق جذر المستند، ويرفض المراجع المنفصلة والتواقيع المكررة وإخفاقات الملخص وعدم تطابق الموقّع وعدم تطابق الإقليم
يتطلب LoadLOTLFromURL وLoadTSLFromURL بروتوكول HTTPS افتراضيًا ويطبقان NetworkTimeoutMS وMaxXMLBytes على كل طلب؛ وتتحكم خاصية RequireHTTPS (الافتراضي True) في فحص المخطط، وإطفاؤها مخصص فقط لبيئات اختبار متحكم بها
ينزّل
RefreshAllTSLs
NextUpdate ويتحقق من كل مؤشر حالي قبل استبدال مجموعة الخدمات النشطة، فيحفظ إخفاق جزئي في الشبكة أو التوقيع اللقطة المتحقق منها السابقة
تفشل لقطات LOTL وTSL منتهية الصلاحية بأسلوب الإغلاق افتراضيًا وتبقى غير قابلة للاستخدام بعد وقتهما AllowExpiredLists؛ وتتاح
الفحص
Function GetPointerCount: Integer;
Function GetPointerInfo(Index: Integer;
Out Info: TPDFlibEUTSLPointerInfo): Boolean;
Function GetPointerSigningCertificateDER(PointerIndex,
CertificateIndex: Integer; Out CertificateDER: AnsiString): Boolean;
Function GetServiceCount: Integer;
Function GetServiceInfo(Index: Integer;
Out Info: TPDFlibEUTSLServiceInfo): Boolean;
Function GetServiceCertificateDER(ServiceIndex, CertificateIndex: Integer;
VerificationTime: TDateTime;
Out CertificateDER: AnsiString): Boolean;
تكشف معلومات الخدمة اسم الخدمة الحالي ونوعها وحالتها وتوقيت بداية الحالة وعدد الشهادات وعدد السجل
تكشف معلومات المؤشر عن الإقليم والموقع ونوع MIME وعدد موقّعي TSL المسموح بهم
تكشف معلومات الخدمة عن اسم الخدمة الحالي ونوعها وحالتها وزمن بدء حالتها وعدد شهاداتها وعدد سجلها
تكشف GetLOTLLocation وGetLOTLNextUpdate وGetRevision وGetLastError عن حالة اللقطة والتشخيص
التحقق من التواقيع
var
TrustSource: TPDFlibEUTSLTrustSource;
ChainReport: TPDFlibSignatureChainReport;
begin
TrustSource:= TPDFlibEUTSLTrustSource.Create;
try
TrustSource.AddLOTLSigningCertificateFromFile('EU-LOTL-Signer.cer');
if not TrustSource.LoadLOTLFromURL(LOTLURL) then
raise Exception.Create(String(TrustSource.GetLastError));
if TrustSource.RefreshAllTSLs<> TrustSource.GetPointerCount then
raise Exception.Create(String(TrustSource.GetLastError));
Verifier.SetTrustSource(TrustSource);
try
Result:= Verifier.VerifySignerCertificateChainEx(
0, 0, srmOnline, 0, ChainReport);
finally
Verifier.SetTrustSource(nil);
end;
finally
TrustSource.Free;
end;
end;
SetTrustSource
يخزن GetTrustAnchors(VerificationTime, Certificates) مرجعًا غير مالك، فعلى المصدر أن يبقى حيًا حتى يُفصَل أو يُتلف المتحقق
تُعد EvaluateCertificateChain(Certificates, VerificationTime, Report) وTPDFlibSignatureQualificationReport خطافي الاستدعاء اللذين يستدعيهما المتحقق على المصدر: الأول يرجع نقاط الثقة مرمّزة بـ DER للخدمات الموثوقة في الوقت المطلوب، والثاني يصنف سلسلة متحققًا منها إلى
يجمع المدقق مراسي المصدر مع أي مراسي مخصصة يدوية في محرك سلسلة حصري واحد ويخزن ذاك المحرك حسب مراجعة المصدر وتوقيت التحقق
عندما يسند مصدر ولا يزود هو ولا المجموعة اليدوية مرساة يفشل التحقق إغلاقًا بدل اللجوء إلى جذور نظام Windows
تقرير التأهيل
يعيد TPDFlibSignatureChainReport.QualificationReport تقرير TPDFlibSignatureQualificationReport بعد تقييم سلسلة صالحة
يحدد التقرير نطاق خدمة الاعتماد واسمها ونوعها وحالتها وتوقيت بدء حالتها والمؤهلات المطبقة وغرض الشهادة وحالة التأهيل وحالة جهاز إنشاء التوقيع المؤهل
تميز قيم الحالة بين غير مقيم وغير منطبق وغير مؤهل وشهادة مؤهلة وتوقيع إلكتروني مؤهل وختم إلكتروني مؤهل، مع صيغ QSCD منفصلة