Class StandardSecurityHandler

    • Field Detail

      • FILTER

        public static final java.lang.String FILTER
        Type of security handler.
        See Also:
        Constant Field Values
      • PROTECTION_POLICY_CLASS

        public static final java.lang.Class<?> PROTECTION_POLICY_CLASS
        Protection policy class for this handler.
      • ENCRYPT_PADDING

        public static final byte[] ENCRYPT_PADDING
        Standard padding for encryption.
    • Constructor Detail

      • StandardSecurityHandler

        public StandardSecurityHandler()
        Constructor.
      • StandardSecurityHandler

        public StandardSecurityHandler​(StandardProtectionPolicy p)
        Constructor used for encryption.
        Parameters:
        p - The protection policy.
    • Method Detail

      • isOwnerPassword

        public final boolean isOwnerPassword​(byte[] ownerPassword,
                                             byte[] u,
                                             byte[] o,
                                             int permissions,
                                             byte[] id,
                                             int encRevision,
                                             int length,
                                             boolean encryptMetadata)
                                      throws CryptographyException,
                                             java.io.IOException
        Check for owner password.
        Parameters:
        ownerPassword - The owner password.
        u - The u entry of the encryption dictionary.
        o - The o entry of the encryption dictionary.
        permissions - The set of permissions on the document.
        id - The document id.
        encRevision - The encryption algorithm revision.
        length - The encryption key length.
        encryptMetadata - The encryption metadata
        Returns:
        True If the ownerPassword param is the owner password.
        Throws:
        CryptographyException - If there is an error during encryption.
        java.io.IOException - If there is an error accessing data.
      • getUserPassword

        public final byte[] getUserPassword​(byte[] ownerPassword,
                                            byte[] o,
                                            int encRevision,
                                            int length)
                                     throws CryptographyException,
                                            java.io.IOException
        Get the user password based on the owner password.
        Parameters:
        ownerPassword - The plaintext owner password.
        o - The o entry of the encryption dictionary.
        encRevision - The encryption revision number.
        length - The key length.
        Returns:
        The u entry of the encryption dictionary.
        Throws:
        CryptographyException - If there is an error generating the user password.
        java.io.IOException - If there is an error accessing data while generating the user password.
      • computeEncryptedKey

        public final byte[] computeEncryptedKey​(byte[] password,
                                                byte[] o,
                                                int permissions,
                                                byte[] id,
                                                int encRevision,
                                                int length,
                                                boolean encryptMetadata)
                                         throws CryptographyException
        Compute the encryption key.
        Parameters:
        password - The password to compute the encrypted key.
        o - The o entry of the encryption dictionary.
        permissions - The permissions for the document.
        id - The document id.
        encRevision - The revision of the encryption algorithm.
        length - The length of the encryption key.
        encryptMetadata - The encryption metadata
        Returns:
        The encrypted key bytes.
        Throws:
        CryptographyException - If there is an error with encryption.
      • computeUserPassword

        public final byte[] computeUserPassword​(byte[] password,
                                                byte[] o,
                                                int permissions,
                                                byte[] id,
                                                int encRevision,
                                                int length,
                                                boolean encryptMetadata)
                                         throws CryptographyException,
                                                java.io.IOException
        This will compute the user password hash.
        Parameters:
        password - The plain text password.
        o - The owner password hash.
        permissions - The document permissions.
        id - The document id.
        encRevision - The revision of the encryption.
        length - The length of the encryption key.
        encryptMetadata - The encryption metadata
        Returns:
        The user password.
        Throws:
        CryptographyException - If there is an error computing the user password.
        java.io.IOException - If there is an IO error.
      • computeOwnerPassword

        public final byte[] computeOwnerPassword​(byte[] ownerPassword,
                                                 byte[] userPassword,
                                                 int encRevision,
                                                 int length)
                                          throws CryptographyException,
                                                 java.io.IOException
        Compute the owner entry in the encryption dictionary.
        Parameters:
        ownerPassword - The plaintext owner password.
        userPassword - The plaintext user password.
        encRevision - The revision number of the encryption algorithm.
        length - The length of the encryption key.
        Returns:
        The o entry of the encryption dictionary.
        Throws:
        CryptographyException - If there is an error with encryption.
        java.io.IOException - If there is an error accessing data.
      • isUserPassword

        public final boolean isUserPassword​(byte[] password,
                                            byte[] u,
                                            byte[] o,
                                            int permissions,
                                            byte[] id,
                                            int encRevision,
                                            int length,
                                            boolean encryptMetadata)
                                     throws CryptographyException,
                                            java.io.IOException
        Check if a plaintext password is the user password.
        Parameters:
        password - The plaintext password.
        u - The u entry of the encryption dictionary.
        o - The o entry of the encryption dictionary.
        permissions - The permissions set in the the PDF.
        id - The document id used for encryption.
        encRevision - The revision of the encryption algorithm.
        length - The length of the encryption key.
        encryptMetadata - The encryption metadata
        Returns:
        true If the plaintext password is the user password.
        Throws:
        CryptographyException - If there is an error during encryption.
        java.io.IOException - If there is an error accessing data.
      • isUserPassword

        public final boolean isUserPassword​(java.lang.String password,
                                            byte[] u,
                                            byte[] o,
                                            int permissions,
                                            byte[] id,
                                            int encRevision,
                                            int length,
                                            boolean encryptMetadata)
                                     throws CryptographyException,
                                            java.io.IOException
        Check if a plaintext password is the user password.
        Parameters:
        password - The plaintext password.
        u - The u entry of the encryption dictionary.
        o - The o entry of the encryption dictionary.
        permissions - The permissions set in the the PDF.
        id - The document id used for encryption.
        encRevision - The revision of the encryption algorithm.
        length - The length of the encryption key.
        encryptMetadata - The encryption metadata
        Returns:
        true If the plaintext password is the user password.
        Throws:
        CryptographyException - If there is an error during encryption.
        java.io.IOException - If there is an error accessing data.
      • isOwnerPassword

        public final boolean isOwnerPassword​(java.lang.String password,
                                             byte[] u,
                                             byte[] o,
                                             int permissions,
                                             byte[] id,
                                             int encRevision,
                                             int length,
                                             boolean encryptMetadata)
                                      throws CryptographyException,
                                             java.io.IOException
        Check for owner password.
        Parameters:
        password - The owner password.
        u - The u entry of the encryption dictionary.
        o - The o entry of the encryption dictionary.
        permissions - The set of permissions on the document.
        id - The document id.
        encRevision - The encryption algorithm revision.
        length - The encryption key length.
        encryptMetadata - The encryption metadata
        Returns:
        True If the ownerPassword param is the owner password.
        Throws:
        CryptographyException - If there is an error during encryption.
        java.io.IOException - If there is an error accessing data.
      • hasProtectionPolicy

        public boolean hasProtectionPolicy()
        Returns whether a protection policy has been set.
        Specified by:
        hasProtectionPolicy in class SecurityHandler
        Returns:
        true if a protection policy has been set.