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.
-