org.apache.pdfbox.pdmodel.encryption

## Class PublicKeyProtectionPolicy

- java.lang.Object
- - org.apache.pdfbox.pdmodel.encryption.ProtectionPolicy
  - - org.apache.pdfbox.pdmodel.encryption.PublicKeyProtectionPolicy

    public final class PublicKeyProtectionPolicy
    extends ProtectionPolicy

The protection policy to use to protect a document with the public key security handler. PDF documents are encrypted so that they can be decrypted by one or more recipients. Each recipient have its own access permission. The following code sample shows how to protect a document using the public key security handler. In this code sample, `doc` is a `PDDocument` object.

     PublicKeyProtectionPolicy policy = new PublicKeyProtectionPolicy();
     PublicKeyRecipient recip = new PublicKeyRecipient();
     AccessPermission ap = new AccessPermission();
     ap.setCanModify(false);
     recip.setPermission(ap);

     // load the recipient's certificate
     InputStream inStream = new FileInputStream(certificate_path);
     CertificateFactory cf = CertificateFactory.getInstance("X.509");
     X509Certificate certificate = (X509Certificate)cf.generateCertificate(inStream);
     inStream.close();

     recip.setX509(certificate); // set the recipient's certificate
     policy.addRecipient(recip);
     policy.setEncryptionKeyLength(128); // the document will be encrypted with 128 bits secret key
     doc.protect(policy);
     doc.save(out);

Author:
  Benoit Guillon
See Also:
  `PDDocument.protect(ProtectionPolicy)`, `AccessPermission`, `PublicKeyRecipient`

### Constructor Summary

Constructors
Constructor and Description
`PublicKeyProtectionPolicy()` Creates a new PublicKeyProtectionPolicy with an empty recipients list.

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `addRecipient(PublicKeyRecipient recipient)` Adds a new recipient to the recipients list.
`X509Certificate` `getDecryptionCertificate()` Returns the decryption certificate.
`int` `getNumberOfRecipients()` Returns the number of recipients
`Iterator<PublicKeyRecipient>` `getRecipientsIterator()` Returns an iterator to browse the list of recipients.
`boolean` `removeRecipient(PublicKeyRecipient recipient)` Removes a recipient from the recipients list.
`void` `setDecryptionCertificate(X509Certificate decryptionCertificate)` Sets the decryption certificate

### Methods inherited from class org.apache.pdfbox.pdmodel.encryption.ProtectionPolicy

`getEncryptionKeyLength, isPreferAES, setEncryptionKeyLength, setPreferAES`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### PublicKeyProtectionPolicy

    public PublicKeyProtectionPolicy()

Creates a new PublicKeyProtectionPolicy with an empty recipients list.

### Method Detail

#### addRecipient

    public void addRecipient(PublicKeyRecipient recipient)

Adds a new recipient to the recipients list.

Parameters:
  `recipient` - A new recipient.

#### removeRecipient

    public boolean removeRecipient(PublicKeyRecipient recipient)

Removes a recipient from the recipients list.

Parameters:
  `recipient` - The recipient to remove.
Returns:
  true If a recipient was found and removed.

#### getRecipientsIterator

    public Iterator<PublicKeyRecipient> getRecipientsIterator()

Returns an iterator to browse the list of recipients. Object found in this iterator are `PublicKeyRecipient`.

Returns:
  The recipients list iterator.

#### getDecryptionCertificate

    public X509Certificate getDecryptionCertificate()

Returns the decryption certificate.

Returns:
  the decryption certificate

#### setDecryptionCertificate

    public void setDecryptionCertificate(X509Certificate decryptionCertificate)

Sets the decryption certificate

Parameters:
  `decryptionCertificate` - the new decryption certificate.

#### getNumberOfRecipients

    public int getNumberOfRecipients()

Returns the number of recipients

Returns:
  the number of recipients