首页 > 解决方案 > 启用 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;
    }

标签: javaitextdigital-signature

解决方案


以防有人仍然对 adobeLTV 有疑问。与在 itext5 中相同,仍需要在 itext7 中完成以启用 Adob​​eLTV,您需要自行创建文档安全存储,并在有关验证数据 /ocsp/crls/certs 的间接参考信息中添加。

https://github.com/mkl-public/testarea-itext7/blob/master/src/main/java/mkl/testarea/itext7/signature/AdobeLtvEnabling.java


推荐阅读