Class PDFSecurityHandler
java.lang.Object
com.inductiveautomation.rm.pdf.reader.PDFSecurityHandler
- Direct Known Subclasses:
- PDFEncryptor
Implementation of the Adobe Standard security handler using the Sun security extensions for md5 & rc4.
- 
Field SummaryFieldsModifier and TypeFieldDescriptionstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final int
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionvoidarcfour_decrypt(byte[] inout) decrypt using the cached encryption key.Decrypt.decryptObject(Object o, int objNum, int generationNum) Decrypt strings & streams using the algorithm from the encryption dictionary.static byte[]getBytesForEncryptionEntry(Map encDict, String key) Similar to, but not exactly like normal string escape.byte[]getEncryptionKey(byte[] oEntry, String uPass, int keyLen) Uses algorithm 3.2 from pdf spec to generate a key from the file.byte[]getEncryptionKey(Map encrypt, List fileID, String uPass) Gets the key length and algorithm from the dictionary and creats the keystatic PDFSecurityHandlergetInstance(Map encryptionDict, List fileID, String pdfversion) Returns an instance of the appropriate PDFSecurityHandler subclass.getOwnerPasswordEntry(String ownerP, String userP) Returns the string corresponding to the /O entry.byte[]getOwnerPasswordEntryBytes(String ownerP, 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 StringgetPDFStringForBytes(byte[] buf) Inverse of aboveReturns the string corresponding to the /U entry.byte[]Return User password entry bytes.voidMain security handler initialization.static voidTesting.voidsetEncryptionParameters(byte[] fileID, String ownerP, String userP, int permissionFlags) Initialization for encryption.voidstartDecrypt(int objNum, int generationNum) Create encryption key for given object numbers and cache it for recursive invocations of decryptDeep().
- 
Field Details- 
PRINTING_ALLOWEDpublic static final int PRINTING_ALLOWED- See Also:
 
- 
MODIFICATIONS_ALLOWEDpublic static final int MODIFICATIONS_ALLOWED- See Also:
 
- 
EXTRACT_TEXT_AND_IMAGES_ALLOWEDpublic static final int EXTRACT_TEXT_AND_IMAGES_ALLOWED- See Also:
 
- 
ADD_ANNOTATIONS_ALLOWEDpublic static final int ADD_ANNOTATIONS_ALLOWED- See Also:
 
- 
FILL_IN_FORMS_ALLOWEDpublic static final int FILL_IN_FORMS_ALLOWED- See Also:
 
- 
ACCESSABILITY_EXTRACTS_ALLOWEDpublic static final int ACCESSABILITY_EXTRACTS_ALLOWED- See Also:
 
- 
ASSEMBLE_DOCUMENT_ALLOWEDpublic static final int ASSEMBLE_DOCUMENT_ALLOWED- See Also:
 
- 
MAXIMUM_RESOLUTION_PRINTING_ALLOWEDpublic static final int MAXIMUM_RESOLUTION_PRINTING_ALLOWED- See Also:
 
 
- 
- 
Constructor Details- 
PDFSecurityHandlerpublic PDFSecurityHandler()
 
- 
- 
Method Details- 
getInstanceReturns an instance of the appropriate PDFSecurityHandler subclass. Since any number of different security handlers can be used in pdf, callers should use this method rather than instantiating a handler directly. This also does authentication with the handler, possibly raising a panel to ask for passwords, keys, etc.
- 
initpublic void init(Map encryptDict, List fileID, String pdfversion, String uPass) throws com.inductiveautomation.rm.pdf.reader.PDFSecurityHandler.PDFBadPasswordException Main security handler initialization. Calculates everything necessary to decrypt the pdf objects and performs authorization if necessary.- Throws:
- com.inductiveautomation.rm.pdf.reader.PDFSecurityHandler.PDFBadPasswordException
 
- 
setEncryptionParameterspublic void setEncryptionParameters(byte[] fileID, String ownerP, String userP, int permissionFlags) Initialization for encryption. Sets parameters to revision=3, 128 bit keys.
- 
getEncryptionKeyGets the key length and algorithm from the dictionary and creats the key
- 
getEncryptionKeyUses algorithm 3.2 from pdf spec to generate a key from the file.
- 
getUserPasswordEntryReturns the string corresponding to the /U entry. The encryption key is assumed to be calculated already.
- 
getOwnerPasswordEntryReturns the string corresponding to the /O entry.
- 
getUserPasswordEntryBytespublic byte[] getUserPasswordEntryBytes()Return User password entry bytes.
- 
getOwnerPasswordEntryBytesFor 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.
- 
decryptObjectDecrypt strings & streams using the algorithm from the encryption dictionary.
- 
decryptDeepDecrypt.
- 
startDecryptpublic void startDecrypt(int objNum, int generationNum) Create encryption key for given object numbers and cache it for recursive invocations of decryptDeep().
- 
getBytesForEncryptionEntrySimilar to, but not exactly like normal string escape.
- 
getPDFStringForBytesInverse of above
- 
arcfour_decryptpublic void arcfour_decrypt(byte[] inout) decrypt using the cached encryption key.
- 
mainTesting.- Throws:
- IOException
 
 
-