PDF电子签名ByteRange

问题描述 投票:0回答:2

我正在处理一些 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 - 要“散列”的内容应包含“<" and ">”(在签名占位符 0000....0000 的开头和结尾)?

2 - 签名长度是11742?这包括“<" and ">”吗?

3 - 在 ByteRange 上,第二个参数是从文件开头到“<" (before signature placeholder 0000....0000) or including it? Same as on previous question, the last parameter on ByteRange 确实包含 ">” 字符(在签名占位符 0000....0000 末尾)的长度?

如果有人可以将我重定向到有关此的技术手册,那将非常有帮助。

pdf structure signature
2个回答
6
投票

阅读技术手册并尝试 PDF 后,我现在有了答案。

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

不,“<" and ">”并且不应该是要“散列/签名”的数据的一部分。签名过程之后,应使用“<" and ">”作为十六进制签名的分隔符。示例:/内容<3255....0000>

2 - 签名长度是11742?这包括“<" and ">”吗?

没有必要。只要“签名占位符”的长度比 signedtimestamped 数据长。

3 - 在 ByteRange 上,第二个参数是从文件开头到“<" (before signature placeholder 0000....0000) or including it? Same as on previous question, the last parameter on ByteRange does includes the ">”字符的长度(在签名占位符 0000....0000 的末尾)?

第二个参数是“<" (before signature placeholder) or, using the same logic, the content length from the beginning of file up to "<" (Without including it)

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

mkl 评论后的补充说明(https://stackoverflow.com/users/1729265/mkl

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

O2 = 偏移量 2 = L1 + 签名长度 + 2。这是因为占位符包含“<" and ">”

示例:

{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


0
投票

这是 Adobe 提供的有关 PDF 中数字签名的精彩文档: https://www.adobe.com/devnet-docs/acrobatetk/tools/DigSig/Acrobat_DigitalSignatures_in_PDF.pdf

有很多图表、表格和其他有用的数字。

© www.soinside.com 2019 - 2024. All rights reserved.