Thank you Tilman. I have tried this:
Security.addProvider(new BouncyCastleProvider()); // load the keystore KeyStore keystore = KeyStore.getInstance("PKCS12"); char pass[] = "xxxxxx".toCharArray(); keystore.load(new FileInputStream("./keystore/cert.pfx"), pass); Enumeration<String> aliases = keystore.aliases(); String alias; if (aliases.hasMoreElements()) { alias = aliases.nextElement(); } else { throw new KeyStoreException("Keystore is empty"); } PrivateKey pk = ((PrivateKey) keystore.getKey(alias, pass)); Certificate[] certificateChain = keystore.getCertificateChain(alias); Certificate certificate = certificateChain[0]; PublicKeyProtectionPolicy pkpp = new PublicKeyProtectionPolicy(); PublicKeyRecipient pkr = new PublicKeyRecipient(); AccessPermission ap = new AccessPermission(); ap.setCanFillInForm(true); ap.setCanModify(false); ap.setCanModifyAnnotations(false); pkr.setPermission(ap); pkr.setX509((X509Certificate) certificate); pkpp.setEncryptionKeyLength(128); // no support for 256 pkpp.addRecipient(pkr); PDDocument doc = PDDocument.load(input); doc.protect(pkpp); doc.save(output); but when I try to open the PDF with Adobe Reader it says that I don't have the ID for it. I just want to apply a certify signature, not to encrypt. Do you have any other hint? Thanks. On Wed, Oct 12, 2016 at 1:15 PM, Tilman Hausherr <thaush...@t-online.de> wrote: > Am 12.10.2016 um 17:17 schrieb Jonathan Barbero: > >> Hi, >> >> I have been playing with the signing example of PDF Box 2.0.3. >> I would like to apply a certification signature ( >> https://helpx.adobe.com/acrobat/kb/certificate-signatures.html ) >> How could I do ? Do you have any example ? >> >> Thanks, >> Jonathan. >> >> > There is no example, but the test TestPublicKeyEncryption.java from the > source download should help too. > > https://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/j > ava/org/apache/pdfbox/encryption/TestPublicKeyEncryption.java?view=markup > > There's also a segment in the Encrypt command line tool: > > > if( certFile != null ) > { > PublicKeyProtectionPolicy ppp = new > PublicKeyProtectionPolicy(); > PublicKeyRecipient recip = new > PublicKeyRecipient(); > recip.setPermission(ap); > > > CertificateFactory cf = > CertificateFactory.getInstance("X.509"); > > InputStream inStream = null; > try > { > inStream = new FileInputStream(certFile); > X509Certificate certificate = > (X509Certificate)cf.generateCertificate(inStream); > recip.setX509(certificate); > } > finally > { > if (inStream != null) > { > inStream.close(); > } > } > > ppp.addRecipient(recip); > > ppp.setEncryptionKeyLength(keyLength); > > document.protect(ppp); > } > else > { > ..... > } > document.save( outfile ); > } > > > Tilman > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@pdfbox.apache.org > For additional commands, e-mail: users-h...@pdfbox.apache.org > >