Examples
Following an example is shown where a file is signed (using a p12 token file or a smartcard), is verified and finally timestamped
//////////////////////////////////////////////////// //////////////////////////////////////////////////// import java.io.*; import java.security.*; import javax.swing.*; import org.bouncycastle.cms.*; import org.javasign.gui.*; import org.javasign.*; import org.javasign.util.*; public class Test { public static void main(String[] args) { String base = "C:\\programmi\\javasign\\"; File src = new File(base+"license.txt"); File dest = new File(base+"license.txt.p7m"); File destTs=new File(base+"license.txt.p7m.tsr"); try { /////////////////////////////////////////// //sign with token // String algorithm=CMSSignedDataGenerator.DIGEST_SHA1; String ksType="PKCS12"; String p12FileName=base+"id.p12"; //"id.p12"; String p12Password="raffa"; //the password; File keystore = new File(p12FileName); KeyStoreLoader kl = new KeyStoreLoader(keystore,ksType,p12Password); kl.load(); PrivateKey pkey=kl.getPrivateKey(); X509Certificate cert=kl.getX509Certificate(); P7Generator p7genToken = new P7Generator(src,dest,pkey,cert,algorithm); p7genToken.generate(); ///////////////////////////////////////////// //sign with smartcard String driver="incryptoki2.dll"; String KEY_LABEL="DSPrivateKey#0"; String PIN="123456"; CryptokiGenerator p7genSC = new CryptokiGenerator(driver,src,dest,KEY_LABEL,PIN); p7genSC.generate(); ///////////////////////////////////////////// //verify P7Verifier pf= new P7Verifier(dest); pf.setCheckCA(true); pf.setCheckCrl(false); pf.setDownloadCrl(false); Verifications verifications = pf.verify(); boolean isP7m=verifications.isP7m(); boolean isValid=verifications.isVerified(); boolean isTsr=pf.isTS(); ///////////////////////////////////////////////////////////////// //timestamp String url="http://www.tecnes.com/javasign/timestamp"; TsrGenerator tsrgen = new TsrGenerator(url,dst,destTs); tsrgen.generate(); } catch (Exception e) { e.printStackTrace(); } } }