Μαζική Επικύρωση Υπογραφών με Κοινόχρηστες Caches

Το HotPDF μπορεί να επικυρώσει κάθε υπογραφή ενός φορτωμένου εγγράφου σε ένα πέρασμα μέσω τριών κοινόχρηστων caches: μιας cache διαδρομής πιστοποιητικού με κλειδί το σύνολο πιστοποιητικών CMS και τις ενεργές επιλογές επικύρωσης, μιας cache χρονοσφραγίδων με κλειδί το CMS blob και το /ByteRange, και του αποθηκευτικού χώρου στοιχείων THPDFRevocationEvidenceCache με κλειδί τον εκδότη και τον σειριακό αριθμό

THotPDF.ValidateLoadedSignatureBatch

Το σημείο εισόδου σε επίπεδο εγγράφου απαριθμεί κάθε πεδίο υπογραφής, επαληθεύει byte προς byte κάθε /ByteRange έναντι της πηγής, συλλέγει στοιχεία DSS και /VRI, και εκτελεί επικύρωση διαδρομής πιστοποιητικού με τις κοινόχρηστες caches. Με WorkerLimit μεγαλύτερο του ενός, οι διαδρομές αξιολογούνται σε παράλληλους 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;

THotPDF.ValidateLoadedSignatureBatch

Υπογραφές που επαναλαμβάνουν την ίδια αλυσίδα υπογράφοντος επαναχρησιμοποιούν την προηγούμενη ετυμηγορία διαδρομής αντί να την υπολογίζουν εκ νέου: τα κλειδιά της cache διαδρομής καλύπτουν το σύνολο πιστοποιητικών CMS, τις trust anchors, τα ενδιάμεσα, κάθε blob OCSP, CRL και delta-CRL με τη σειρά αξιολόγησης, τη λειτουργία ανάκλησης, τον χρόνο επικύρωσης και το πλήρες μπλοκ πολιτικής. Τα στοιχεία που εισάγονται από μια cache επισημαίνονται με την πηγή στοιχείων vesCache

Η cache ανάκλησης αποθηκεύει κάθε απόκριση OCSP και CRL που εντοπίζεται κατά τη διάρκεια μιας μαζικής επεξεργασίας, με κλειδί το issuer DN, τον σειριακό αριθμό και το παράθυρο ισχύος, ώστε μεταγενέστερες υπογραφές και μεταγενέστερες μαζικές επεξεργασίες που μοιράζονται το ίδιο instance THPDFRevocationEvidenceCache να επιλύουν την ανάκληση χωρίς να παρέχουν ξανά στοιχεία

Η cache χρονοσφραγίδων απομνημονεύει (memoize) τις ετυμηγορίες επαλήθευσης byte για χρονοσφραγίδες εγγράφου ολόκληρου CMS (ETSI.RFC3161) και για ενσωματωμένα tokens χρονοσφραγίδας υπογραφής. Ένα hit στην cache για ενσωματωμένο token ορίζει την THPDFCMSVerifyOptions.SkipSignatureTimestampVerification, παραλείποντας την επαναεπαλήθευση του token, ενώ η κύρια υπογραφή CMS εξακολουθεί να ελέγχεται πλήρως

THotPDF.ValidateLoadedSignatureBatch

Η THPDFSignatureValidationBatch δέχεται εργασίες των οποίων το Info ήδη περιέχει την ετυμηγορία επαλήθευσης byte, για callers που κατέχουν το stream-πηγή ή επαληθεύουν εκτός του component. Η FailFast σταματά την αποστολή μετά την πρώτη αρνητική ετυμηγορία, και ένα THPDFCancellationToken αφήνει τις υπόλοιπες καταχωρίσεις ως sbsCancelled

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

THotPDF.ValidateLoadedSignatureBatch

Κάθε καταχώριση αναφέρει την κατάσταση υπογραφής και πιστοποιητικού, την cache που επαναχρησιμοποίησε, και διαγνωστικά ανά υπογραφή· η HPDFSignatureBatchResultToJSON αποδίδει ολόκληρη τη μαζική επεξεργασία με στατιστικά cache ως μηχανικά αναγνώσιμο JSON