0

PDF ファイルに基本的なデジタル署名を付けようとしています。itext Web サイトで提供されているコードを使用しようとしています。コードは次のとおりです。

 public class DigiSign {
public static void main(String a[])
{
    try {

        KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
        ks.load(new FileInputStream("C:\\WSR\\keystore.ks"), "password".toCharArray());
        String alias = (String) ks.aliases().nextElement();
        PrivateKey key = (PrivateKey) ks.getKey(alias, "password".toCharArray());
        java.security.cert.Certificate[] chain = ks.getCertificateChain(alias);
        PdfReader reader = new PdfReader("C:\\WSR\\a.pdf");
        FileOutputStream fout = new FileOutputStream("C:\\WSR\\signed.pdf");
        PdfStamper stp = PdfStamper.createSignature(reader, fout, '\0');
        PdfSignatureAppearance sap = stp.getSignatureAppearance();
        sap.setCrypto(key, chain, null, PdfSignatureAppearance.WINCER_SIGNED);
        sap.setReason("arpit");
        sap.setLocation("arpit");
        // comment next line to have an invisible signature
        sap.setVisibleSignature(new Rectangle(10, 10, 20, 20), 1, null);
        stp.close();
    } catch (Exception ex) {
        Logger.getLogger(DigiSign.class.getName()).log(Level.SEVERE, null, ex);
    }
}

}

を使用してキーを作成しました

keytool -genkey -keyalg RSA -alias myname -keypass password -keystore keystore.ks -dname "cn=Paulo Soares, c=PT" を入力し、パスワードとして abc123 を設定します。このコードを実行すると、この例外が発生します

 Exception in thread "main" java.lang.NoClassDefFoundError: org/bouncycastle/asn1/DEREncodable
    at com.lowagie.text.pdf.PdfSignatureAppearance.getAppearance(Unknown Source)
    at com.lowagie.text.pdf.PdfSignatureAppearance.preClose(Unknown Source)
    at com.lowagie.text.pdf.PdfSignatureAppearance.preClose(Unknown Source)
    at com.lowagie.text.pdf.PdfStamper.close(Unknown Source)
    at DigiSign.main(DigiSign.java:42)
   Caused by: java.lang.ClassNotFoundException: org.bouncycastle.asn1.DEREncodable
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

私は何を間違っていますか?

4

1 に答える 1