Validare în lot a semnăturilor cu cache-uri partajate
HotPDF poate valida fiecare semnătură a unui document încărcat într-o singură trecere prin trei cache-uri partajate: un cache de căi de certificate cheiat după setul de certificate CMS și opțiunile efective de validare, un cache de ștampile de timp cheiat după blob-ul CMS și /ByteRange și magazinul de probe THPDFRevocationEvidenceCache cheiat după emitent și serial
THotPDF.ValidateLoadedSignatureBatch
Punctul de intrare la nivel de document enumeră fiecare câmp de semnătură, verifică la nivel de octeți fiecare /ByteRange față de sursă, colectează probe DSS și /VRI și rulează validarea căilor de certificate cu cache-urile partajate. Un WorkerLimit mai mare de unu evaluează căile pe worker-i paraleli
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-uri partajate
Semnăturile care repetă același lanț de semnatari reutilizează verdictul anterior al căii în loc să îl recalculeze: cheile cache-ului de căi acoperă setul de certificate CMS, ancorele de încredere, intermediarii, fiecare blob OCSP, CRL și delta-CRL în ordinea evaluării, modul de revocare, timpul de validare și blocul complet de politici. Probele injectate dintr-un cache sunt etichetate cu sursa de probe vesCache
Cache-ul de revocare stochează fiecare răspuns OCSP și CRL văzut în timpul unui lot, cheiat după DN-ul emitentului, numărul de serie și fereastra de valabilitate, astfel încât semnăturile ulterioare și loturile ulterioare care partajează aceeași instanță THPDFRevocationEvidenceCache rezolvă revocarea fără a re-furniza probe
Cache-ul de ștampile de timp memorează verdictele de verificare la nivel de octeți pentru ștampilele de timp de document CMS întreg (ETSI.RFC3161) și token-urile de ștampilă de timp de semnătură încorporate. O lovitură de cache pe un token încorporat setează THPDFCMSVerifyOptions.SkipSignatureTimestampVerification, sărind re-verificarea token-ului, în timp ce semnătura CMS primară este încă verificată complet
Motor de lot autonom
THPDFSignatureValidationBatch acceptă job-uri al căror Info poartă deja verdictul de verificare la nivel de octeți, pentru apelanții care dețin fluxul sursă sau verifică în afara componentei. FailFast oprește expedierea după primul verdict negativ, iar un THPDFCancellationToken lasă intrările rămase sbsCancelled
Batch:= THPDFSignatureValidationBatch.Create(Options);
try
Batch.AddJob(Job);
Result:= Batch.Run;
finally
Batch.Free;
end;
Rezultate structurate
Fiecare intrare raportează starea semnăturii și a certificatului, cache-ul reutilizat și diagnosticarea per semnătură; HPDFSignatureBatchResultToJSON redă întregul lot cu statistici de cache ca JSON lizibil de mașină