Walidacja podpisów wsadowo ze wspólnymi pamięciami podręcznymi
HotPDF może zweryfikować każdy podpis załadowanego dokumentu w jednym przebiegu przez trzy wspólne pamięci podręczne: pamięć ścieżki certyfikatu opartą na zbiorze certyfikatów CMS i efektywnych opcjach walidacji, pamięć znacznika czasu opartą na obiekcie CMS i /ByteRange oraz magazyn dowodów THPDFRevocationEvidenceCache oparty na wystawcy i numerze seryjnym
THotPDF.ValidateLoadedSignatureBatch
Punkt wejścia na poziomie dokumentu wylicza każde pole podpisu, weryfikuje bajtowo każdy /ByteRange względem źródła, zbiera dowody DSS i /VRI oraz uruchamia walidację ścieżki certyfikatu ze wspólnymi pamięciami podręcznymi. WorkerLimit większe niż jeden ocenia ścieżki na równoległych pracownikach
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;
Wspólne pamięci podręczne
Podpisy powtarzające ten sam łańcuch sygnatariusza ponownie używają poprzedniego werdyktu ścieżki zamiast go przeliczać: klucze pamięci ścieżki obejmują zbiór certyfikatów CMS, kotwice zaufania, certyfikaty pośrednie, każdy obiekt OCSP, CRL i delta-CRL w kolejności oceny, tryb odwołania, czas walidacji oraz kompletny blok zasad. Dowody wstrzyknięte z pamięci podręcznej są oznaczone źródłem dowodów vesCache
Pamięć odwołań przechowuje każdą odpowiedź OCSP i każdy CRL napotkane podczas wsadu, oparte na wyróżniku wystawcy, numerze seryjnym i oknie ważności, więc późniejsze podpisy i późniejsze wsady współdzielące tę samą instancję THPDFRevocationEvidenceCache rozwiązują odwołania bez ponownego dostarczania dowodów
Pamięć znacznika czasu zapamiętuje werdykty weryfikacji bajtowej dla znaczników czasu całego dokumentu CMS (ETSI.RFC3161) oraz osadzonych tokenów znacznika czasu podpisu. Trafienie w pamięci dla osadzonego tokenu ustawia THPDFCMSVerifyOptions.SkipSignatureTimestampVerification, pomijając ponowną weryfikację tokenu, podczas gdy podstawowy podpis CMS jest nadal w pełni sprawdzany
Samodzielny silnik wsadowy
THPDFSignatureValidationBatch przyjmuje zadania, których Info już niesie werdykt weryfikacji bajtowej, dla wywołujących, którzy są właścicielami strumienia źródłowego lub weryfikują poza komponentem. FailFast zatrzymuje rozsyłanie po pierwszym negatywnym werdykcie, a THPDFCancellationToken pozostawia pozostałe wpisy w stanie sbsCancelled
Batch:= THPDFSignatureValidationBatch.Create(Options);
try
Batch.AddJob(Job);
Result:= Batch.Run;
finally
Batch.Free;
end;
Ustrukturyzowane wyniki
Każdy wpis zgłasza stan podpisu i certyfikatu, pamięć podręczną, której ponownie użyto, oraz diagnostykę dla pojedynczego podpisu; HPDFSignatureBatchResultToJSON renderuje cały wsad ze statystykami pamięci podręcznej jako czytelny maszynowo JSON