Batch-signaturvalidering med delade cachear

HotPDF kan validera varje signatur i ett inläst dokument i ett svep genom tre delade cachear: en certifikatsökvägscache nycklad av CMS-certifikatsuppsättningen och de effektiva valideringsalternativen, en tidsstämpelcache nycklad av CMS-blobben och /ByteRange samt THPDFRevocationEvidenceCache-bevisarkivet nycklat av utfärdare och serienummer

THotPDF.ValidateLoadedSignatureBatch

Startpunkten på dokumentnivå räknar upp varje signaturfält, verifierar varje /ByteRange byte för byte mot källan, samlar DSS- och /VRI-bevis samt kör certifikatsökvägsvalidering med de delade cachearna. WorkerLimit som är större än ett utvärderar sökvägar på parallella arbetare

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;

Delade cachear

Signaturer som upprepar samma signerarkedja återanvänder det tidigare sökvägsbeslutet i stället för att beräkna om det: sökvägscache-nicklarna täcker CMS-certifikatsuppsättningen, förtroendeankaren, mellanliggande, varje OCSP-, CRL- och delta-CRL-blobb i utvärderingsordning, återkallelseläge, valideringstid och det fullständiga policyblocket. Bevis som injiceras från en cache taggas med vesCache-beviskällan

Återkallelsecachen lagrar varje OCSP-svar och CRL som setts under en batch, nycklad av utfärdar-DN, serienummer och giltighetsfönster, så att senare signaturer och senare batchar som delar samma THPDFRevocationEvidenceCache-instans löser upp återkallelse utan att återleverera bevis

Tidsstämpelcachen memoierar byte-verifieringsbeslut för hela-CMS-dokumenttidsstämplar (ETSI.RFC3161) och inbäddade signaturtidsstämpel-token. En cacheträff på en inbäddad token sätter THPDFCMSVerifyOptions.SkipSignatureTimestampVerification, vilket hoppar över token-återverifieringen medan den primära CMS-signaturen fortfarande kontrolleras fullständigt

Fristående batch-motor

THPDFSignatureValidationBatch accepterar jobb vars Info redan bär byte-verifieringsbeslutet, för anropare som äger källströmmen eller verifierar utanför komponenten. FailFast slutar sända ut efter det första negativa beslutet, och en THPDFCancellationToken lämnar återstående poster som sbsCancelled

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

Strukturerade resultat

Varje post rapporterar signatur- och certifikatstatusen, den cache den återanvände samt per-signaturdiagnostik; HPDFSignatureBatchResultToJSON renderar hela batchen med cachstatistik som maskinläsbar JSON