Batch Signature Validation with Shared Caches

HotPDF có thể xác thực mọi chữ ký của một tài liệu đã nạp trong một lần duyệt qua ba cache dùng chung: một cache đường dẫn chứng chỉ khóa theo tập chứng chỉ CMS và các tùy chọn xác thực hiệu lực, một cache dấu thời gian khóa theo blob CMS và /ByteRange, và kho bằng chứng THPDFRevocationEvidenceCache khóa theo nhà phát hành và số sê-ri

THotPDF.ValidateLoadedSignatureBatch

Điểm vào cấp tài liệu liệt kê mọi field chữ ký, xác minh byte từng /ByteRange so với nguồn, thu thập bằng chứng DSS và /VRI, và chạy xác thực đường dẫn chứng chỉ với các cache dùng chung. WorkerLimit lớn hơn một đánh giá các đường dẫn trên worker song song

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;

Cache dùng chung

Chữ ký lặp lại cùng chuỗi người ký tái sử dụng phán quyết đường dẫn trước đó thay vì tính lại: các khóa cache đường dẫn bao phủ tập chứng chỉ CMS, trust anchor, trung gian, mọi blob OCSP, CRL, và delta-CRL theo thứ tự đánh giá, chế độ thu hồi, thời gian xác thực, và toàn bộ khối chính sách. Bằng chứng được chèn từ cache được gắn thẻ nguồn bằng chứng vesCache

Cache thu hồi lưu mọi phản hồi OCSP và CRL thấy trong một batch, khóa theo DN nhà phát hành, số sê-ri, và cửa sổ hiệu lực, nên các chữ ký sau và các batch sau dùng chung cùng thể hiện THPDFRevocationEvidenceCache giải quyết thu hồi mà không cần cung cấp lại bằng chứng

Cache dấu thời gian ghi nhớ các phán quyết xác minh byte cho dấu thời gian tài liệu toàn CMS (ETSI.RFC3161) và token dấu thời gian chữ ký nhúng. Một lần trúng cache trên token nhúng đặt THPDFCMSVerifyOptions.SkipSignatureTimestampVerification, bỏ qua việc xác minh lại token trong khi chữ ký CMS chính vẫn được kiểm tra đầy đủ

Engine batch độc lập

THPDFSignatureValidationBatch chấp nhận các job có Info đã mang phán quyết xác minh byte, cho những caller sở hữu stream nguồn hoặc xác minh bên ngoài thành phần. FailFast dừng điều phối sau phán quyết âm đầu tiên, và một THPDFCancellationToken để các mục còn lại ở trạng thái sbsCancelled

Batch:= THPDFSignatureValidationBatch.Create(Options);
try
  Batch.AddJob(Job);
  Result:= Batch.Run;
finally
  Batch.Free;
end;

Kết quả có cấu trúc

Mỗi mục báo cáo trạng thái chữ ký và chứng chỉ, cache nó đã tái sử dụng, và chẩn đoán theo từng chữ ký; HPDFSignatureBatchResultToJSON kết xuất toàn bộ batch với thống kê cache dưới dạng JSON máy đọc được