Class PdfEncryption


  • public class PdfEncryption
    extends java.lang.Object
    • Field Detail

      • STANDARD_ENCRYPTION_128

        public static final int STANDARD_ENCRYPTION_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
      • ownerKey

        byte[] ownerKey
        The encryption key for the owner
      • userKey

        byte[] userKey
        The encryption key for the user
      • oeKey

        byte[] oeKey
      • ueKey

        byte[] ueKey
      • perms

        byte[] perms
      • permissions

        long permissions
      • documentID

        byte[] documentID
      • revision

        private int revision
      • keyLength

        private int keyLength
        The generic key length. It may be 40 or 128.
      • extra

        byte[] extra
        Work area to prepare the object/generation bytes
      • md5

        java.security.MessageDigest md5
        The message digest algorithm MD5
      • encryptMetadata

        private boolean encryptMetadata
      • seq

        static long seq
      • embeddedFilesOnly

        private boolean embeddedFilesOnly
        Indicates if the encryption is only necessary for embedded files.
        Since:
        2.1.3
      • cryptoMode

        private int cryptoMode
      • VALIDATION_SALT_OFFSET

        private static final int VALIDATION_SALT_OFFSET
        See Also:
        Constant Field Values
    • Constructor Detail

      • PdfEncryption

        public PdfEncryption()
    • Method Detail

      • setCryptoMode

        public void setCryptoMode​(int mode,
                                  int kl)
      • getCryptoMode

        public int getCryptoMode()
      • isMetadataEncrypted

        public boolean isMetadataEncrypted()
      • getPermissions

        public long getPermissions()
      • 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,
                                              long permissions)
        ownerKey, documentID must be setup
      • setupUserKey

        private void setupUserKey()
        mkey must be setup
      • setupAllKeys

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

        private static boolean compareArray​(byte[] a,
                                            byte[] b,
                                            int len)
      • createDocumentId

        public static byte[] createDocumentId()
      • setupByUserPassword

        public void setupByUserPassword​(byte[] documentID,
                                        byte[] userPassword,
                                        byte[] ownerKey,
                                        long permissions)
      • setupByUserPad

        private void setupByUserPad​(byte[] documentID,
                                    byte[] userPad,
                                    byte[] ownerKey,
                                    long permissions)
      • setupByOwnerPassword

        public void setupByOwnerPassword​(byte[] documentID,
                                         byte[] ownerPassword,
                                         byte[] userKey,
                                         byte[] ownerKey,
                                         long permissions)
      • setupByOwnerPad

        private void setupByOwnerPad​(byte[] documentID,
                                     byte[] ownerPad,
                                     byte[] userKey,
                                     byte[] ownerKey,
                                     long permissions)
      • setKey

        public void setKey​(byte[] key)
      • setupByEncryptionKey

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

        public void setHashKey​(int number,
                               int generation)
      • createInfoId

        public static PdfObject createInfoId​(byte[] id,
                                             boolean modified)
                                      throws java.io.IOException
        Throws:
        java.io.IOException
      • getEncryptionDictionary

        public PdfDictionary getEncryptionDictionary()
      • getFileID

        public PdfObject getFileID​(boolean modified)
                            throws java.io.IOException
        Throws:
        java.io.IOException
      • calculateStreamSize

        public int calculateStreamSize​(int n)
      • encryptByteArray

        public byte[] encryptByteArray​(byte[] b)
      • decryptByteArray

        public byte[] decryptByteArray​(byte[] b)
      • addRecipient

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

        public byte[] computeUserPassword​(byte[] ownerPassword)
        Computes user password if standard encryption handler is used with Standard40, Standard128 or AES128 algorithm (Revision 2 - 4).
        Parameters:
        ownerPassword - owner password of the encrypted document.
        Returns:
        user password, or null if revision 5 (AES256) or greater of standard encryption handler was used.