Class PDEncryption
java.lang.Object
org.apache.pdfbox.pdmodel.encryption.PDEncryption
- All Implemented Interfaces:
COSObjectable
- Direct Known Subclasses:
PDEncryptionDictionary
This class is a specialized view of the encryption dictionary of a PDF document.
It contains a low level dictionary (COSDictionary) and provides the methods to
manage its fields.
The available fields are the ones who are involved by standard security handler
and public key security handler.
- Author:
- Ben Litchfield, Benoit Guillon
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
The default length for the encryption key.static final String
The default security handler.static final int
The default version, according to the PDF Reference.static final int
See PDF Reference 1.4 Table 3.13.static final int
See PDF Reference 1.4 Table 3.13.static final int
See PDF Reference 1.4 Table 3.13.static final int
See PDF Reference 1.4 Table 3.13.static final int
See PDF Reference 1.4 Table 3.13. -
Constructor Summary
ConstructorsConstructorDescriptioncreates a new empty encryption dictionary.PDEncryption
(COSDictionary dictionary) creates a new encryption dictionary from the low level dictionary provided. -
Method Summary
Modifier and TypeMethodDescriptionDeprecated.This will get the dictionary associated with this encryption dictionary.getCryptFilterDictionary
(COSName cryptFilterName) Returns the crypt filter with the given name.Returns the default crypt filter (for public-key security handler).final String
Get the name of the filter.int
This will return the Length entry of the encryption dictionary.
The length in bits for the encryption algorithm.byte[]
This will get the OE entry in the standard encryption dictionary.byte[]
This will get the O entry in the standard encryption dictionary.int
This will get the permissions bit mask.byte[]
getPerms()
Get the Perms entry in the encryption dictionary.int
Returns the number of recipients contained in the Recipients field of the dictionary.getRecipientStringAt
(int i) returns the COSString contained in the Recipients field at position i.int
This will return the R entry of the encryption dictionary.
See PDF Reference 1.4 Table 3.14.Returns the security handler specified in the dictionary's Filter entry.Returns the standard crypt filter.Returns the name of the filter which is used for de/encrypting streams.Returns the name of the filter which is used for de/encrypting strings.Get the name of the subfilter.byte[]
This will get the UE entry in the standard encryption dictionary.byte[]
This will get the U entry in the standard encryption dictionary.int
This will return the V entry of the encryption dictionary.
See PDF Reference 1.4 Table 3.13.boolean
Returns true if the security handler specified in the dictionary's Filter is available.boolean
Will get the EncryptMetaData dictionary info.void
remove CF, StmF, and StrF entries.void
setCryptFilterDictionary
(COSName cryptFilterName, PDCryptFilterDictionary cryptFilterDictionary) Sets the crypt filter with the given name.void
setDefaultCryptFilterDictionary
(PDCryptFilterDictionary defaultFilterDictionary) Sets the default crypt filter (for public-key security handler).void
Sets the filter entry of the encryption dictionary.void
setLength
(int length) This will set the number of bits to use for the encryption algorithm.void
setOwnerEncryptionKey
(byte[] oe) This will set the OE entry in the standard encryption dictionary.void
setOwnerKey
(byte[] o) This will set the O entry in the standard encryption dictionary.void
setPermissions
(int permissions) This will set the permissions bit mask.void
setPerms
(byte[] perms) Set the Perms entry in the encryption dictionary.void
setRecipients
(byte[][] recipients) This will set the Recipients field of the dictionary.void
setRevision
(int revision) This will set the R entry of the encryption dictionary.
See PDF Reference 1.4 Table 3.14.void
setSecurityHandler
(SecurityHandler securityHandler) Sets the security handler used in this encryption dictionaryvoid
setStdCryptFilterDictionary
(PDCryptFilterDictionary cryptFilterDictionary) Sets the standard crypt filter.void
setStreamFilterName
(COSName streamFilterName) Sets the name of the filter which is used for de/encrypting streams.void
setStringFilterName
(COSName stringFilterName) Sets the name of the filter which is used for de/encrypting strings.void
setSubFilter
(String subfilter) Set the subfilter entry of the encryption dictionary.void
setUserEncryptionKey
(byte[] ue) This will set the UE entry in the standard encryption dictionary.void
setUserKey
(byte[] u) This will set the U entry in the standard encryption dictionary.void
setVersion
(int version) This will set the V entry of the encryption dictionary.
See PDF Reference 1.4 Table 3.13.
-
Field Details
-
VERSION0_UNDOCUMENTED_UNSUPPORTED
public static final int VERSION0_UNDOCUMENTED_UNSUPPORTEDSee PDF Reference 1.4 Table 3.13.- See Also:
-
VERSION1_40_BIT_ALGORITHM
public static final int VERSION1_40_BIT_ALGORITHMSee PDF Reference 1.4 Table 3.13.- See Also:
-
VERSION2_VARIABLE_LENGTH_ALGORITHM
public static final int VERSION2_VARIABLE_LENGTH_ALGORITHMSee PDF Reference 1.4 Table 3.13.- See Also:
-
VERSION3_UNPUBLISHED_ALGORITHM
public static final int VERSION3_UNPUBLISHED_ALGORITHMSee PDF Reference 1.4 Table 3.13.- See Also:
-
VERSION4_SECURITY_HANDLER
public static final int VERSION4_SECURITY_HANDLERSee PDF Reference 1.4 Table 3.13.- See Also:
-
DEFAULT_NAME
The default security handler.- See Also:
-
DEFAULT_LENGTH
public static final int DEFAULT_LENGTHThe default length for the encryption key.- See Also:
-
DEFAULT_VERSION
public static final int DEFAULT_VERSIONThe default version, according to the PDF Reference.- See Also:
-
-
Constructor Details
-
PDEncryption
public PDEncryption()creates a new empty encryption dictionary. -
PDEncryption
creates a new encryption dictionary from the low level dictionary provided.- Parameters:
dictionary
- a COS encryption dictionary
-
-
Method Details
-
getSecurityHandler
Returns the security handler specified in the dictionary's Filter entry.- Returns:
- a security handler instance
- Throws:
IOException
- if there is no security handler available which matches the Filter
-
setSecurityHandler
Sets the security handler used in this encryption dictionary- Parameters:
securityHandler
- new security handler
-
hasSecurityHandler
public boolean hasSecurityHandler()Returns true if the security handler specified in the dictionary's Filter is available.- Returns:
- true if the security handler is available
-
getCOSDictionary
Deprecated.usegetCOSObject()
This will get the dictionary associated with this encryption dictionary.- Returns:
- The COS dictionary that this object wraps.
-
getCOSObject
This will get the dictionary associated with this encryption dictionary.- Specified by:
getCOSObject
in interfaceCOSObjectable
- Returns:
- The COS dictionary that this object wraps.
-
setFilter
Sets the filter entry of the encryption dictionary.- Parameters:
filter
- The filter name.
-
getFilter
Get the name of the filter.- Returns:
- The filter name contained in this encryption dictionary.
-
getSubFilter
Get the name of the subfilter.- Returns:
- The subfilter name contained in this encryption dictionary.
-
setSubFilter
Set the subfilter entry of the encryption dictionary.- Parameters:
subfilter
- The value of the subfilter field.
-
setVersion
public void setVersion(int version) This will set the V entry of the encryption dictionary.
See PDF Reference 1.4 Table 3.13.
Note: This value is used to decrypt the pdf document. If you change this when the document is encrypted then decryption will fail!.- Parameters:
version
- The new encryption version.
-
getVersion
public int getVersion()This will return the V entry of the encryption dictionary.
See PDF Reference 1.4 Table 3.13.- Returns:
- The encryption version to use.
-
setLength
public void setLength(int length) This will set the number of bits to use for the encryption algorithm.- Parameters:
length
- The new key length.
-
getLength
public int getLength()This will return the Length entry of the encryption dictionary.
The length in bits for the encryption algorithm. This will return a multiple of 8.- Returns:
- The length in bits for the encryption algorithm
-
setRevision
public void setRevision(int revision) This will set the R entry of the encryption dictionary.
See PDF Reference 1.4 Table 3.14.
Note: This value is used to decrypt the pdf document. If you change this when the document is encrypted then decryption will fail!.- Parameters:
revision
- The new encryption version.
-
getRevision
public int getRevision()This will return the R entry of the encryption dictionary.
See PDF Reference 1.4 Table 3.14.- Returns:
- The encryption revision to use.
-
setOwnerKey
This will set the O entry in the standard encryption dictionary.- Parameters:
o
- A 32 byte array or null if there is no owner key.- Throws:
IOException
- If there is an error setting the data.
-
getOwnerKey
This will get the O entry in the standard encryption dictionary.- Returns:
- A 32 byte array or null if there is no owner key.
- Throws:
IOException
- If there is an error accessing the data.
-
setUserKey
This will set the U entry in the standard encryption dictionary.- Parameters:
u
- A 32 byte array.- Throws:
IOException
- If there is an error setting the data.
-
getUserKey
This will get the U entry in the standard encryption dictionary.- Returns:
- A 32 byte array or null if there is no user key.
- Throws:
IOException
- If there is an error accessing the data.
-
setOwnerEncryptionKey
This will set the OE entry in the standard encryption dictionary.- Parameters:
oe
- A 32 byte array or null if there is no owner encryption key.- Throws:
IOException
- If there is an error setting the data.
-
getOwnerEncryptionKey
This will get the OE entry in the standard encryption dictionary.- Returns:
- A 32 byte array or null if there is no owner encryption key.
- Throws:
IOException
- If there is an error accessing the data.
-
setUserEncryptionKey
This will set the UE entry in the standard encryption dictionary.- Parameters:
ue
- A 32 byte array or null if there is no user encryption key.- Throws:
IOException
- If there is an error setting the data.
-
getUserEncryptionKey
This will get the UE entry in the standard encryption dictionary.- Returns:
- A 32 byte array or null if there is no user encryption key.
- Throws:
IOException
- If there is an error accessing the data.
-
setPermissions
public void setPermissions(int permissions) This will set the permissions bit mask.- Parameters:
permissions
- The new permissions bit mask
-
getPermissions
public int getPermissions()This will get the permissions bit mask.- Returns:
- The permissions bit mask.
-
isEncryptMetaData
public boolean isEncryptMetaData()Will get the EncryptMetaData dictionary info.- Returns:
- true if EncryptMetaData is explicitly set to false (the default is true)
-
setRecipients
This will set the Recipients field of the dictionary. This field contains an array of string.- Parameters:
recipients
- the array of bytes arrays to put in the Recipients field.- Throws:
IOException
- If there is an error setting the data.
-
getRecipientsLength
public int getRecipientsLength()Returns the number of recipients contained in the Recipients field of the dictionary.- Returns:
- the number of recipients contained in the Recipients field.
-
getRecipientStringAt
returns the COSString contained in the Recipients field at position i.- Parameters:
i
- the position in the Recipients field array.- Returns:
- a COSString object containing information about the recipient number i.
-
getStdCryptFilterDictionary
Returns the standard crypt filter.- Returns:
- the standard crypt filter if available.
-
getDefaultCryptFilterDictionary
Returns the default crypt filter (for public-key security handler).- Returns:
- the default crypt filter if available.
-
getCryptFilterDictionary
Returns the crypt filter with the given name.- Parameters:
cryptFilterName
- the name of the crypt filter- Returns:
- the crypt filter with the given name if available
-
setCryptFilterDictionary
public void setCryptFilterDictionary(COSName cryptFilterName, PDCryptFilterDictionary cryptFilterDictionary) Sets the crypt filter with the given name.- Parameters:
cryptFilterName
- the name of the crypt filtercryptFilterDictionary
- the crypt filter to set
-
setStdCryptFilterDictionary
Sets the standard crypt filter.- Parameters:
cryptFilterDictionary
- the standard crypt filter to set
-
setDefaultCryptFilterDictionary
Sets the default crypt filter (for public-key security handler).- Parameters:
defaultFilterDictionary
- the standard crypt filter to set
-
getStreamFilterName
Returns the name of the filter which is used for de/encrypting streams. Default value is "Identity".- Returns:
- the name of the filter
-
setStreamFilterName
Sets the name of the filter which is used for de/encrypting streams.- Parameters:
streamFilterName
- the name of the filter
-
getStringFilterName
Returns the name of the filter which is used for de/encrypting strings. Default value is "Identity".- Returns:
- the name of the filter
-
setStringFilterName
Sets the name of the filter which is used for de/encrypting strings.- Parameters:
stringFilterName
- the name of the filter
-
setPerms
Set the Perms entry in the encryption dictionary.- Parameters:
perms
- A 16 byte array.- Throws:
IOException
- If there is an error setting the data.
-
getPerms
Get the Perms entry in the encryption dictionary.- Returns:
- A 16 byte array or null if there is no Perms entry.
- Throws:
IOException
- If there is an error accessing the data.
-
removeV45filters
public void removeV45filters()remove CF, StmF, and StrF entries. This is to be called if V is not 4 or 5.
-
getCOSObject()