ApplyPAdESLongTermValidation

Цифрові підписи

Опис

Піднімає вже підписаний PDF до PAdES-B-LT одним викликом, записуючи результат у файл

Синтаксис

Delphi

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

Параметри

InputFileThe signed PDF.
PasswordПароль для відкриття або порожній рядок
OutputFileДоповнений PDF, який треба записати
FieldNameПоле підпису для обробки чи порожній рядок, щоб обробити кожен підпис в одну ревізію
OptionsБітова маска PADES_LTV_*; 0 обирає 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)Не додавати повторно матеріал, чиї байти вже в черзі
PADES_LTV_SKIP_ROOT_REVOCATION (32)Не запитувати статус самовиданого кореня
PADES_LTV_DEFAULT (63)Усе перелічене вище; вибирається, коли Options = 0

Повернуті значення

1The promotion succeeded.
2Вхідний файл не вдалося прочитати
3Вхідний PDF не вдалося розібрати
10Вивід не вдалося записати
11Сховище стану безпеки документа не вдалося додати
20Такого поля підпису немає
21Жоден оброблений підпис не ніс читабельного сертифіката

Причину будь-якого значення, відмінного від 1, несе GetPAdESLTVError

Примітки

Шлях сертифіката підписанта будується з власного CMS підпису, а решта видавців проходиться через адреси caIssuers, які називають сертифікати, коли встановлено PADES_LTV_FOLLOW_AIA. Відкликання збирається для кожної ланки — спершу OCSP, потім CRL — і разом із сертифікатами записується в сховище безпеки документа одним інкрементним оновленням

Матеріал, тотожний уже підготовленому, пишеться один раз і посилається кожним підписом, якому він потрібен, тож центр сертифікації, спільний для шляху чи між підписами, не з'являється двічі. Запис 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