ApplyPAdESLongTermValidation

数字签名

描述

一次调用即可将已签名 PDF 提升为 PAdES-B-LT,并将结果写入文件

语法

Delphi

Function TPDFlib.ApplyPAdESLongTermValidation(Const InputFile, Password, OutputFile, FieldName: WideString; Options: Integer): Integer;

参数

InputFile已签名的 PDF
Password打开它的密码,或空字符串
OutputFile要写入的增强 PDF
FieldName要处理的签名字段;空字符串会将每个签名处理为一个修订版本
OptionsPADES_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