التحقق الدفعي من التوقيعات مع ذاكرات تخزين مؤقت مشتركة

تستطيع 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 قابلة للقراءة آليًا