Пакетна перевірка підписів зі спільними кешами
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