Package org.verapdf.tools
Class EncryptionToolsRevision4
java.lang.Object
org.verapdf.tools.EncryptionToolsRevision4
Contains methods for encryption and decryption of PDF files.
- Author:
- Sergey Shemyakov
-
Method Summary
Modifier and TypeMethodDescriptionstatic byte[]
authenticateUserPassword
(String password, byte[] o, int p, byte[] id, int revision, boolean metadataIsEncrypted, int length, byte[] u) Authenticates user password and returns encryption key if password is correct.static byte[]
computeEncryptionKey
(String password, byte[] o, int p, byte[] id, int revision, boolean metadataIsEncrypted, int length) Method computes encryption key for given data as specified in 7.6.3.3.static byte[]
computeOValue
(String ownerPassword, int revision, int length, String userPassword) Method computes O value in standard encryption dict for standard security handler as specified in 7.6.3.4.static byte[]
computeUValue
(String password, byte[] o, int p, byte[] id, int revision, boolean metadataIsEncrypted, int length) Method computes U value in standard encryption dict for standard security handler as specified in 7.6.3.4.static byte[]
intToBytesLowOrderFirst
(long p) Represents given integer as byte array where low-order bytes go first.
-
Method Details
-
computeEncryptionKey
public static byte[] computeEncryptionKey(String password, byte[] o, int p, byte[] id, int revision, boolean metadataIsEncrypted, int length) throws NoSuchAlgorithmException Method computes encryption key for given data as specified in 7.6.3.3. Algorithm 2 of PDF32000_2008.- Parameters:
password
- is password string.o
- is O value of encryption dict for standard security handler.p
- is P value of encryption dict for standard security handler.id
- is the value of the ID entry in the document’s trailer dict.revision
- is R value of encryption dict for standard security handler.metadataIsEncrypted
- is true if metadata in file is encrypted.length
- is value of Length in encryption dict.- Returns:
- encryption key.
- Throws:
NoSuchAlgorithmException
-
computeOValue
public static byte[] computeOValue(String ownerPassword, int revision, int length, String userPassword) throws NoSuchAlgorithmException Method computes O value in standard encryption dict for standard security handler as specified in 7.6.3.4. Algorithm 3 of PDF32000_2008.- Parameters:
ownerPassword
- is owner password.revision
- is R value of encryption dict for standard security handler.length
- is value of Length in encryption dict.userPassword
- is user password.- Returns:
- value of O for encryption dict for standard security handler.
- Throws:
NoSuchAlgorithmException
-
computeUValue
public static byte[] computeUValue(String password, byte[] o, int p, byte[] id, int revision, boolean metadataIsEncrypted, int length) throws NoSuchAlgorithmException Method computes U value in standard encryption dict for standard security handler as specified in 7.6.3.4. Algorithm 4 and 5 of PDF32000_2008.- Parameters:
password
- is user password.o
- is O value of encryption dict for standard security handler.p
- is P value of encryption dict for standard security handler.id
- is the value of the ID entry in the document’s trailer dict.revision
- is R value of encryption dict for standard security handler.metadataIsEncrypted
- is true if metadata in file is encrypted.length
- is value of Length in encryption dict.- Returns:
- value of U for encryption dict for standard security handler.
- Throws:
NoSuchAlgorithmException
-
authenticateUserPassword
public static byte[] authenticateUserPassword(String password, byte[] o, int p, byte[] id, int revision, boolean metadataIsEncrypted, int length, byte[] u) throws NoSuchAlgorithmException Authenticates user password and returns encryption key if password is correct.- Parameters:
password
- is string to be checked.o
- is O value of encryption dict for standard security handler.p
- is P value of encryption dict for standard security handler.id
- is the value of the ID entry in the document’s trailer dict.revision
- is R value of encryption dict for standard security handler.metadataIsEncrypted
- is true if metadata in file is encrypted.length
- is value of Length in encryption dict.u
- is U value of encryption dict for standard security handler.- Returns:
- null if password is incorrect and encryption key if it is correct.
- Throws:
NoSuchAlgorithmException
-
intToBytesLowOrderFirst
public static byte[] intToBytesLowOrderFirst(long p) Represents given integer as byte array where low-order bytes go first.- Parameters:
p
- is integer.- Returns:
- array of 4 bytes that represent this number as unsigned 32-bit integer, low-order bytes go first.
-