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