Пакетна перевірка підписів зі спільними кешами

HotPDF може перевірити кожен підпис завантаженого документа за один прохід через три спільні кеші: кеш шляху сертифікатів із ключем за набором сертифікатів CMS і дійсними параметрами перевірки, кеш міток часу з ключем за blob CMS і /ByteRange, а також сховище доказів THPDFRevocationEvidenceCache із ключем за емітентом і серійним номером

THotPDF.ValidateLoadedSignatureBatch

Точка входу рівня документа перелічує кожне поле підпису, перевіряє кожен /ByteRange щодо джерела, збирає докази DSS і /VRI та виконує перевірку шляху сертифікатів зі спільними кешами. Значення WorkerLimit більше одиниці обчислює шляхи на паралельних робочих потоках

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;

Спільні кеші

Підписи, що повторюють той самий ланцюг підписувача, повторно використовують попередній висновок про шлях замість повторного обчислення: ключі кешу шляху охоплюють набір сертифікатів CMS, довірені корені, проміжні елементи, кожен blob OCSP, CRL і дельта-CRL у порядку обчислення, режим відкликання, час перевірки та весь блок політики. Докази, введені з кешу, позначаються джерелом доказів vesCache

Кеш відкликань зберігає кожну відповідь OCSP і CRL, що зустрічалися під час пакета, з ключем за DN емітента, серійним номером та вікном дійсності, тому пізніші підписи та пакети, що поділяють той самий екземпляр THPDFRevocationEvidenceCache, визначають відкликання без повторного надання доказів

Кеш міток часу запам'ятовує висновки про перевірку байтів для міток часу документа в усьому CMS (ETSI.RFC3161) і вбудованих токенів міток часу підписів. Влучання кешу для вбудованого токена встановлює THPDFCMSVerifyOptions.SkipSignatureTimestampVerification, пропускаючи повторну перевірку токена, тоді як основний підпис CMS все одно повністю перевіряється

Окремий пакетний двигун

THPDFSignatureValidationBatch приймає завдання, чий Info уже містить висновок про перевірку байтів, для коду, який володіє потоком джерела або перевіряє поза компонентом. FailFast зупиняє розсилання після першого негативного висновку, а THPDFCancellationToken залишає решту записів у стані sbsCancelled

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

Структуровані результати

Кожен запис повідомляє статус підпису та сертифіката, повторно використаний кеш і діагностику підписа; HPDFSignatureBatchResultToJSON відображає весь пакет зі статистикою кешів як машинночитаний JSON