Class StandardHandlerUsingAes256
- java.lang.Object
-
- com.itextpdf.kernel.crypto.securityhandler.SecurityHandler
-
- com.itextpdf.kernel.crypto.securityhandler.StandardSecurityHandler
-
- com.itextpdf.kernel.crypto.securityhandler.StandardHandlerUsingAes256
-
- Direct Known Subclasses:
StandardHandlerUsingAesGcm
public class StandardHandlerUsingAes256 extends StandardSecurityHandler
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
encryptMetadata
private boolean
isPdf2
private static int
KEY_SALT_OFFSET
private static int
SALT_LENGTH
private static int
VALIDATION_SALT_OFFSET
-
Fields inherited from class com.itextpdf.kernel.crypto.securityhandler.StandardSecurityHandler
permissions, PERMS_MASK_1_FOR_REVISION_2, PERMS_MASK_1_FOR_REVISION_3_OR_GREATER, PERMS_MASK_2, usedOwnerPassword
-
Fields inherited from class com.itextpdf.kernel.crypto.securityhandler.SecurityHandler
extra, md5, mkey, nextObjectKey, nextObjectKeySize
-
-
Constructor Summary
Constructors Constructor Description StandardHandlerUsingAes256(PdfDictionary encryptionDictionary, byte[] password)
StandardHandlerUsingAes256(PdfDictionary encryptionDictionary, byte[] userPassword, byte[] ownerPassword, int permissions, boolean encryptMetadata, boolean embeddedFilesOnly, PdfVersion version)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private byte[]
computeHash(byte[] password, byte[] salt, int saltOffset, int saltLen)
private byte[]
computeHash(byte[] password, byte[] salt, int saltOffset, int saltLen, byte[] userKey)
private byte[]
getAes256Perms(int permissions, boolean encryptMetadata)
IDecryptor
getDecryptor()
Gets decryptor object.OutputStreamEncryption
getEncryptionStream(java.io.OutputStream os)
Gets a stream wrapper, responsible for encryption.private void
initKeyAndFillDictionary(PdfDictionary encryptionDictionary, byte[] userPassword, byte[] ownerPassword, int permissions, boolean encryptMetadata, boolean embeddedFilesOnly)
private void
initKeyAndReadDictionary(PdfDictionary encryptionDictionary, byte[] password)
protected void
initMd5MessageDigest()
Init md5 message digest.boolean
isEncryptMetadata()
Checks whether the document-level metadata stream will be encrypted.(package private) boolean
isPdf2(PdfDictionary encryptionDictionary)
(package private) void
setAES256DicEntries(PdfDictionary encryptionDictionary, byte[] oeKey, byte[] ueKey, byte[] aes256Perms, boolean encryptMetadata, boolean embeddedFilesOnly)
(package private) void
setEncryptionDictionaryEntries(PdfDictionary encryptionDictionary, byte[] oeKey, byte[] ueKey, byte[] aes256Perms, boolean encryptMetadata, boolean embeddedFilesOnly, int version, int revision, PdfName cryptoFilter)
void
setHashKeyForNextObject(int objNumber, int objGeneration)
Note: For most of the supported security handlers algorithm to calculate encryption key for particular object is the same.void
setPermissions(int permissions, PdfDictionary encryptionDictionary)
Updates encryption dictionary with the security permissions provided.private byte[]
truncateArray(byte[] array)
-
Methods inherited from class com.itextpdf.kernel.crypto.securityhandler.StandardSecurityHandler
equalsArray, generateOwnerPasswordIfNullOrEmpty, getIsoBytes, getPermissions, isUsedOwnerPassword, setStandardHandlerDicEntries
-
Methods inherited from class com.itextpdf.kernel.crypto.securityhandler.SecurityHandler
getMkey, getNextObjectKey
-
-
-
-
Field Detail
-
VALIDATION_SALT_OFFSET
private static final int VALIDATION_SALT_OFFSET
- See Also:
- Constant Field Values
-
KEY_SALT_OFFSET
private static final int KEY_SALT_OFFSET
- See Also:
- Constant Field Values
-
SALT_LENGTH
private static final int SALT_LENGTH
- See Also:
- Constant Field Values
-
encryptMetadata
protected boolean encryptMetadata
-
isPdf2
private boolean isPdf2
-
-
Constructor Detail
-
StandardHandlerUsingAes256
public StandardHandlerUsingAes256(PdfDictionary encryptionDictionary, byte[] userPassword, byte[] ownerPassword, int permissions, boolean encryptMetadata, boolean embeddedFilesOnly, PdfVersion version)
-
StandardHandlerUsingAes256
public StandardHandlerUsingAes256(PdfDictionary encryptionDictionary, byte[] password)
-
-
Method Detail
-
isEncryptMetadata
public boolean isEncryptMetadata()
Checks whether the document-level metadata stream will be encrypted.- Returns:
true
if the document-level metadata stream shall be encrypted,false
otherwise
-
setHashKeyForNextObject
public void setHashKeyForNextObject(int objNumber, int objGeneration)
Description copied from class:SecurityHandler
Note: For most of the supported security handlers algorithm to calculate encryption key for particular object is the same.- Overrides:
setHashKeyForNextObject
in classSecurityHandler
- Parameters:
objNumber
- number of particular object for encryptionobjGeneration
- generation of particular object for encryption
-
getEncryptionStream
public OutputStreamEncryption getEncryptionStream(java.io.OutputStream os)
Description copied from class:SecurityHandler
Gets a stream wrapper, responsible for encryption.- Specified by:
getEncryptionStream
in classSecurityHandler
- Parameters:
os
-OutputStream
to be wrapped- Returns:
OutputStreamEncryption
, responsible for encryption.
-
getDecryptor
public IDecryptor getDecryptor()
Description copied from class:SecurityHandler
Gets decryptor object.- Specified by:
getDecryptor
in classSecurityHandler
- Returns:
IDecryptor
-
setPermissions
public void setPermissions(int permissions, PdfDictionary encryptionDictionary)
Updates encryption dictionary with the security permissions provided.- Overrides:
setPermissions
in classStandardSecurityHandler
- Parameters:
permissions
- new permissions to setencryptionDictionary
- encryption dictionary to update
-
setAES256DicEntries
void setAES256DicEntries(PdfDictionary encryptionDictionary, byte[] oeKey, byte[] ueKey, byte[] aes256Perms, boolean encryptMetadata, boolean embeddedFilesOnly)
-
setEncryptionDictionaryEntries
void setEncryptionDictionaryEntries(PdfDictionary encryptionDictionary, byte[] oeKey, byte[] ueKey, byte[] aes256Perms, boolean encryptMetadata, boolean embeddedFilesOnly, int version, int revision, PdfName cryptoFilter)
-
isPdf2
boolean isPdf2(PdfDictionary encryptionDictionary)
-
initMd5MessageDigest
protected void initMd5MessageDigest()
Init md5 message digest.- Overrides:
initMd5MessageDigest
in classSecurityHandler
-
initKeyAndFillDictionary
private void initKeyAndFillDictionary(PdfDictionary encryptionDictionary, byte[] userPassword, byte[] ownerPassword, int permissions, boolean encryptMetadata, boolean embeddedFilesOnly)
-
getAes256Perms
private byte[] getAes256Perms(int permissions, boolean encryptMetadata)
-
initKeyAndReadDictionary
private void initKeyAndReadDictionary(PdfDictionary encryptionDictionary, byte[] password)
-
computeHash
private byte[] computeHash(byte[] password, byte[] salt, int saltOffset, int saltLen) throws java.security.NoSuchAlgorithmException
- Throws:
java.security.NoSuchAlgorithmException
-
computeHash
private byte[] computeHash(byte[] password, byte[] salt, int saltOffset, int saltLen, byte[] userKey) throws java.security.NoSuchAlgorithmException
- Throws:
java.security.NoSuchAlgorithmException
-
truncateArray
private byte[] truncateArray(byte[] array)
-
-