## com.lowagie.text.pdf
Class PdfEncryption

    java.lang.Object
      com.lowagie.text.pdf.PdfEncryption

    public class PdfEncryption

extends java.lang.Object

Author:
  Paulo Soares (psoares@consiste.pt), Kazuya Ujihara

Field Summary
`static int` `AES_128`
`private ARCFOUREncryption` `arcfour`
`private int` `cryptoMode`
`(package private) byte[]` `documentID`
`private boolean` `embeddedFilesOnly` Indicates if the encryption is only necessary for embedded files.
`private boolean` `encryptMetadata`
`(package private) byte[]` `extra` Work area to prepare the object/generation bytes
`(package private) byte[]` `key` The encryption key for a particular object/generation
`private int` `keyLength` The generic key length.
`(package private) int` `keySize` The encryption key length for a particular object/generation
`(package private) java.security.MessageDigest` `md5` The message digest algorithm MD5
`private static byte[]` `metadataPad`
`(package private) byte[]` `mkey` The global encryption key
`(package private) byte[]` `ownerKey` The encryption key for the owner
`private static byte[]` `pad`
`(package private) int` `permissions`
`protected PdfPublicKeySecurityHandler` `publicKeyHandler` The public key security handler for certificate encryption
`private int` `revision`
`private static byte[]` `salt`
`(package private) static long` `seq`
`static int` `STANDARD_ENCRYPTION_128`
`static int` `STANDARD_ENCRYPTION_40`
`(package private) byte[]` `userKey` The encryption key for the user

Constructor Summary
`PdfEncryption()`
`PdfEncryption(PdfEncryption enc)`

Method Summary
`void` `addRecipient(java.security.cert.Certificate cert, int permission)`
`int` `calculateStreamSize(int n)`
`private byte[]` `computeOwnerKey(byte[] userPad, byte[] ownerPad)`
`byte[]` `computeUserPassword(byte[] ownerPassword)`
`static byte[]` `createDocumentId()`
`static PdfObject` `createInfoId(byte[] id)`
`byte[]` `decryptByteArray(byte[] b)`
`byte[]` `encryptByteArray(byte[] b)`
`int` `getCryptoMode()`
`StandardDecryption` `getDecryptor()`
`PdfDictionary` `getEncryptionDictionary()`
`OutputStreamEncryption` `getEncryptionStream(java.io.OutputStream os)`
`PdfObject` `getFileID()`
`boolean` `isEmbeddedFilesOnly()` Indicates if only the embedded files have to be encrypted.
`boolean` `isMetadataEncrypted()`
`private byte[]` `padPassword(byte[] userPassword)`
`void` `setCryptoMode(int mode, int kl)`
`void` `setHashKey(int number, int generation)`
`void` `setupAllKeys(byte[] userPassword, byte[] ownerPassword, int permissions)`
`void` `setupByEncryptionKey(byte[] key, int keylength)`
`private void` `setupByOwnerPad(byte[] documentID, byte[] ownerPad, byte[] userKey, byte[] ownerKey, int permissions)`
`void` `setupByOwnerPassword(byte[] documentID, byte[] ownerPassword, byte[] userKey, byte[] ownerKey, int permissions)`
`private void` `setupByUserPad(byte[] documentID, byte[] userPad, byte[] ownerKey, int permissions)`
`void` `setupByUserPassword(byte[] documentID, byte[] userPassword, byte[] ownerKey, int permissions)`
`private void` `setupGlobalEncryptionKey(byte[] documentID, byte[] userPad, byte[] ownerKey, int permissions)` ownerKey, documentID must be setup
`private void` `setupUserKey()` mkey must be setup

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### STANDARD_ENCRYPTION_40

    public static final int STANDARD_ENCRYPTION_40

See Also:
  Constant Field Values

### STANDARD_ENCRYPTION_128

    public static final int STANDARD_ENCRYPTION_128

See Also:
  Constant Field Values

### AES_128

    public static final int AES_128

See Also:
  Constant Field Values

### pad

    private static final byte[] pad

### salt

    private static final byte[] salt

### metadataPad

    private static final byte[] metadataPad

