PDF电子签名ByteRange

时间:2018-06-15 13:27:48

标签: pdf structure signature

我正在处理一些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 - 内容为&#34;哈希&#34;应包括&#34;&lt;&#34;和&#34;&gt;&#34; (在签名占位符0000 .... 0000的开头和结尾)?

2 - 签名的长度是11742?这包括&#34;&lt;&#34;和&#34;&gt;&#34;?

3 - 在 ByteRange 上,第二个参数是从文件开头到&#34;&lt;&#34; (签名占位符0000 .... 0000之前)还是包含它?与上一个问题相同, ByteRange 上的最后一个参数包括&#34;&gt;&#34;字符(在签名占位符0000 .... 0000的末尾)?

如果有人可以将我转到技术手册,那将会非常有帮助。

1 个答案:

答案 0 :(得分:2)

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

  

1 - 内容为&#34;哈希&#34;应包括&#34;&lt;&#34;和&#34;&gt;&#34; (在签名占位符0000 .... 0000的开头和结尾)?

不,&#34;&lt;&#34;和&#34;&gt;&#34;并且不应该成为&#34;哈希/签署&#34; 的数据的一部分。签署过程后#34;&lt;&#34;和&#34;&gt;&#34;应该用作十六进制签名的分隔符。示例:/ Contents&lt; 3255 .... 0000&gt;

  

2 - 签名的长度是11742?这包括&#34;&lt;&#34;和&#34;&gt;&#34;?

没必要。只要这个长度的签名占位符&#34;比签名带时间戳数据更长。

  

3 - 在ByteRange上,第二个参数是从文件开头到&#34;&lt;&#34; (签名占位符0000 .... 0000之前)还是包含它?与上一个问题相同,ByteRange上的最后一个参数包括&#34;&gt;&#34;字符(在签名占位符0000 .... 0000的末尾)?

第二个参数是&#34;&lt;&#34;的偏移量。 (在签名占位符之前)或者,使用相同的逻辑,从文件开头到&#34;&lt;&#34; (不包括它)

最后一个参数不包括&#34;&gt;&#34;计算剩余数据的长度。

mkl(https://stackoverflow.com/users/1729265/mkl

的评论后的补充说明
  

O2 =偏移2(L1 +签名长度)

O2 =偏移2 = L1 +签名长度+ 2.这是因为占位符包括&#34;&lt;&#34;和&#34;&gt;&#34;

实施例

{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