Batch-handtekeningvalidatie met gedeelde caches

HotPDF kan elke handtekening van een geladen document in één doorgang valideren via drie gedeelde caches: een certificaatpad-cache gesleuteld op de CMS-certificaatverzameling en de effectieve validatie-opties, een tijdstempelcache gesleuteld op de CMS-blob en /ByteRange, en de THPDFRevocationEvidenceCache-bewijsopslag gesleuteld op uitgever en serial

THotPDF.ValidateLoadedSignatureBatch

Het documentniveau-ingangspunt telt elke handtekeningveld op, verifieert bytegewijs elke /ByteRange tegen de bron, verzamelt DSS- en /VRI-bewijs en voert certificaatpad-validatie uit met de gedeelde caches. WorkerLimit groter dan één evalueert paden op parallelle 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;

Gedeelde caches

Handtekeningen die dezelfde ondertekenaarketen herhalen hergebruiken het eerdere padverdict in plaats van het opnieuw te berekenen: de pad-cachesleutels dekken de CMS-certificaatverzameling, vertrouwensankers, intermediairen, elke OCSP-, CRL- en delta-CRL-blob in evaluatievolgorde, herroepingsmodus, validatietijd en het volledige beleidsblok. Bewijs dat uit een cache is geïnjecteerd wordt getagd met de vesCache-bewijsbron

De herroepingscache slaat elke OCSP-respons en CRL op die tijdens een batch werd gezien, gesleuteld op uitgever-DN, serialnummer en geldigheidsvenster, zodat latere handtekeningen en latere batches die dezelfde THPDFRevocationEvidenceCache-instantie delen herroeping oplossen zonder opnieuw bewijs aan te leveren

De tijdstempelcache memoïseert byteverificatie-verdicten voor hele-CMS-documenttijdstempels (ETSI.RFC3161) en ingebedde tijdstempeltokens voor handtekeningen. Een cachehit op een ingebed token stelt THPDFCMSVerifyOptions.SkipSignatureTimestampVerification in, waarmee de token-herverificatie wordt overgeslagen terwijl de primaire CMS-handtekening nog steeds volledig wordt gecontroleerd

Zelfstandige batch-engine

THPDFSignatureValidationBatch accepteert jobs waarvan Info al het byteverificatie-verdict draagt, voor aanroepers die de bronstroom bezitten of buiten het component verifiëren. FailFast stopt het verzenden na het eerste negatieve verdict, en een THPDFCancellationToken laat resterende vermeldingen sbsCancelled achter

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

Gestructureerde resultaten

Elke vermelding rapporteert de handtekening- en certificaatstatus, de hergebruikte cache en per-handtekening diagnostiek; HPDFSignatureBatchResultToJSON rendert de hele batch met cachestatistieken als machine-leesbare JSON