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;

Workflow

  1. 把待提交的增量修订写入目标目录中一个唯一的候选文件
  2. 从每个签名的字节范围所保护的那一版修订中加载所有策略
  3. 认证每个携带策略的 CMS 签名,并可选择验证其证书路径
  4. 对之后的每一版修订分类,并执行 DocMDP、FieldMDP、UR 或 UR3、Identity 以及未知 transform 的判定
  5. 通过 write-through 的原子替换发布被接受的候选文件

被拒绝时会删除候选文件,已有的目标文件字节保持不变

Options

成员用途
AuthenticationipaCryptographic 要求有效的 CMS 字节范围签名,而 ipaTrustedCertificate 还要求证书路径和吊销验证得出 cvsTrusted
RequireSignaturePolicy为 True(默认值)时,拒绝没有经过认证的 transform 策略的文档
CertificateValidation受信证书模式使用的信任锚、中间证书、离线吊销证据、验证时间、用途和算法策略

Result details

THPDFAuthenticatedIncrementalUpdateInfo 报告最终状态、失败的签名索引、签名和证书状态、签名总数、已认证的策略数,以及一条诊断问题

Important statuses include aiusAccepted, aiusNoSignaturePolicy, aiusSignatureInvalid, aiusCertificateUntrusted, aiusPolicyMalformed, aiusPolicyViolation,以及 aiusCommitFailed

Usage

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;

Security boundary

相关 API