我有一个带有签名字节的数组和一个带有ocsp字节的数组,用于将ltv信息添加到我的pdf中。该签名是时间戳签名。现在,我尝试将这些信息添加到一个pdf文件中,该文件可用于
//add signature
PdfLiteral pdfLiteral = (PdfLiteral) pdfSignature.get( PdfName.CONTENTS );
byte[] outc = new byte[ ( pdfLiteral.getPosLength( ) - 2 ) / 2 ];
Arrays.fill( outc, (byte) 0 );
System.arraycopy( externalSignature, 0, outc, 0, externalSignature.length );
PdfDictionary dic2 = new PdfDictionary( );
PdfString pdfString = new PdfString( outc ).setHexWriting( true );
dic2.put( PdfName.CONTENTS, pdfString );
pdfSignatureAppearance.close( dic2 );
...
//add LTV
for ( String sigName : stamper.getAcroFields( ).getSignatureNames( ) ) {
addVerification = validation.addVerification(
sigName, // Signature Name
ocspColl, // OCSP
crlColl, // CRL
null // certs
);
}
validation.merge( );
stamper.close( );
好的,这样行。但在签名中,我必须设置标志认证级别1(不允许更改),我的应用程序将无法工作。因为添加LTV后,我更改了文档。我尝试创建自己的DSS字典并将其添加到文档中,但失败了。有谁能帮忙吗?提前谢谢
作为ISO-32000-2的ISO委员会成员,我可以访问该规范,因此请允许我解释几件事。
PDF文档中可以有3种类型的签名(*):
(*)还有第四种类型,称为使用权签名,但在PDF 2.0中不推荐使用。
来源:ISO 32000-2(草案)第12.8节“数字签名”中第12.8.1节“概述”
您正在谈论文档时间戳签名(由于LTV原因而添加),但您也在谈论DocMDP(MDP代表修改检测和预防)。
MDP仅适用于认证签名:
DocMDP转换方法应用于检测与文件作者(应用认证签名的人)签名的签名字段相关的修改。文档只能包含一个包含DocMDP转换方法的签名字段。它使作者能够指定允许对文件进行哪些更改,以及哪些更改会使作者的签名无效。
资料来源: ISO 32000-2(草案)题为DocMDP12.8.2.2中题为一般的第12.8.2.2.1节
当然,您可以向包含“签名参考字典html" target="_blank">数组”的签名字典添加参考条目。
签名引用字典可以有一个带有以下值的Transformmethod条目:
来源:ISO 32000-1第12.8.1节表259“签名参考词典中的条目”
如果MDP是您想要的,您可以在认证签名的情况下使用DocMDP,在其他签名的情况下使用FieldMDP。但是,如果我们查看表255中的引用条目:签名字典中的条目,我们会看到“如果子过滤器是ETSI. RFC3161,则不应使用该条目。”
换句话说,文档时间戳不能有DocMDP或FieldMDP。这很正常,因为正如我们在第12.8.5节“文档时间戳(DTS)词典”的第12.8.5.1节“概述”中所读到的:
文档时间戳词典在时间戳标记中指定的时间建立完整PDF文件的确切内容。
它没有提到将标志设置为“认证级别1(不允许更改)”的能力。这不是文件时间戳的作用。代码失败是正常的。
设置认证级别只能通过第一个签名来完成,以防该签名是认证签名。无论是谁告诉你使用文档时间戳签名(ETSI. RFC3161)设置认证级别,都是在要求你做一些根据即将到来的PDF 2.0国际标准化组织标准不可能做的事情。
如果你的后续问题是:那么它是如何在ISO 32000-1中完成的,那么答案很简单:文档时间戳签名在ISO 32000-1中不存在。
我们有一个包含现有字段的PDF表单,我们正在尝试使用默认值向表单添加新字段,但没有成功。基本上,我们正在做以下工作: 字段idClient使用新值更新,但新字段idDocTrackType没有内容。我做错了什么?
我是iText的新手。我想签署一个PDF并添加LTV到它。签署PDF是好的但当我想添加LTV到PDF时,它不显示我的OCSP和时间戳证书的CRL信息。首先,我想描述一下我是如何签约的。-我的证书链:签名证书,签名证书根,时间戳证书,时间戳证书根。(我忘了锁链上有什么东西吗?) 要签名PDF,我使用的是: 之后,我将为签名和时间戳添加LTV。 谢谢你。
出身背景 我使用iTextSharp已经有一段时间了。我已经创建了一个带有两个可签名的PdfFormFields的pdf文档。如果我打开pdf文档,我可以手动对每个字段进行手动签名。我希望通过iTextSharp完成这件事。 我目前正在从X509Store检索证书。直到现在,我都能弄明白。 问题 有人能告诉我如何使用X509Certificate2签署一个已经存在的签名字段吗。 工具书类 以下参考
我想问一个问题,如果我想在多页pdf中添加数字签名,每页都有相同的印章,我是否可以在第一页只添加一次数字签名,然后其他页面只需要引用第一个印章的外观。因为使用这种方法可以减少添加邮票的时间。 我使用了mkl给出的代码,但我有一个问题。我用其他代码替换了以下代码。 原件: 现在: 原始代码在加盖印花时有效,但修改后的代码将使印花无效。我使用Adobe Acrobat Pro DC打开已签名的文档。此
我使用PdfWriter setEncryption对PDF文档进行了加密/解密。一切正常,解密也正常。 当我为数字签名的PDF文档做同样的事情时,我的数字信息与消息一起损坏(SigDict/Contents非法数据) 是否可以在不影响数字签名信息的情况下加密PDF?
我正在开发一个需要调用一些Jenkins实例的应用程序,为此我使用jenkins-cli. jar 我可以使用命令行调用jar以轻松提取其输出。然而,我需要自己解析异常。 为了正确处理异常,我现在通过反射调用jar的main方法: 但现在,我需要以某种方式将jar打印的输出获取到系统中。我知道我可以使用这个系统。放样()。问题是,我有其他线程同时记录。我在这里读到了这个系统。out是特定于类加载器