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
- 把待提交的增量修订写入目标目录中一个唯一的候选文件
- 从每个签名的字节范围所保护的那一版修订中加载所有策略
- 认证每个携带策略的 CMS 签名,并可选择验证其证书路径
- 对之后的每一版修订分类,并执行 DocMDP、FieldMDP、UR 或 UR3、Identity 以及未知 transform 的判定
- 通过 write-through 的原子替换发布被接受的候选文件
被拒绝时会删除候选文件,已有的目标文件字节保持不变
Options
| 成员 | 用途 |
|---|---|
Authentication | ipaCryptographic 要求有效的 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
- A structurally present policy never becomes authoritative until its signature authenticates successfully
- 策略字典从已签名的快照中读取,并与原始的签名对象、字节范围和 CMS 值绑定,防止之后的修订重定向或替换它自己的授权
- 除文档完整性之外,还要关心签名者身份时,适合使用受信证书模式
- 普通的
SaveIncrementalUpdate方法仍可用于不要求执行策略的未签名工作流