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 | A 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 時選用。 |
傳回值
| 1 | The promotion succeeded. |
|---|---|
| 2 | 無法讀取輸入檔案。 |
| 3 | 無法解析輸入的 PDF。 |
| 10 | 無法寫出輸出。 |
| 11 | 無法加入文件安全儲存區。 |
| 20 | No 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