我正在构建一个允许用户对PDF进行数字签名的应用。我使用的是plugPDF SDK。它没有内置支持生成字节范围摘要所以我必须自己做。 PlugPDF生成PDF内容,我在终端中生成签名哈希:
openssl dgst -hex -sha256 -sign privateKey.pem -out encrypted.out invoice.content
从这个哈希我生成PKCS#7对象:
openssl cms -in encrypted.out -sign -signer signer.pem -outform der -out cert.p7b
然后我使用plugPDF SDK将其注入PDF。当我在Adobe Acrobat中打开它时,PDF已签名但签名无效。它说:“自签名申请以来,文件已被更改或损坏。”
我认为问题是哈希值错误,但我不知道如何生成它。
这是一个示例教程:https://plugpdf.com/how-to-sign-pdf-document-with-pki-certificate-on-ios/
答案 0 :(得分:0)
PDF的字节范围摘要通常会排除将注入签名的PDF区域,以便在添加签名之前和之后摘要值应相同。如果它们不相同,那么假设文件在签名后已经以某种方式进行了修改。
它看起来不像openssl的dgst命令允许你指定不连续的字节范围。