THotPDF.SaveIncrementalUpdateAuthenticated メソッド
署名付きリビジョンポリシーを認証し、禁止された変更を拒否した上で、増分アップデートをアトミックに公開します
宣言
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、未知の transform に対する判断を強制します
- 受理された候補を write-through のアトミック置換で公開します
拒否された場合、候補は削除され、既存のターゲットはバイトレベルで一切変更されません
オプション
| メンバー | 目的 |
|---|---|
Authentication | ipaCryptographic は有効な CMS バイト範囲署名を要求し、ipaTrustedCertificate はさらに、証明書パスと失効検証による cvsTrusted を要求します |
RequireSignaturePolicy | True(デフォルト)の場合、認証済み transform ポリシーを持たないドキュメントを拒否します |
CertificateValidation | trusted-certificate モードが使うトラストアンカー、中間証明書、オフライン失効エビデンス、検証時刻、目的、アルゴリズムポリシー |
結果の詳細
THPDFAuthenticatedIncrementalUpdateInfo は、最終ステータス、失敗した署名インデックス、署名と証明書のステータス、署名総数、認証済みポリシー数、診断 issue を報告します
重要なステータスには、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 値に結び付けられるため、後続のリビジョンが自らの権威をすり替えたり置き換えたりできません
- trusted-certificate モードは、ドキュメントの完全性に加えて署名者の識別が重要な場合に適しています
- ポリシー強制を要求しない未署名ワークフローには、通常の
SaveIncrementalUpdateメソッドが引き続き使えます