You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算SignerInfo中的message-digest以生成支持LTV的PDF?

PDF LTV签名signedAttributes字段相关问题解答

message-digest值的计算规则

signedAttributes中的message-digest取值为:签名时指定的PDF ByteRange 覆盖的全部字节拼接后,使用签名算法对应哈希函数计算得到的原始摘要值,无需额外编码或处理。

签名计算的正确逻辑

不需要将message-digest与PDF内容一同做哈希,正确的私钥签名流程如下:

  • 第一步:计算PDF ByteRange 对应字节的哈希值,填入signedAttributes的message-digest属性
  • 第二步:构造完整的signedAttributes结构,必须包含以下必填属性,且整体采用标准DER编码:
    • content-type:OID固定为1.2.840.113549.1.7.1(对应id-data)
    • message-digest:第一步计算得到的PDF字节哈希值
    • 你已构造完成的adbe-revocationInfoArchival对象(存放CRL/OCSP验证信息)
  • 第三步:对整个DER编码后的signedAttributes结构计算哈希,再使用签名者私钥对该哈希值做签名,签名结果存入signerInfo的signature字段即可

常见错误排查

你当前遇到的签名有效但LTV未启用、签名值校验失败问题,通常由两类错误导致:

  • signedAttributes的ASN.1编码不符合规范:RFC3852要求signedAttributes的SET OF结构必须使用隐式标签0xA0(不能用默认SET标签0x31),且所有属性需按ASN.1 DER规则排序(按属性OID的字节序升序排列)
  • 签名对象错误:未对signedAttributes结构做哈希签名,而是直接对PDF原始内容的哈希做了签名,导致Acrobat校验signedAttributes完整性失败,无法认可其中的吊销信息

内容的提问来源于stack exchange,提问作者F.C.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:45:05