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* 函数返回的值 |
|---|---|
| TimeStampTokenDER | TSA 返回的完整 DER 编码 RFC 3161 TimeStampToken |
| SignerIndex | 从零开始的 CMS 签名者索引,默认第一个签名者 |
返回值
| 0 | 过程标识符无效 |
|---|---|
| 1 | 令牌已验证并注入 |
| 11 | 令牌、CMS、所选签名者、TSA 约束或消息摘要无效 |
| Other | 无法按 GetPAdESSignatureTimeStampProcessResult 所述准备源 PDF 或所选签名 |
Workflow
- 在创建原始签名之前,使用
SetSignProcessReserveContentsBytes预留足够的签名内容空间 - 创建时间戳流程,并选择签名字段和摘要算法
- 调用
GetPAdESSignatureValueHashHex,并将该消息摘要发送到 TSA - 将返回的 TimeStampToken 传递给此方法
- 使用
EndPAdESSignatureTimeStampProcessTo*方法完成操作
库会验证并重写 CMS,但不会执行 TSA HTTP 请求
另请参阅
GetPAdESSignatureValueHashHex, SetPAdESSignatureTimeStampDigestAlgorithm, SetSignProcessReserveContentsBytes, TPDFlibSignatureVerifier