public class StandardSecurityHandler extends SecurityHandler
to see how to protect document with this security handler.
Modifier and Type | Field and Description |
---|---|
static byte[] |
ENCRYPT_PADDING
Standard padding for encryption.
|
static String |
FILTER
Type of security handler.
|
static Class<?> |
PROTECTION_POLICY_CLASS
Protection policy class for this handler.
|
currentAccessPermission, decryptMetadata, document, encryptionKey, keyLength, version
Constructor and Description |
---|
StandardSecurityHandler()
Constructor.
|
StandardSecurityHandler(StandardProtectionPolicy p)
Constructor used for encryption.
|
Modifier and Type | Method and Description |
---|---|
byte[] |
computeEncryptedKey(byte[] password,
byte[] o,
int permissions,
byte[] id,
int encRevision,
int length,
boolean encryptMetadata)
Compute the encryption key.
|
byte[] |
computeOwnerPassword(byte[] ownerPassword,
byte[] userPassword,
int encRevision,
int length)
Compute the owner entry in the encryption dictionary.
|
byte[] |
computeUserPassword(byte[] password,
byte[] o,
int permissions,
byte[] id,
int encRevision,
int length,
boolean encryptMetadata)
This will compute the user password hash.
|
void |
decryptDocument(PDDocument doc,
DecryptionMaterial decryptionMaterial)
Decrypt the document.
|
byte[] |
getUserPassword(byte[] ownerPassword,
byte[] o,
int encRevision,
int length)
Get the user password based on the owner password.
|
boolean |
hasProtectionPolicy()
Returns whether a protection policy has been set.
|
boolean |
isOwnerPassword(byte[] ownerPassword,
byte[] u,
byte[] o,
int permissions,
byte[] id,
int encRevision,
int length,
boolean encryptMetadata)
Check for owner password.
|
boolean |
isOwnerPassword(String password,
byte[] u,
byte[] o,
int permissions,
byte[] id,
int encRevision,
int length,
boolean encryptMetadata)
Check for owner password.
|
boolean |
isUserPassword(byte[] password,
byte[] u,
byte[] o,
int permissions,
byte[] id,
int encRevision,
int length,
boolean encryptMetadata)
Check if a plaintext password is the user password.
|
boolean |
isUserPassword(String password,
byte[] u,
byte[] o,
int permissions,
byte[] id,
int encRevision,
int length,
boolean encryptMetadata)
Check if a plaintext password is the user password.
|
void |
prepareDocumentForEncryption(PDDocument doc)
Prepare document for encryption.
|
void |
prepareForDecryption(PDEncryptionDictionary encDictionary,
COSArray documentIDArray,
DecryptionMaterial decryptionMaterial)
Prepares everything to decrypt the document.
|
decryptArray, decryptStream, decryptString, encryptData, encryptData, encryptStream, encryptString, getCurrentAccessPermission, getKeyLength, isAES, proceedDecryption, setAES, setKeyLength
public static final String FILTER
public static final Class<?> PROTECTION_POLICY_CLASS
public static final byte[] ENCRYPT_PADDING
public StandardSecurityHandler()
public StandardSecurityHandler(StandardProtectionPolicy p)
p
- The protection policy.public void decryptDocument(PDDocument doc, DecryptionMaterial decryptionMaterial) throws CryptographyException, IOException
decryptDocument
in class SecurityHandler
doc
- The document to be decrypted.decryptionMaterial
- Information used to decrypt the document.IOException
- If there is an error accessing data.CryptographyException
- If there is an error with decryption.public void prepareForDecryption(PDEncryptionDictionary encDictionary, COSArray documentIDArray, DecryptionMaterial decryptionMaterial) throws CryptographyException, IOException
decryptDocument(PDDocument, DecryptionMaterial)
is used, this method is
called from there. Only if decryption of single objects is needed this should be called instead.prepareForDecryption
in class SecurityHandler
encDictionary
- encryption dictionary, can be retrieved via PDDocument.getEncryptionDictionary()
documentIDArray
- document id which is returned via COSDocument.getDocumentID()
decryptionMaterial
- Information used to decrypt the document.IOException
- If there is an error accessing data.CryptographyException
- If there is an error with decryption.public void prepareDocumentForEncryption(PDDocument doc) throws CryptographyException, IOException
prepareDocumentForEncryption
in class SecurityHandler
doc
- The documeent to encrypt.IOException
- If there is an error accessing data.CryptographyException
- If there is an error with decryption.public final boolean isOwnerPassword(byte[] ownerPassword, byte[] u, byte[] o, int permissions, byte[] id, int encRevision, int length, boolean encryptMetadata) throws CryptographyException, IOException
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 metadataCryptographyException
- If there is an error during encryption.IOException
- If there is an error accessing data.public final byte[] getUserPassword(byte[] ownerPassword, byte[] o, int encRevision, int length) throws CryptographyException, IOException
ownerPassword
- The plaintext owner password.o
- The o entry of the encryption dictionary.encRevision
- The encryption revision number.length
- The key length.CryptographyException
- If there is an error generating the user password.IOException
- If there is an error accessing data while generating the user password.public final byte[] computeEncryptedKey(byte[] password, byte[] o, int permissions, byte[] id, int encRevision, int length, boolean encryptMetadata) throws CryptographyException
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 metadataCryptographyException
- If there is an error with encryption.public final byte[] computeUserPassword(byte[] password, byte[] o, int permissions, byte[] id, int encRevision, int length, boolean encryptMetadata) throws CryptographyException, IOException
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 metadataCryptographyException
- If there is an error computing the user password.IOException
- If there is an IO error.public final byte[] computeOwnerPassword(byte[] ownerPassword, byte[] userPassword, int encRevision, int length) throws CryptographyException, IOException
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.CryptographyException
- If there is an error with encryption.IOException
- If there is an error accessing data.public final boolean isUserPassword(byte[] password, byte[] u, byte[] o, int permissions, byte[] id, int encRevision, int length, boolean encryptMetadata) throws CryptographyException, IOException
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 metadataCryptographyException
- If there is an error during encryption.IOException
- If there is an error accessing data.public final boolean isUserPassword(String password, byte[] u, byte[] o, int permissions, byte[] id, int encRevision, int length, boolean encryptMetadata) throws CryptographyException, IOException
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 metadataCryptographyException
- If there is an error during encryption.IOException
- If there is an error accessing data.public final boolean isOwnerPassword(String password, byte[] u, byte[] o, int permissions, byte[] id, int encRevision, int length, boolean encryptMetadata) throws CryptographyException, IOException
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 metadataCryptographyException
- If there is an error during encryption.IOException
- If there is an error accessing data.public boolean hasProtectionPolicy()
hasProtectionPolicy
in class SecurityHandler
Copyright © 2002-2016 The Apache Software Foundation. All Rights Reserved.