繁体   English   中英

iText 签名验证问题

[英]iText signature verification issue

我正在遵循 iText 5 签名验证示例来构建带有数字签名的签名/验证 pdf。 但是,当我编译 java 时它返回错误,如下错误消息:

Signatures.java:221: error: incompatible types: List<VerificationException> cannot be converted to Object[]
  Object fails[] = CertificateVerification.verifyCertificates(pkc, ks, null, cal);
1 error

这是我的 java 代码:

public void verifySignatures() throws GeneralSecurityException, IOException {
        KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
        ks.load(null, null);
        CertificateFactory cf = CertificateFactory.getInstance("X509");
        FileInputStream is1 = new FileInputStream(properties.getProperty("ROOTCERT"));
        X509Certificate cert1 = (X509Certificate) cf.generateCertificate(is1);
        ks.setCertificateEntry("cacert", cert1);
        FileInputStream is2 = new FileInputStream("12345678.cer");
        X509Certificate cert2 = (X509Certificate) cf.generateCertificate(is2);
        ks.setCertificateEntry("foobar", cert2);
        
        PrintWriter out = new PrintWriter(new FileOutputStream(VERIFICATION));
        PdfReader reader = new PdfReader(SIGNED1);
        AcroFields af = reader.getAcroFields();
        ArrayList<String> names = af.getSignatureNames();
        for (String name : names) {
            out.println("Signature name: " + name);
            out.println("Signature covers whole document: "+ af.signatureCoversWholeDocument(name));
            out.println("Document revision: "+ af.getRevision(name)+" of "+ af.getTotalRevisions());
            PdfPKCS7 pk = af.verifySignature(name);
            Calendar cal = pk.getSignDate();
            Certificate[] pkc = pk.getCertificates();
            out.println("Subject: " + CertificateInfo.getSubjectFields(pk.getSigningCertificate()));
            out.println("Revision modified: " + !pk.verify());
            Object fails[] = CertificateVerification.verifyCertificates(pkc, ks, null, cal);
            
            if (fails == null)
                out.println("Certificates verified against the KeyStore");
            else
                out.println("Certificate failed: " + fails[1]);    
        }
        out.flush();
        out.close();
    }

我做错了什么?

Signatures.java:221:错误:不兼容的类型:列表无法转换为对象 [] Object 失败 [] = CertificateVerification.verifyCertificates(pkc, ks, Z37A6259CC0C1DAE2BZA,7cal86648999 1 个错误

您正在调用 iText5 class CertificateVerification的以下方法

public static List<VerificationException> verifyCertificates(Certificate[] certs, KeyStore keystore,
        Calendar calendar) {
    return verifyCertificates(certs, keystore, (Collection) null, calendar);
}

Object fails[]更改为List<VerificationException>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM