SetPAdESSignatureTimeStampToken

安全和签名

说明

验证 DER 编码的 RFC 3161 TimeStampToken,并将其作为无符号 id-aa-signatureTimeStampToken 属性注入选定 CMS SignerInfo

该方法验证令牌签名,要求唯一的关键扩展密钥用途为 timeStamping,在存在时检查编码的 TSA 名称,并将令牌消息摘要与签名者 signatureValue 的已配置摘要进行比较

将替换所选签名者上现有的签名时间戳属性,保留无关的未签名属性,并对重建的属性集进行 DER 排序

语法

Delphi

Function TPDFlib.SetPAdESSignatureTimeStampToken(STSProcessID: Integer;
  Const TimeStampTokenDER: AnsiString; SignerIndex: Integer= 0): Integer;

参数

STSProcessID由某个 NewPAdESSignatureTimeStampProcessFrom* 函数返回的值
TimeStampTokenDERTSA 返回的完整 DER 编码 RFC 3161 TimeStampToken
SignerIndex从零开始的 CMS 签名者索引,默认第一个签名者

返回值

0过程标识符无效
1令牌已验证并注入
11令牌、CMS、所选签名者、TSA 约束或消息摘要无效
Other无法按 GetPAdESSignatureTimeStampProcessResult 所述准备源 PDF 或所选签名

Workflow

  1. 在创建原始签名之前,使用 SetSignProcessReserveContentsBytes 预留足够的签名内容空间
  2. 创建时间戳流程,并选择签名字段和摘要算法
  3. 调用 GetPAdESSignatureValueHashHex,并将该消息摘要发送到 TSA
  4. 将返回的 TimeStampToken 传递给此方法
  5. 使用 EndPAdESSignatureTimeStampProcessTo* 方法完成操作

库会验证并重写 CMS,但不会执行 TSA HTTP 请求

另请参阅

GetPAdESSignatureValueHashHex, SetPAdESSignatureTimeStampDigestAlgorithm, SetSignProcessReserveContentsBytes, TPDFlibSignatureVerifier