unable to digitally sign pdf using itext and java -
i trying put basic digital signature on pdf file. trying use code provided on itext website.the code follows-
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 have 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); } } }
i created key using
keytool -genkey -keyalg rsa -alias myname -keypass password -keystore keystore.ks -dname "cn=paulo soares, c=pt" , set abc123 password. when run code exception
exception in thread "main" java.lang.noclassdeffounderror: org/bouncycastle/asn1/derencodable @ com.lowagie.text.pdf.pdfsignatureappearance.getappearance(unknown source) @ com.lowagie.text.pdf.pdfsignatureappearance.preclose(unknown source) @ com.lowagie.text.pdf.pdfsignatureappearance.preclose(unknown source) @ com.lowagie.text.pdf.pdfstamper.close(unknown source) @ digisign.main(digisign.java:42) caused by: java.lang.classnotfoundexception: org.bouncycastle.asn1.derencodable @ java.net.urlclassloader$1.run(urlclassloader.java:202) @ java.security.accesscontroller.doprivileged(native method) @ java.net.urlclassloader.findclass(urlclassloader.java:190) @ java.lang.classloader.loadclass(classloader.java:306) @ sun.misc.launcher$appclassloader.loadclass(launcher.java:301) @ java.lang.classloader.loadclass(classloader.java:247) what doing wrong?
(just formulate cause answer has been presented comment before:)
for security low level operations itext based on bouncycastle libraries. concerns creation , verification of integrated pdf signatures handling of encrypted documents. in these use cases, therefore, appropriate bouncycastle provider libs required on class path of application.
the primary exception information
java.lang.noclassdeffounderror: org/bouncycastle/asn1/derencodable indicates requirement not fullfilled, either bouncycastle not present @ or @ least not present in required version. meanwhile has been confirmed @user1946152 configuration.
p.s.: in case @ hand op still uses pre-5.x version of itext. while there conditions enforcing (e.g. management not being willing decide when buy license sigh), should definitively update current version of itext. there meanwhile have been many big changes, in fields of electronic signatures, content parsing, , creation of pdf/a documents.
Comments
Post a Comment