Μαζική Επικύρωση Υπογραφών με Κοινόχρηστες 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