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 | Поле підпису для обробки чи порожній рядок, щоб обробити кожен підпис в одну ревізію |
| 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 |
Повернуті значення
| 1 | The 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