Batchvalidering af signaturer med delte caches

HotPDF kan validere alle signaturer i et indlæst dokument i én gennemgang med tre delte caches: en cache til certifikatstier, der er nøglet efter CMS-certifikatsættet og de effektive valideringsindstillinger, en tidsstempelcache nøglet efter CMS-blobben og /ByteRange, samt bevislageret THPDFRevocationEvidenceCache, der er nøglet efter udsteder og serienummer

THotPDF.ValidateLoadedSignatureBatch

Indgangspunktet på dokumentniveau opregner hvert signaturfelt, byteverificerer hvert /ByteRange mod kilden, indsamler DSS- og /VRI-beviser og udfører validering af certifikatsti med de delte caches. WorkerLimit større end én evaluerer stier på parallelle arbejdere

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;

Delte caches

Signaturer, der gentager den samme underskriverkæde, genbruger den tidligere stiafgørelse i stedet for at genberegne den. Sticachens nøgler omfatter CMS-certifikatsættet, tillidsankre, mellemcertifikater, alle OCSP-, CRL- og delta-CRL-blobs i evalueringsrækkefølge, tilbagekaldelsestilstand, valideringstid og den komplette politikblok. Bevis, der indsættes fra en cache, mærkes med beviskilden vesCache

Tilbagekaldelsescachen gemmer hvert OCSP-svar og hver CRL, der ses under en batch, nøglet efter udsteder-DN, serienummer og gyldighedsvindue, så senere signaturer og senere batches, der deler den samme THPDFRevocationEvidenceCache-instans, kan opløse tilbagekaldelse uden at få beviser leveret igen

Tidsstempelcachen memoiserer afgørelser om byteverifikation for dokumenttidsstempler med hele CMS (ETSI.RFC3161) og indlejrede signaturtidsstempeltokens. Et cachetræf på et indlejret token angiver THPDFCMSVerifyOptions.SkipSignatureTimestampVerification og springer tokenets genverifikation over, mens den primære CMS-signatur stadig kontrolleres fuldt ud

Selvstændig batchmotor

THPDFSignatureValidationBatch accepterer job, hvis Info allerede har resultatet af byteverifikationen, til kaldere der ejer kildestreamen eller verificerer uden for komponenten. FailFast stopper udsendelse efter den første negative afgørelse, og et THPDFCancellationToken efterlader resterende poster som sbsCancelled

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

Strukturerede resultater

Hver post rapporterer signatur- og certifikatstatus, den cache den genbrugte og diagnosticering pr. signatur. HPDFSignatureBatchResultToJSON gengiver hele batchen med cachestatistik som maskinlæsbar JSON