我正在尝试用rsa_sha1(Adobe.PPKLite > adbe.x509.rsa_sha1)签署PDF文件,我有两个问题:
发布于 2013-08-26 10:28:57
我正在尝试与rsa_sha1(Adobe.PPKLite > adbe.x509.rsa_sha1)签署PDF协议。
您确定要使用这个子过滤器吗?所有关于集成PKCS#1签名的进一步开发都使用了集成的CMS容器,而不是裸的CMS签名。
不知道是否应该对ByteRange指定的实际PDF内容进行签名,还是对该内容的值进行摘要?
与adobe.pkcs7.sha1样式签名不同,就像adobe.pkcs7.detached样式签名一样,整个字节范围都是用adobe.x509.rsa_sha1样式签名签名的,而不仅仅是该内容的摘要值。在这方面,adobe.x509.rsa_sha1比adobe.pkcs7.sha1更可取,因为(尽管在名称中出现了 SHA1 ),并不是强迫您使用SHA1,而是可以使用更好的摘要算法。
(尽管如此,签名过程当然包括创建签名数据的摘要值,但这完全是另一回事.)
如果证书放在签名字段之前还是之后,是否存在差异?
证书和签名都是PDF字典对象中的元素,根据定义,这样的字典中元素的顺序并不重要。显然,在创建签名后,顺序必须保持固定(实际上不仅是顺序,而且是确切的位置和内容)。
字典中的条目表示关联表,因此即使在文件中写入任意命令时,也将无序。这一命令将被忽视。 (http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdf第7.3.7节)
PS:规范表明签名
将在文件中的字节范围内计算,这些字节将由签名字典中的ByteRange条目指示。这个范围应该是整个文件,包括签名字典,但不包括签名值本身(内容条目)。可以使用其他范围,但由于它们没有检查文档的所有更改,因此不建议使用它们。 (http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdf第12.8.1节)
这似乎允许在推荐的字节范围之外的其他字节范围(除了实际的签名字节)。实际上,你也会发现
对于字节范围签名,内容应该是带有“<”和“>”分隔符的十六进制字符串。应精确地适合于ByteRange__指定的范围之间的空间。 (http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdf第12.8.3.3.2节)
如果需要互操作性,则在实际的should
之前使用shall
。例如,Adobe需要这种范围定义。
更新的标准,例如ETSI PAdES技术规范文档,甚至更加明确地要求它。
https://stackoverflow.com/questions/18438379
复制相似问题