Hello,

i have tried to run the example with an external signature in WINCER SIGNED
MODE, like described on:
(http://itextpdf.sourceforge.net/howtosign.html#signextstd).
With Algorithm SHA1 sign and verification works fine.
But if i replace the SHA1 through SHA256 the sign process works without
errors, but the verification of the signed document with Acrobat reader
9.1.3 fails with message: "The document was changed or damaged after put
signature"

The code for signing:

       Security.addProvider(new BouncyCastleProvider());   
     
       ks.load(new FileInputStream("my_private_key.pfx"),
"my_password".toCharArray());
       String alias = (String)ks.aliases().nextElement();
       PrivateKey key = (PrivateKey)ks.getKey(alias,
"my_password".toCharArray());
       Certificate[] chain = ks.getCertificateChain(alias);
       PdfReader reader = new PdfReader("c:\\original.pdf");
       FileOutputStream fout = new FileOutputStream("c:\\aax2xsigned.pdf");
       PdfStamper stp = PdfStamper.createSignature(reader, fout, '\0');
       PdfSignatureAppearance sap = stp.getSignatureAppearance();
       sap.setCrypto(key, chain, null,
PdfSignatureAppearance.WINCER_SIGNED);
       sap.setReason("I'm the author");
       sap.setLocation("Lisbon");
       // comment next line to have an invisible signature
       sap.setVisibleSignature(new Rectangle(100, 100, 200, 200), 1, null);
       sap.setExternalDigest(new byte[128], new byte[20], "RSA");
       sap.preClose();
       MessageDigest messageDigest = MessageDigest.getInstance("SHA256");
       byte buf[] = new byte[8192];
       int n;
       InputStream inp = sap.getRangeStream();
       while ((n = inp.read(buf)) > 0) {
           messageDigest.update(buf, 0, n);
       }
       byte hash[] = messageDigest.digest();
       PdfSigGenericPKCS sg = sap.getSigStandard();
       PdfLiteral slit = (PdfLiteral)sg.get(PdfName.CONTENTS);
       byte[] outc = new byte[(slit.getPosLength() - 2) / 2];
       PdfPKCS7 sig = sg.getSigner();
       Signature sign = Signature.getInstance("SHA256WithRSA");
       sign.initSign(key);
       sign.update(hash);
       sig.setExternalDigest(sign.sign(), hash, "RSA");
       PdfDictionary dic = new PdfDictionary();
       byte[] ssig = sig.getEncodedPKCS7();
       System.arraycopy(ssig, 0, outc, 0, ssig.length);
       dic.put(PdfName.CONTENTS, new PdfString(outc).setHexWriting(true));
       sap.close(dic);

Kind regards and merry christmas

Manfred
-- 
View this message in context: 
http://old.nabble.com/External-signature-in-Wincer-Sign-Mode-SHA256-does-not-work-tp26885435p26885435.html
Sent from the iText - General mailing list archive at Nabble.com.


------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
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