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
>
>

Reply via email to