我从 iText 升级5.2.1到iText5.5.5
我使用 PdfStamper 和 PdfSignatureApperance 来应用数字签名。
这是我的代码片段。
PdfStamper stamper = PdfStamper.createSignature(reader, byteArrayOutputStream,'\0');
PdfSignatureAppearance appearance = stamper.getSignatureAppearance();
appearance.setCrypto(key, chain, null, PdfSignatureAppearance.WINCER_SIGNED);
从上面的代码来看,有一些东西在当前版本中不存在。
1) 版本中5.5.5iText 的我找不到 PdfSignatureApperance 类的“setCrypto”方法。
2) PdfSignatureApperance 不包含 WINCER_SIGNED。
如果有人可以帮助我使用新的替代方案应用数字签名。
Thanks.
事实上,自 iText 5.3 以来,签名 API 发生了一些变化,并且 setCrypto 方法不再存在。我阅读了布鲁诺的白皮书,这是对我有用的代码:
PdfReader reader = new PdfReader(new FileInputStream(file));
FileOutputStream fout = new FileOutputStream(new File(targetDir, fileName));
PdfStamper stp = PdfStamper.createSignature(reader, fout, '\0');
PdfSignatureAppearance sap = stp.getSignatureAppearance();
sap.setReason(reason);
sap.setLocation("Pleber-Christ");
ExternalDigest digest = new BouncyCastleDigest();
BouncyCastleProvider provider = new BouncyCastleProvider();
ExternalSignature signature = new PrivateKeySignature(key, DigestAlgorithms.SHA256, provider.getName());
MakeSignature.signDetached(sap, digest, signature, chain, null, null, null, 0, CryptoStandard.CMS);
你必须把bcprov-jdk15on-1.60.jar and bcpkix-jdk15on-1.60.jar在你的类路径中。您可能需要对其进行一些更改以满足您的需求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)