There's no TSA in your code and I've no idea what you are doing. Experiment 
first with the example in 
http://itextpdf.sourceforge.net/howtosign.html#signtsocspjava.

Paulo

----- Original Message ----- 
From: "Pavol Behul" <[email protected]>
To: "Paulo Soares" <[email protected]>; 
<[email protected]>
Sent: Thursday, August 13, 2009 10:18 AM
Subject: Re: [iText-questions] iText and TimeStamp


I use code bellow to TSA sign pdf. After opening in Acrobat reader
i've got message of invalid signature like this:
- There are errors in the formatting or information contained in this
signature (support information: SigDict? / Contents illegal data)
Could anyone help me , where is problem ?


        Security.addProvider(new
org.bouncycastle.jce.provider.BouncyCastleProvider());
        KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA");
        gen.initialize(2048);
        KeyPair kp = gen.generateKeyPair();
        X500Principal p = new X500Principal ( "CN=Pavol Behul" );
        X509Certificate cert = Signer.selfSign(p, new
Date(System.currentTimeMillis() - 100000000), new
Date(System.currentTimeMillis() + 100000000), kp);
        PrivateKey key = kp.getPrivate();
        java.security.cert.Certificate[] chain = {cert};

        // input pdf for signing, outpu signed pdf
        PdfReader reader = new PdfReader("input.pdf");
        FileOutputStream fout = new FileOutputStream("signed.pdf");
        PdfStamper stp = PdfStamper.createSignature(reader, fout, '\0');
        PdfSignatureAppearance sap = stp.getSignatureAppearance();
        sap.setCrypto(key, chain, null, PdfSignatureAppearance.SELF_SIGNED);
        sap.setReason("Test purpose");
        sap.setLocation("Praha");
        sap.setVisibleSignature(new Rectangle(100, 100, 300, 200), 1, null);
        sap.setExternalDigest(new byte[2048], null, "RSA");
        Calendar cal = Calendar.getInstance();
        int contentEstimated = 1226;
        HashMap exc = new HashMap();
        exc.put(PdfName.CONTENTS, new Integer(contentEstimated * 2 + 2));
        sap.preClose(exc);
        PdfPKCS7 sgn = new PdfPKCS7(key, chain, null, "SHA1", null, false);
        InputStream data = sap.getRangeStream();
        MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
        byte buf[] = new byte[8192];
        int n;
        while ((n = data.read(buf)) > 0) {
            messageDigest.update(buf, 0, n);
        }
        byte hash[] = messageDigest.digest();
        n = hash.length;
        //byte[] ocsp = null;
        //if (chain.length >= 2) {
        //    String url =
        PdfPKCS7.getOCSPURL((X509Certificate)chain[0]);
        //    if (url != null && url.length() > 0)
        //        ocsp = new
OcspClientBouncyCastle((X509Certificate)chain[0],
(X509Certificate)chain[1],url).getEncoded();
        byte sh[] = sgn.getAuthenticatedAttributeBytes(hash, cal, null);
        sgn.update(sh, 0, sh.length);
        byte[] encodedSig = sgn.getEncodedPKCS7(hash, cal, null, null);
        n = encodedSig.length;
        if (contentEstimated + 2 < encodedSig.length) throw new
Exception("Not enough space");
        byte[] paddedSig = new byte[contentEstimated];
        System.arraycopy(encodedSig, 0, paddedSig, 0, encodedSig.length);
        PdfDictionary dic2 = new PdfDictionary();
        dic2.put(PdfName.CONTENTS, new
PdfString(paddedSig).setHexWriting(true));
        sap.close(dic2); 


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
iText-questions mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/itext-questions

Buy the iText book: http://www.1t3xt.com/docs/book.php
Check the site with examples before you ask questions: 
http://www.1t3xt.info/examples/
You can also search the keywords list: http://1t3xt.info/tutorials/keywords/

Reply via email to