代码之家  ›  专栏  ›  技术社区  ›  h2odev

PDF电子签名

  •  2
  • h2odev  · 技术社区  · 6 年前

    我正在处理一些PDF文件,但我找不到一个清晰的解释。在数字签名的PDF文件中,我们有以下临时签名:

    << /Type /Sig /Filter /Adobe.PPKLite /SubFilter /adbe.pkcs7.detached/ByteRange[O1 L1 O2 L2]                  /Contents<0000....0000>
    

    O1=偏移量1(零)

    l1=长度1(签名前的内容长度)

    o2=偏移量2(l1+签名长度)

    l2=长度2(签名后的内容长度)

    我有以下问题:

    1-要“散列”的内容应包括“<”和“>”(在签名占位符0000….0000的开头和结尾处)?

    签名的长度是11742?这包括“<”和“>”吗?

    3-在 字节 第二个参数是从文件开始到“<”(在签名占位符0000….0000之前)或包括它的长度?与上一个问题相同,上一个参数 字节 是否包括“>”字符(在签名占位符0000….0000的末尾)?

    如果有人能把我的注意力转移到一本技术手册上,那将是非常有帮助的。

    1 回复  |  直到 6 年前
        1
  •  2
  •   h2odev    6 年前

    在阅读了技术手册并试用了PDF之后,现在我得到了答案。

    1-要“散列”的内容应包括“<”和“>”(在签名占位符0000….0000的开头和结尾处)?

    不, “<”和“>”,不应是要“哈希/签名”的数据的一部分 .在签名过程之后,“<”和“>”应用作十六进制签名的分隔符。示例:/contents<3255….0000>

    签名的长度是11742?这包括“<”和“>”吗?

    不需要。只要“签名占位符”的长度较长,则 签署 时间戳 数据。

    3-在byterage上,第二个参数是从文件开头到“<”(签名占位符0000….0000之前)或包括它的长度?与上一个问题相同,Byterage上的最后一个参数包含“>”字符(在签名占位符0000…0000的末尾)?

    第二个参数是“<(签名占位符之前)的偏移量,或者使用相同的逻辑,从文件开头到“<(不包括它)的内容长度。

    最后一个参数不包括“>”以计算剩余数据的长度。

    MKL评论后的附加澄清( https://stackoverflow.com/users/1729265/mkl )

    o2=偏移量2(l1+签名长度)

    o2=偏移量2=l1+签名长度+2。这是因为占位符包含“<”和“>”

    例子:

    {100-BYTES-DATA-BEFORE}<0000....0000>{50-BYTES-DATA-AFTER}
    

    要散列/签名/时间戳的数据

    {100-BYTES-DATA-BEFORE} + {50-BYTES-DATA-AFTER}
    

    签名占位符=11742字节(11742个零)

    ByteRange[O 100 11844 50]
    

    在数据签名和/或时间戳之后:

    {100-BYTES-DATA-BEFORE} + < + 4321....0000 + > + {50-BYTES-DATA-AFTER}
    

    PDF32000