THotPDF.SaveIncrementalUpdateAuthenticated Method
驗證已簽署的修訂政策、拒絕被禁止的變更,並以原子方式發布增量更新
宣告
function SaveIncrementalUpdateAuthenticated(
const TargetFile: TFileName;
const Options: THPDFAuthenticatedIncrementalUpdateOptions;
out Info: THPDFAuthenticatedIncrementalUpdateInfo
): Boolean; overload;
function SaveIncrementalUpdateAuthenticated(
const TargetFile: TFileName;
out Info: THPDFAuthenticatedIncrementalUpdateInfo
): Boolean; overload;
處理流程
- 把待寫入的增量修訂寫到目標目錄中唯一的候選檔
- 從由簽章位元組範圍保護的確切修訂載入每項政策
- 驗證每個帶政策的 CMS 簽章,並可選擇性驗證其憑證路徑
- 為每個後續修訂分類,並執行 DocMDP、FieldMDP、UR 或 UR3、Identity 與未知轉換的判定
- 以直寫式原子替換發布通過驗證的候選檔
遭拒絕時會刪除候選檔,既有目標檔則逐位元組保持不變
選項
| 成員 | 用途 |
|---|---|
Authentication | ipaCryptographic 需要有效的 CMS 位元組範圍簽章,而 ipaTrustedCertificate 還需要憑證路徑與撤銷驗證得出 cvsTrusted |
RequireSignaturePolicy | 設為 True(預設值)時,拒絕沒有已驗證轉換政策的檔案 |
CertificateValidation | 信任憑證模式所使用的信任錨、中繼憑證、離線撤銷證據、驗證時間、用途與演算法政策 |
結果細節
THPDFAuthenticatedIncrementalUpdateInfo 會回報最終狀態、失敗簽章索引、簽章與憑證狀態、簽章總數、已驗證政策數量,以及一則診斷問題
重要的狀態包括 aiusAccepted、aiusNoSignaturePolicy、aiusSignatureInvalid、aiusCertificateUntrusted、aiusPolicyMalformed、aiusPolicyViolation 與 aiusCommitFailed
範例
var
Info: THPDFAuthenticatedIncrementalUpdateInfo;
begin
PDF.BeginIncrementalUpdate('certified.pdf');
PDF.SetLoadedFormFieldValueByName('CustomerName', 'Ada');
if not PDF.SaveIncrementalUpdateAuthenticated('updated.pdf', Info) then
raise Exception.Create(String(Info.Issue));
end;
安全須知
- 結構上存在的政策,在其簽章成功通過驗證之前絕不會生效
- 政策字典從已簽署的快照讀取,並綁定到原始簽章物件、位元組範圍與 CMS 值,防止後續修訂重新導向或取代其自身的授權來源
- 除了檔案完整性之外還在意簽署者身分時,適合採用信任憑證模式
- 一般
SaveIncrementalUpdate方法仍然可用於未要求政策強制執行的未簽署工作流程