ApplyPAdESLongTermValidation
Цифровые подписи
Описание
Поднимает уже подписанный PDF до PAdES-B-LT одним вызовом, записывая результат в файл
Синтаксис
Delphi
Function TPDFlib.ApplyPAdESLongTermValidation(Const InputFile, Password, OutputFile, FieldName: WideString; Options: Integer): Integer;Параметры
| InputFile | The signed PDF. |
|---|---|
| Password | Пароль для открытия документа или пустая строка |
| OutputFile | Дописываемый дополненный PDF |
| FieldName | A signature field to process, or an empty string to process every signature into one revision. |
| Options | A 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 |
Возвращаемые значения
| 1 | The promotion succeeded. |
|---|---|
| 2 | Входной файл не удалось прочитать |
| 3 | Входной PDF не удалось разобрать |
| 10 | Вывод записать не удалось |
| 11 | Хранилище безопасности документа (DSS) добавить не удалось |
| 20 | No such signature field. |
| 21 | No 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