org.apache.pdfbox.pdmodel.encryption
Class PDEncryptionDictionary

java.lang.Object
  extended by org.apache.pdfbox.pdmodel.encryption.PDEncryptionDictionary
Direct Known Subclasses:
PDStandardEncryption

public class PDEncryptionDictionary
extends Object

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.

Version:
$Revision: 1.7 $
Author:
Ben Litchfield, Benoit Guillon (benoit.guillon@snv.jussieu.fr)

Field Summary
static int DEFAULT_LENGTH
          The default length for the encryption key.
static String DEFAULT_NAME
          The default security handler.
static int DEFAULT_VERSION
          The default version, according to the PDF Reference.
protected  COSDictionary encryptionDictionary
          COS encryption dictionary.
static int VERSION0_UNDOCUMENTED_UNSUPPORTED
          See PDF Reference 1.4 Table 3.13.
static int VERSION1_40_BIT_ALGORITHM
          See PDF Reference 1.4 Table 3.13.
static int VERSION2_VARIABLE_LENGTH_ALGORITHM
          See PDF Reference 1.4 Table 3.13.
static int VERSION3_UNPUBLISHED_ALGORITHM
          See PDF Reference 1.4 Table 3.13.
static int VERSION4_SECURITY_HANDLER
          See PDF Reference 1.4 Table 3.13.
 
Constructor Summary
PDEncryptionDictionary()
          creates a new empty encryption dictionary.
PDEncryptionDictionary(COSDictionary d)
          creates a new encryption dictionary from the low level dictionary provided.
 
Method Summary
 COSDictionary getCOSDictionary()
          This will get the dictionary associated with this encryption dictionary.
 PDCryptFilterDictionary getCryptFilterDictionary(COSName cryptFilterName)
          Returns the crypt filter with the given name.
 String getFilter()
          Get the name of the filter.
 int getLength()
          This will return the Length entry of the encryption dictionary.
 byte[] getOwnerKey()
          This will get the O entry in the standard encryption dictionary.
 int getPermissions()
          This will get the permissions bit mask.
 int getRecipientsLength()
          Returns the number of recipients contained in the Recipients field of the dictionary.
 COSString getRecipientStringAt(int i)
          returns the COSString contained in the Recipients field at position i.
 int getRevision()
          This will return the R entry of the encryption dictionary.
 PDCryptFilterDictionary getStdCryptFilterDictionary()
          Returns the standard crypt filter.
 COSName getStreamFilterName()
          Returns the name of the filter which is used for de/encrypting streams.
 COSName getStringFilterName()
          Returns the name of the filter which is used for de/encrypting strings.
 String getSubFilter()
          Get the name of the subfilter.
 byte[] getUserKey()
          This will get the U entry in the standard encryption dictionary.
 int getVersion()
          This will return the V entry of the encryption dictionary.
 void setFilter(String filter)
          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 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 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.
 void setSubFilter(String subfilter)
          Set the subfilter entry of the 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

VERSION0_UNDOCUMENTED_UNSUPPORTED

public static final int VERSION0_UNDOCUMENTED_UNSUPPORTED
See PDF Reference 1.4 Table 3.13.

See Also:
Constant Field Values

VERSION1_40_BIT_ALGORITHM

public static final int VERSION1_40_BIT_ALGORITHM
See PDF Reference 1.4 Table 3.13.

See Also:
Constant Field Values

VERSION2_VARIABLE_LENGTH_ALGORITHM

public static final int VERSION2_VARIABLE_LENGTH_ALGORITHM
See PDF Reference 1.4 Table 3.13.

See Also:
Constant Field Values

VERSION3_UNPUBLISHED_ALGORITHM

public static final int VERSION3_UNPUBLISHED_ALGORITHM
See PDF Reference 1.4 Table 3.13.

See Also:
Constant Field Values

VERSION4_SECURITY_HANDLER

public static final int VERSION4_SECURITY_HANDLER
See PDF Reference 1.4 Table 3.13.

See Also:
Constant Field Values

DEFAULT_NAME

public static final String DEFAULT_NAME
The default security handler.

See Also:
Constant Field Values

DEFAULT_LENGTH

public static final int DEFAULT_LENGTH
The default length for the encryption key.

See Also:
Constant Field Values

DEFAULT_VERSION

public static final int DEFAULT_VERSION
The default version, according to the PDF Reference.

See Also:
Constant Field Values

encryptionDictionary

protected COSDictionary encryptionDictionary
COS encryption dictionary.

Constructor Detail

PDEncryptionDictionary

public PDEncryptionDictionary()
creates a new empty encryption dictionary.


PDEncryptionDictionary

public PDEncryptionDictionary(COSDictionary d)
creates a new encryption dictionary from the low level dictionary provided.

Parameters:
d - the low level dictionary that will be managed by the newly created object
Method Detail

getCOSDictionary

public COSDictionary getCOSDictionary()
This will get the dictionary associated with this encryption dictionary.

Returns:
The COS dictionary that this object wraps.

setFilter

public void setFilter(String filter)
Sets the filter entry of the encryption dictionary.

Parameters:
filter - The filter name.

getFilter

public String getFilter()
Get the name of the filter.

Returns:
The filter name contained in this encryption dictionary.

getSubFilter

public String getSubFilter()
Get the name of the subfilter.

Returns:
The subfilter name contained in this encryption dictionary.

setSubFilter

public void setSubFilter(String subfilter)
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

public void setOwnerKey(byte[] o)
                 throws IOException
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

public byte[] getOwnerKey()
                   throws IOException
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

public void setUserKey(byte[] u)
                throws IOException
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

public byte[] getUserKey()
                  throws IOException
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.

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.

setRecipients

public void setRecipients(byte[][] recipients)
                   throws IOException
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

public COSString getRecipientStringAt(int i)
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

public PDCryptFilterDictionary getStdCryptFilterDictionary()
Returns the standard crypt filter.

Returns:
the standard crypt filter if available.

getCryptFilterDictionary

public PDCryptFilterDictionary getCryptFilterDictionary(COSName cryptFilterName)
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

getStreamFilterName

public COSName getStreamFilterName()
Returns the name of the filter which is used for de/encrypting streams. Default value is "Identity".

Returns:
the name of the filter

getStringFilterName

public COSName getStringFilterName()
Returns the name of the filter which is used for de/encrypting strings. Default value is "Identity".

Returns:
the name of the filter


Copyright © 2002-2010 The Apache Software Foundation. All Rights Reserved.