簡體   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