public class PDFSecurityHandler
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
static int |
ACCESSABILITY_EXTRACTS_ALLOWED |
static int |
ADD_ANNOTATIONS_ALLOWED |
static int |
ASSEMBLE_DOCUMENT_ALLOWED |
static int |
EXTRACT_TEXT_AND_IMAGES_ALLOWED |
static int |
FILL_IN_FORMS_ALLOWED |
static int |
MAXIMUM_RESOLUTION_PRINTING_ALLOWED |
static int |
MODIFICATIONS_ALLOWED |
static int |
PRINTING_ALLOWED |
Constructor and Description |
---|
PDFSecurityHandler() |
Modifier and Type | Method and Description |
---|---|
void |
arcfour_decrypt(byte[] inout)
decrypt using the cached encryption key.
|
java.lang.Object |
decryptDeep(java.lang.Object o)
Decrypt.
|
java.lang.Object |
decryptObject(java.lang.Object o,
int objNum,
int generationNum)
Decrypt strings & streams using the algorithm from the encryption dictionary.
|
static byte[] |
getBytesForEncryptionEntry(java.util.Map encDict,
java.lang.String key)
Similar to, but not exactly like normal string escape.
|
byte[] |
getEncryptionKey(byte[] oEntry,
java.lang.String uPass,
int keyLen)
Uses algorithm 3.2 from pdf spec to generate a key from the file.
|
byte[] |
getEncryptionKey(java.util.Map encrypt,
java.util.List fileID,
java.lang.String uPass)
Gets the key length and algorithm from the dictionary and creats the key
|
static PDFSecurityHandler |
getInstance(java.util.Map encryptionDict,
java.util.List fileID,
java.lang.String pdfversion)
Returns an instance of the appropriate PDFSecurityHandler subclass.
|
java.lang.String |
getOwnerPasswordEntry(java.lang.String ownerP,
java.lang.String userP)
Returns the string corresponding to the /O entry.
|
byte[] |
getOwnerPasswordEntryBytes(java.lang.String ownerP,
java.lang.String userP)
For encryption - generate a /O encryption entry for an encryption dictionary (from Algorithm 3.3 of the spec)
This routine uses Revision 3 of the algorithm and 128 bit keys.
|
static java.lang.String |
getPDFStringForBytes(byte[] buf)
Inverse of above
|
java.lang.String |
getUserPasswordEntry()
Returns the string corresponding to the /U entry.
|
byte[] |
getUserPasswordEntryBytes()
Return User password entry bytes.
|
void |
init(java.util.Map encryptDict,
java.util.List fileID,
java.lang.String pdfversion,
java.lang.String uPass)
Main security handler initialization.
|
static void |
main(java.lang.String[] args)
Testing.
|
void |
setEncryptionParameters(byte[] fileID,
java.lang.String ownerP,
java.lang.String userP,
int permissionFlags)
Initialization for encryption.
|
void |
startDecrypt(int objNum,
int generationNum)
Create encryption key for given object numbers and cache it for recursive invocations of decryptDeep().
|
public static final int PRINTING_ALLOWED
public static final int MODIFICATIONS_ALLOWED
public static final int EXTRACT_TEXT_AND_IMAGES_ALLOWED
public static final int ADD_ANNOTATIONS_ALLOWED
public static final int FILL_IN_FORMS_ALLOWED
public static final int ACCESSABILITY_EXTRACTS_ALLOWED
public static final int ASSEMBLE_DOCUMENT_ALLOWED
public static final int MAXIMUM_RESOLUTION_PRINTING_ALLOWED
public static PDFSecurityHandler getInstance(java.util.Map encryptionDict, java.util.List fileID, java.lang.String pdfversion)
public void init(java.util.Map encryptDict, java.util.List fileID, java.lang.String pdfversion, java.lang.String uPass) throws com.inductiveautomation.rm.pdf.reader.PDFSecurityHandler.PDFBadPasswordException
com.inductiveautomation.rm.pdf.reader.PDFSecurityHandler.PDFBadPasswordException
public void setEncryptionParameters(byte[] fileID, java.lang.String ownerP, java.lang.String userP, int permissionFlags)
public byte[] getEncryptionKey(java.util.Map encrypt, java.util.List fileID, java.lang.String uPass)
public byte[] getEncryptionKey(byte[] oEntry, java.lang.String uPass, int keyLen)
public java.lang.String getUserPasswordEntry()
public java.lang.String getOwnerPasswordEntry(java.lang.String ownerP, java.lang.String userP)
public byte[] getUserPasswordEntryBytes()
public byte[] getOwnerPasswordEntryBytes(java.lang.String ownerP, java.lang.String userP)
public java.lang.Object decryptObject(java.lang.Object o, int objNum, int generationNum)
public java.lang.Object decryptDeep(java.lang.Object o)
public void startDecrypt(int objNum, int generationNum)
public static byte[] getBytesForEncryptionEntry(java.util.Map encDict, java.lang.String key)
public static java.lang.String getPDFStringForBytes(byte[] buf)
public void arcfour_decrypt(byte[] inout)
public static void main(java.lang.String[] args) throws java.io.UnsupportedEncodingException, java.io.IOException
java.io.UnsupportedEncodingException
java.io.IOException