我正在处理一些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的末尾)?
如果有人可以将我转到技术手册,那将会非常有帮助。
答案 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}