### key

    byte[] key

  The encryption key for a particular object/generation

### keySize

    int keySize

  The encryption key length for a particular object/generation

### mkey

    byte[] mkey

  The global encryption key

### extra

    byte[] extra

  Work area to prepare the object/generation bytes

### md5

    java.security.MessageDigest md5

  The message digest algorithm MD5

### ownerKey

    byte[] ownerKey

  The encryption key for the owner

### userKey

    byte[] userKey

  The encryption key for the user

### publicKeyHandler

    protected PdfPublicKeySecurityHandler publicKeyHandler

  The public key security handler for certificate encryption

### permissions

    int permissions

### documentID

    byte[] documentID

### seq

    static long seq

### revision

    private int revision

### arcfour

    private ARCFOUREncryption arcfour

### keyLength

    private int keyLength

  The generic key length. It may be 40 or 128.

### encryptMetadata

    private boolean encryptMetadata

### embeddedFilesOnly

    private boolean embeddedFilesOnly

  Indicates if the encryption is only necessary for embedded files.

  Since:
    2.1.3

### cryptoMode

    private int cryptoMode

Constructor Detail

### PdfEncryption

    public PdfEncryption()

### PdfEncryption

    public PdfEncryption(PdfEncryption enc)

Method Detail

### setCryptoMode

    public void setCryptoMode(int mode,
                              int kl)

### getCryptoMode

    public int getCryptoMode()

### isMetadataEncrypted

    public boolean isMetadataEncrypted()

### isEmbeddedFilesOnly

    public boolean isEmbeddedFilesOnly()

  Indicates if only the embedded files have to be encrypted.

  Returns:
    if true only the embedded files will be encrypted
  Since:
    2.1.3

### padPassword

    private byte[] padPassword(byte[] userPassword)

### computeOwnerKey

    private byte[] computeOwnerKey(byte[] userPad,
                                   byte[] ownerPad)

### setupGlobalEncryptionKey

    private void setupGlobalEncryptionKey(byte[] documentID,
                                          byte[] userPad,
                                          byte[] ownerKey,
                                          int permissions)

  ownerKey, documentID must be setup

### setupUserKey

    private void setupUserKey()

  mkey must be setup

### setupAllKeys

    public void setupAllKeys(byte[] userPassword,
                             byte[] ownerPassword,
                             int permissions)

### createDocumentId

    public static byte[] createDocumentId()

### setupByUserPassword

    public void setupByUserPassword(byte[] documentID,
                                    byte[] userPassword,
                                    byte[] ownerKey,
                                    int permissions)

### setupByUserPad

    private void setupByUserPad(byte[] documentID,
                                byte[] userPad,
                                byte[] ownerKey,
                                int permissions)

### setupByOwnerPassword

    public void setupByOwnerPassword(byte[] documentID,
                                     byte[] ownerPassword,
                                     byte[] userKey,
                                     byte[] ownerKey,
                                     int permissions)

### setupByOwnerPad

    private void setupByOwnerPad(byte[] documentID,
                                 byte[] ownerPad,
                                 byte[] userKey,
                                 byte[] ownerKey,
                                 int permissions)

### setupByEncryptionKey

    public void setupByEncryptionKey(byte[] key,
                                     int keylength)

### setHashKey

    public void setHashKey(int number,
                           int generation)

### createInfoId

    public static PdfObject createInfoId(byte[] id)

### getEncryptionDictionary

    public PdfDictionary getEncryptionDictionary()

### getFileID

    public PdfObject getFileID()

### getEncryptionStream

    public OutputStreamEncryption getEncryptionStream(java.io.OutputStream os)

### calculateStreamSize

    public int calculateStreamSize(int n)

### encryptByteArray

    public byte[] encryptByteArray(byte[] b)

### getDecryptor

    public StandardDecryption getDecryptor()

### decryptByteArray

    public byte[] decryptByteArray(byte[] b)

### addRecipient

    public void addRecipient(java.security.cert.Certificate cert,
                             int permission)

### computeUserPassword

    public byte[] computeUserPassword(byte[] ownerPassword)

Hosted by Hostbasket