h2o*_*dev 3 pdf structure signature
我正在处理一些 PDF 文件,但没有找到对此处发布的问题的明确解释。在经过数字签名的 PDF 文件上,我们有以下临时签名:
<< /Type /Sig /Filter /Adobe.PPKLite /SubFilter /adbe.pkcs7.detached/ByteRange[O1 L1 O2 L2] /Contents<0000....0000>
Run Code Online (Sandbox Code Playgroud)
O1 = 偏移 1(零)
L1 = 长度1(签名前的内容长度)
O2 = 偏移量 2(L1 + 签名长度)
L2 = 长度2(签名后的内容长度)
我有这些问题:
1 - 要“散列”的内容应包含“<”和“>”(在签名占位符 0000....0000 的开头和结尾)?
2 - 签名长度是11742?这包括“<”和“>”吗?
3 - 在ByteRange上,第二个参数是从文件开头到“<”(签名占位符 0000....0000 之前)的长度还是包括它?与上一个问题相同,ByteRange上的最后一个参数是否包含“>”字符(在签名占位符 0000....0000 的末尾)?
如果有人可以将我重定向到有关此的技术手册,这将非常有帮助。
在阅读了技术手册并尝试了 PDF 后,我现在有了答案。
1 - 要“散列”的内容应包含“<”和“>”(在签名占位符 0000....0000 的开头和结尾)?
不可以,“<”和“>”不应成为要“散列/签名”的数据的一部分。签名过程之后,应使用“<”和“>”作为十六进制签名的分隔符。示例:/Contents<3255....0000>
2 - 签名长度是11742?这包括“<”和“>”吗?
不必要。只要“签名占位符”的长度比签名和时间戳数据长。
3 - 在 ByteRange 上,第二个参数是从文件开头到“<”(签名占位符 0000....0000 之前)的长度还是包括它?与上一个问题相同,ByteRange 上的最后一个参数是否包含“>”字符(在签名占位符 0000....0000 的末尾)?
第二个参数是“<”的偏移量(在签名占位符之前),或者使用相同的逻辑,从文件开头到“<”的内容长度(不包括它)
最后一个参数不包含“>”来计算剩余数据的长度。
mkl 评论后的补充说明(/sf/users/121048581/)
O2 = 偏移量 2(L1 + 签名长度)
O2 = 偏移量 2 = L1 + 签名长度 + 2。这是因为占位符包括“<”和“">”
例子:
{100-BYTES-DATA-BEFORE}<0000....0000>{50-BYTES-DATA-AFTER}
Run Code Online (Sandbox Code Playgroud)
要散列/签名/加时间戳的数据
{100-BYTES-DATA-BEFORE} + {50-BYTES-DATA-AFTER}
Run Code Online (Sandbox Code Playgroud)
签名占位符 = 11742 字节(11742 个零)
ByteRange[O 100 11844 50]
Run Code Online (Sandbox Code Playgroud)
数据签名和/或时间戳之后:
{100-BYTES-DATA-BEFORE} + < + 4321....0000 + > + {50-BYTES-DATA-AFTER}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3245 次 |
| 最近记录: |