iText PDF批准和认证签名

时间:2014-06-24 09:14:56

标签: itext

我正在使用iText进行PDF签名。

我的PDF表单有3个签名字段。前两个字段用于批准签名,最后一个字段用于证书签名。对于所有签名,批准签名和附加模式设置为true后,始终会签署证书签名。

我的问题是在签署认证签名(认证级别设置为CERTIFIED_NO_CHANGES_ALLOWED)后,验证的批准签名将在验证证书签名时失效。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

  

认证签名始终在批准签名后签署

这是不允许的。

PDF规范ISO 32000-1表示

  
    

证书签名的签名字典应为签名字段的值,并且应包含 ByteRange 条目。它也可以从权限字典中的 DocMDP 条目引用(参见12.8.4“权限”)。签名字典应包含具有 DocMDP 转换方法的签名参考字典(参见表253)。

         

(第12.8.1节数字签名/一般)

         

DocMDP 转换方法应用于检测相对于由文档作者(应用第一个签名的人)签名的签名字段的修改。文档只能包含一个包含 DocMDP 转换方法的签名字段;它应该是文件中第一个签名的字段。它使作者能够指定允许对文档进行哪些更改以及哪些更改使作者的签名无效。

         

(第12.8.2.2.1节数字签名/转换方法/ DocMDP / General)

  

即。认证签名具有 DocMDP 转换方法,具有 DocMDP 转换方法的签名必须是文档中签名的第一个。

但是,如果PDF2功能适合您,您可能会尝试实现的目标,参见布鲁诺的白皮书Digital Signatures for PDF documents部分2.5.5 签署后锁定字段和文档

  
    

从PDF 1.5开始,签名文档时可以锁定特定字段。在PDF 2.0中,将有一个新功能允许您定义已经可用于认证签名的文档级权限,但现在也可用于批准签名。

  

有关详细信息(超出此处答案的大小),请阅读该部分......