ApplyPAdESLongTermValidation
数字签名
描述
一次调用即可将已签名 PDF 提升为 PAdES-B-LT,并将结果写入文件
语法
Delphi
Function TPDFlib.ApplyPAdESLongTermValidation(Const InputFile, Password, OutputFile, FieldName: WideString; Options: Integer): Integer;参数
| InputFile | 已签名的 PDF |
|---|---|
| Password | 打开它的密码,或空字符串 |
| OutputFile | 要写入的增强 PDF |
| FieldName | 要处理的签名字段;空字符串会将每个签名处理为一个修订版本 |
| Options | PADES_LTV_* 位掩码;0 选择 PADES_LTV_DEFAULT |
选项
PADES_LTV_WRITE_VRI (1) | 为每个签名写入一个 VRI 条目 |
|---|---|
PADES_LTV_FETCH_OCSP (2) | 查询每个链接的 OCSP 响应程序 |
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 | 提升成功 |
|---|---|
| 2 | 无法读取输入文件 |
| 3 | 无法解析输入 PDF |
| 10 | 无法写入输出 |
| 11 | 无法写入文档安全存储 |
| 20 | 不存在此签名字段 |
| 21 | 没有已处理的签名携带可读证书 |
GetPAdESLTVError 包含非 1 值的原因
备注
签名者证书路径从签名自身 CMS 构建,设置 PADES_LTV_FOLLOW_AIA 后,会通过证书指定的 caIssuers 地址跟随其余颁发者。为每个链接收集撤销信息——先 OCSP,后 CRL——并与证书一起通过一次增量更新写入文档安全存储
与已暂存内容实质相同的材料只写入一次,并由每个需要它的签名引用,因此路径或签名间共享的证书颁发机构不会出现两次。仅当 VRI 条目有要指向的证书时才会写入,因此绝不会生成空条目
无法访问的响应者不会导致调用失败:提升操作会使用已收集的内容继续执行,而 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