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