ApplyPAdESLongTermValidation

Цифровые подписи

Описание

Поднимает уже подписанный PDF до PAdES-B-LT одним вызовом, записывая результат в файл

Синтаксис

Delphi

Function TPDFlib.ApplyPAdESLongTermValidation(Const InputFile, Password, OutputFile, FieldName: WideString; Options: Integer): Integer;

Параметры

InputFileThe signed PDF.
PasswordПароль для открытия документа или пустая строка
OutputFileДописываемый дополненный PDF
FieldNameA signature field to process, or an empty string to process every signature into one revision.
OptionsA PADES_LTV_* bit mask; 0 selects PADES_LTV_DEFAULT.

Опции

PADES_LTV_WRITE_VRI (1)Записывает запись VRI для каждой подписи
PADES_LTV_FETCH_OCSP (2)Опрашивать OCSP-респондента каждой ссылки
PADES_LTV_FETCH_CRL (4)Если OCSP не ответил, обратиться к CRL
PADES_LTV_FOLLOW_AIA (8)Проходить по адресам издателей, чтобы достроить цепочку
PADES_LTV_SKIP_EXISTING (16)Do not re-add material whose bytes are already staged.
PADES_LTV_SKIP_ROOT_REVOCATION (32)Do not ask for a self-issued root's status.
PADES_LTV_DEFAULT (63)Всё перечисленное выше; выбирается при Options = 0

Возвращаемые значения

1The promotion succeeded.
2Входной файл не удалось прочитать
3Входной PDF не удалось разобрать
10Вывод записать не удалось
11Хранилище безопасности документа (DSS) добавить не удалось
20No such signature field.
21No processed signature carried a readable certificate.

Для любого значения, кроме 1, причину несёт GetPAdESLTVError

Примечания

The signer certificate path is built from the signature's own CMS, and the remaining issuers are followed through the caIssuers addresses the certificates name when PADES_LTV_FOLLOW_AIA is set. Revocation is gathered for each link - OCSP first, then a CRL - and, with the certificates, written into the document security store by a single incremental update.

Материал, идентичный уже подготовленному, пишется один раз и упоминается всеми подписями, которым он нужен, поэтому удостоверяющий центр, общий для пути или подписей, не появляется дважды. Запись VRI пишется только когда есть на что указать сертификатом, пустые записи не создаются

Недоступный респондент не приводит вызов к провалу: повышение идет с тем, что удалось собрать, а GetPAdESLTVCertificateCount, GetPAdESLTVCRLCount, GetPAdESLTVOCSPCount и GetPAdESLTVError сообщают, что получено и почему что-то пропущено

Пример

PDF.SetTimeStampOptions(2, 1, 1, 15000, '');
if PDF.ApplyPAdESLongTermValidation('signed.pdf', '', 'signed-lt.pdf', '', 0)<> 1 then
  ShowMessage(PDF.GetPAdESLTVError);

См. также

ApplyPAdESLongTermValidationToStream, GetSignatureCertificateChainLength, AddPAdESDSSOCSPFromCertificates