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要處理的簽章欄位;空字串表示把每個簽章處理成一個版次。
OptionsA PADES_LTV_* bit mask; 0 selects PADES_LTV_DEFAULT.

選項

PADES_LTV_WRITE_VRI (1)為每個簽章寫一筆 VRI 項目。
PADES_LTV_FETCH_OCSP (2)向每個連結的 OCSP responder 詢問。
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無法加入文件安全儲存區。
20No such signature field.
21處理過的簽章都沒有可讀取的憑證。

只要不是 1,原因都由 GetPAdESLTVError 攜帶

備註

簽署者憑證路徑由簽章自己的 CMS 建立;設定 PADES_LTV_FOLLOW_AIA 時,其餘簽發者沿憑證指名的 caIssuers 位址追蹤。撤銷材料對每個鏈結都會收集——先 OCSP、再 CRL——連同憑證一起以單一遞增更新寫進文件安全儲存區。

與已暫存內容相同的材料只寫一次,需要它的每個簽章都以參照方式取用,因此路徑之間或多個簽章共用的憑證機構不會重複出現。VRI 項目只有在有憑證可指時才會寫出,絕不會產生空項目

連不上的 responder 不會讓呼叫失敗:升級會帶著已取得的材料繼續進行,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