Acrobat 中的签名字节范围无效
The signature byte range is invalid in Acrobat
我正在尝试使用我们正在制作的库制作 PDF 文档的时间戳。我在 PDF 文档中添加了一个新部分。我为签名和包含实际签名的签名对象添加了新的注释对象,还为新部分添加了新的外部参照 table。当我检查外部参照条目时,一切似乎都是正确的。
当我尝试在 Acrobat 中验证我的签名时,我收到以下错误消息“此签名中包含的信息格式存在错误(签名字节范围无效)”。
但是,当我检查字节范围时,一切似乎都是正确的。我从文档的开头到内容部分的左括号,然后从它的末尾到文档的末尾。我将它与具有有效签名的文档进行了比较,似乎字节范围看起来相同。
我真的不明白哪里出了问题,为什么 Acrobat 会显示这个错误。
如果有人想看一下,这里是签名文件的link:https://ufile.io/mckajk9h
PS:我可以分享部分代码,但实际问题是关于 Acrobat reader 以及它如何解释 PDF 签名,而不是我的代码。所以,相关部分应该是我分享的结果PDF文件。
您的 PDF 中存在一些问题。
主要问题
导致非直观错误消息的主要错误:增量更新交叉引用中的第一个条目 table 一个字节太短:
如您所见,第一个交叉引用 table 条目 (0000000000 65535 f\n
) 太短了一个字节,根据规范,它必须正好是 20 个字节长,但您的只有 19 个字节字节长。
每当 Adobe Acrobat 发现结构损坏的交叉引用 table 时,它都会在内部修复该文件。在修复后的文件中,对象被重新排列,导致签名字节范围无效。
在我通过在 f
和 \n
之间添加 space 解决此问题后,Adobe Acrobat 就不再抱怨格式错误了。当然,它声称该文件已被更改或损坏,毕竟我已经更改了它。但至少它接受了签名结构。
小问题
你的一些偏移量不正确,在你的增量更新中你有
xref
0 2
0000000000 65535 f
0000003029 00000 n
12 2
0000003144 00000 n
0000003265 00000 n
因此,对象 12 应该从 3144 开始,但实际上它是从 3145 开始的。
此外,您还有
startxref
19548
%%EOF
因此 xref 关键字应该从 19548 开始,但它从 19549 开始。
我正在尝试使用我们正在制作的库制作 PDF 文档的时间戳。我在 PDF 文档中添加了一个新部分。我为签名和包含实际签名的签名对象添加了新的注释对象,还为新部分添加了新的外部参照 table。当我检查外部参照条目时,一切似乎都是正确的。
当我尝试在 Acrobat 中验证我的签名时,我收到以下错误消息“此签名中包含的信息格式存在错误(签名字节范围无效)”。
但是,当我检查字节范围时,一切似乎都是正确的。我从文档的开头到内容部分的左括号,然后从它的末尾到文档的末尾。我将它与具有有效签名的文档进行了比较,似乎字节范围看起来相同。
我真的不明白哪里出了问题,为什么 Acrobat 会显示这个错误。
如果有人想看一下,这里是签名文件的link:https://ufile.io/mckajk9h
PS:我可以分享部分代码,但实际问题是关于 Acrobat reader 以及它如何解释 PDF 签名,而不是我的代码。所以,相关部分应该是我分享的结果PDF文件。
您的 PDF 中存在一些问题。
主要问题
导致非直观错误消息的主要错误:增量更新交叉引用中的第一个条目 table 一个字节太短:
如您所见,第一个交叉引用 table 条目 (0000000000 65535 f\n
) 太短了一个字节,根据规范,它必须正好是 20 个字节长,但您的只有 19 个字节字节长。
每当 Adobe Acrobat 发现结构损坏的交叉引用 table 时,它都会在内部修复该文件。在修复后的文件中,对象被重新排列,导致签名字节范围无效。
在我通过在 f
和 \n
之间添加 space 解决此问题后,Adobe Acrobat 就不再抱怨格式错误了。当然,它声称该文件已被更改或损坏,毕竟我已经更改了它。但至少它接受了签名结构。
小问题
你的一些偏移量不正确,在你的增量更新中你有
xref
0 2
0000000000 65535 f
0000003029 00000 n
12 2
0000003144 00000 n
0000003265 00000 n
因此,对象 12 应该从 3144 开始,但实际上它是从 3145 开始的。
此外,您还有
startxref
19548
%%EOF
因此 xref 关键字应该从 19548 开始,但它从 19549 开始。