java - 启用 LTV 的 pdf iText 7
问题描述
我已经阅读了许多关于如何使用 iText 启用 pdf ltv 的问题/答案。他们都不为我工作。我有一个 pdf 流,我设置了一个签名字段,然后我使用它来调用 signDetached 方法并签署 pdf。我用:
signer.signDetached(new BouncyCastleDigest(), pks, chain,
Collections.singleton(crlClient), ocspClient, tsc,0, subfilter);
但是什么也没发生。我读过你必须包括除根以外的所有证书。我添加了我的私人证书链(我使用它来签署 pdf),但我还没有找到包含 TSA 证书的可能方法。
我使用 iText 版本7.X。
KeyStore ks = getKeyStore();
Certificate[] chain = null;
Enumeration<String> al = ks.aliases();
for (Enumeration<String> l = al; l.hasMoreElements();) {
String alias = (String) l.nextElement();
chain = ks.getCertificateChain(alias);
}
PrivateKey pk = (PrivateKey) ks.getKey(ks.aliases().nextElement(), "******".toCharArray());
IExternalSignature pks = new PrivateKeySignature(pk, digestAlgorithm, BouncyCastleProvider.PROVIDER_NAME);
OCSPVerifier ocspVerifier = new OCSPVerifier(null, null);
OcspClientBouncyCastle ocspClient = new OcspClientBouncyCastle(ocspVerifier);
String url = CertificateUtil.getCRLURL((X509Certificate) chain[0]);
CrlClientOnline crlClient = new CrlClientOnline(url);
try {
signer.signDetached(new BouncyCastleDigest(), pks, chain, Collections.singleton(crlClient), ocspClient, tsc,
0, subfilter);
} catch (Exception ex) {
System.out.println("Tzizzzzzzzzzzzzzzz" + ex.getCause());
}
private KeyStore getKeyStore()
throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException {
KeyStore ks = KeyStore.getInstance("pkcs12");
ks.load(new FileInputStream("tsaPath"), "****".toCharArray());
ks.load(new FileInputStream("p12Path"), "*******".toCharArray());
return ks;
}
解决方案
以防有人仍然对 adobeLTV 有疑问。与在 itext5 中相同,仍需要在 itext7 中完成以启用 AdobeLTV,您需要自行创建文档安全存储,并在有关验证数据 /ocsp/crls/certs 的间接参考信息中添加。
推荐阅读
- forms - 在 Google Apps 脚本 Web 应用程序表单中自动关闭
- python - 如何对使用 Flask 的 app.logger 的函数进行单元测试
- database - 规范覆盖后的候选键
- amazon-web-services - AWS hmac 加密差异
- javascript - JavaScript 将函数传递给 map();
- python - 检查是否通过 pip 专门安装了一个包
- r - 在R数据框中提取以@开头的单词并保存为新列
- reactjs - 如何在 React 中直接使用函数?
- python - OrderedDict 在 Python 3.7 中会变得多余吗?
- python - 如何为 attention_ocr 创建与 FSNS 数据集格式相同的数据集?