التحقق الدفعي من التوقيعات مع ذاكرات تخزين مؤقت مشتركة
تستطيع HotPDF التحقق من كل توقيع في مستند محمَّل بمرور واحد عبر ثلاث ذاكرات تخزين مؤقت مشتركة: ذاكرة تخزين مؤقت لمسار الشهادة (certificate-path) مفهرسة بمجموعة شهادات CMS وخيارات التحقق الفعلية، وذاكرة تخزين مؤقت للطابع الزمني مفهرسة بكتلة CMS و /ByteRange، ومخزن أدلة THPDFRevocationEvidenceCache مفهرس بالجهة المُصدِرة (issuer) والرقم التسلسلي
THotPDF.ValidateLoadedSignatureBatch
تسرد نقطة الدخول على مستوى المستند كل حقل توقيع، وتتحقق بايت-لبايت من كل /ByteRange مقابل المصدر، وتجمع أدلة DSS و /VRI، وتشغّل التحقق من مسار الشهادة عبر ذاكرات التخزين المؤقت المشتركة. وتقيّم WorkerLimit الأكبر من واحد المسارات على عمّال (workers) متوازيين
var
Options: THPDFSignatureBatchOptions;
Result: THPDFSignatureBatchResult;
begin
PDF.LoadFromFile('Signed.pdf');
Options:= THPDFSignatureBatchOptions.Default;
Options.CertificateOptions.TrustAnchors:= MyAnchors;
Result:= PDF.ValidateLoadedSignatureBatch(Options);
if Result.AllSignaturesValid then
WriteLn('All ', Result.SignatureCount, ' signatures valid');
end;
ذاكرات تخزين مؤقت مشتركة
تعيد التوقيعات التي تكرر نفس سلسلة الموقِّع (signer chain) استخدام حكم المسار السابق بدلًا من إعادة حسابه: تغطي مفاتيح ذاكرة تخزين المسار المؤقتة مجموعة شهادات CMS، ومراسي الثقة (trust anchors)، والوسطاء، وكل كتلة OCSP و CRL و delta-CRL بترتيب التقييم، ونمط الإبطال (revocation)، ووقت التحقق، وكتلة السياسة الكاملة. ويُوسَم الدليل المُحقَن من ذاكرة تخزين مؤقتة بمصدر الدليل vesCache
تخزّن ذاكرة تخزين الإبطال المؤقتة كل استجابة OCSP وكل CRL شوهدت أثناء دفعة (batch)، مفهرسة بـ DN الخاص بالجهة المُصدِرة، والرقم التسلسلي، ونافذة الصلاحية، بحيث تحلّ التوقيعات والدفعات اللاحقة التي تشترك في نفس مثيل THPDFRevocationEvidenceCache الإبطال دون إعادة توفير الدليل
تحفظ ذاكرة تخزين الطابع الزمني المؤقتة (memoize) أحكام التحقق بايت-لبايت للطوابع الزمنية على مستوى مستند CMS كامل (ETSI.RFC3161) ورموز الطابع الزمني للتوقيع المضمَّن. وعند إصابة (hit) ذاكرة التخزين المؤقت لرمز مضمَّن، تُضبَط THPDFCMSVerifyOptions.SkipSignatureTimestampVerification، متخطيةً إعادة التحقق من الرمز بينما لا يزال توقيع CMS الأساسي يُفحَص بالكامل
ذاكرات التخزين المؤقت المشتركة
تقبل THPDFSignatureValidationBatch مهامًا يحمل Info الخاص بها بالفعل حكم التحقق بايت-لبايت، للمستدعين الذين يملكون stream المصدر أو يتحققون خارج المكوّن. وتوقف FailFast الإرسال (dispatching) بعد أول حكم سلبي، ويترك THPDFCancellationToken المُدخلات المتبقية بحالة sbsCancelled
Batch:= THPDFSignatureValidationBatch.Create(Options);
try
Batch.AddJob(Job);
Result:= Batch.Run;
finally
Batch.Free;
end;
ذاكرات تخزين مؤقت مشتركة
يُبلغ كل مُدخل عن حالة التوقيع والشهادة، وذاكرة التخزين المؤقت التي أعاد استخدامها، وتشخيصات لكل توقيع؛ وتعرض HPDFSignatureBatchResultToJSON الدفعة (batch) بأكملها مع إحصاءات ذاكرة التخزين المؤقت بصيغة JSON قابلة للقراءة آليًا