我正在尝试验证 pades 签名,但带有警告,例如在 adobe reader 中(有后续更改......)。我可以验证签名的完整性,但是如何检查签名后是否添加了注释?我可以列出 pdf 中的注释,例如:
/注释[8 0 R 27 0 R 41 0 R]
它显示:签名 (8 0 R)、注释 (27 0 R) 和另一个签名 (41 0 R)。
如果我理解正确,第一个数字(8、27、41)的序列表示它们在 pdf 中的放置顺序。或者也许我错了?如果是真的,如何获取注释值及其属性?
我正在尝试验证 pades 签名,但带有警告,例如在 adobe reader 中(有后续更改......)。我可以验证签名的完整性,但是如何检查签名后是否添加了注释?我可以列出 pdf 中的注释,例如:
/注释[8 0 R 27 0 R 41 0 R]
它显示:签名 (8 0 R)、注释 (27 0 R) 和另一个签名 (41 0 R)。
如果我理解正确,第一个数字(8、27、41)的序列表示它们在 pdf 中的放置顺序。或者也许我错了?如果是真的,如何获取注释值及其属性?
请查看我的 PDF 中关于数字签名的书。图 2.20 显示了一个 PDF 被多次签名后的样子:
以您的示例为例,修订版 1 很可能包含以下注释:
/Annots[8 0 R]
鉴于修订版 2 包含:
/Annots[8 0 R 27 0 R]
修订版 3 包含:
/Annots[8 0 R 27 0 R 41 0 R]
回答您的问题:它们在 PDF 中的放置顺序:可能并非总是如此(PDF 是一种相当特殊的格式),但您的猜测是一个安全的假设。
您想检测在哪个签名之前或之后添加了哪些注释。为此,您必须提取每个 PDF 的不同修订版本。
PDF 总是以 结尾,%%EOF
每个新签名都在之后添加数据%%EOF
。回到上一个版本意味着删除文件末尾的字节,直到你到达下一个%%EOF
.
如果您想使用 iText 执行此操作,您会在我的书中找到一些示例。