Validacija potpisa u seriji s dijeljenim predmemorijama

HotPDF može validirati svaki potpis učitanog dokumenta u jednom prolazu kroz tri dijeljene predmemorije: predmemoriju putanje certifikata ključanu skupom CMS certifikata i učinkovitim opcijama validacije, predmemoriju vremenskih oznaka ključanu CMS blobom i /ByteRange te pohranu dokaza THPDFRevocationEvidenceCache ključanu izdavateljem i serijskim brojem

THotPDF.ValidateLoadedSignatureBatch

Ulazna točka na razini dokumenta enumerira svako polje potpisa, bajtno provjerava svaki /ByteRange prema izvoru, prikuplja DSS i /VRI dokaze te pokreće validaciju putanje certifikata s dijeljenim predmemorijama. WorkerLimit veći od jedan procjenjuje putanje na paralelnim radnicima

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;

Dijeljene predmemorije

Potpisi koji ponavljaju isti lanac potpisnika ponovno koriste prethodnu presudu putanje umjesto ponovnog izračuna: ključevi predmemorije putanje pokrivaju skup CMS certifikata, sidra povjerenja, međuprodukte, svaki OCSP, CRL i delta-CRL blob u redoslijedu evaluacije, način opoziva, vrijeme validacije i cijeli blok pravila. Dokazi uneseni iz predmemorije označeni su izvorom dokaza vesCache

Predmemorija opoziva pohranjuje svaki OCSP odgovor i CRL viđen tijekom serije, ključan DN-om izdavatelja, serijskim brojem i prozorom valjanosti, tako da kasniji potpisi i kasnije serije koje dijele istu instancu THPDFRevocationEvidenceCache razrješuju opoziv bez ponovnog isporučivanja dokaza

Predmemorija vremenskih oznaka pamti presude bajtne verifikacije za vremenske oznake dokumenta cijelog CMS-a (ETSI.RFC3161) i tokena vremenskih oznaka ugrađenih u potpis. Pogodak predmemorije na ugrađeni token postavlja THPDFCMSVerifyOptions.SkipSignatureTimestampVerification, preskačući ponovnu verifikaciju tokena dok se primarni CMS potpis još uvijek u potpunosti provjerava

Samostalni serijski motor

THPDFSignatureValidationBatch prihvaća poslove čiji Info već nosi presudu bajtne verifikacije, za pozivatelje koji posjeduju izvorni tok ili provjeravaju izvan komponente. FailFast zaustavlja raspoređivanje nakon prve negativne presude, a THPDFCancellationToken ostavlja preostale unose kao sbsCancelled

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

Strukturirani rezultati

Svaki unos izvještava o statusu potpisa i certifikata, predmemoriji koju je ponovno koristio i dijagnostici po potpisu; HPDFSignatureBatchResultToJSON renderira cijelu seriju sa statistikom predmemorije kao strojno čitljiv JSON