PoDoFo  0.9.1
Public Member Functions | List of all members
PoDoFo::PdfEncryptAES Class Reference

#include <PdfEncrypt.h>

Inheritance diagram for PoDoFo::PdfEncryptAES:
PoDoFo::PdfEncrypt

Public Member Functions

void Encrypt (unsigned char *str, pdf_long len) const
 Encrypt a character string.
 
pdf_long CalculateStreamOffset () const
 Calculate stream offset.
 
PdfInputStreamCreateEncryptionInputStream (PdfInputStream *pInputStream)
 
PdfOutputStreamCreateEncryptionOutputStream (PdfOutputStream *pOutputStream)
 
pdf_long CalculateStreamLength (pdf_long length) const
 Calculate stream size.
 
void CreateEncryptionDictionary (PdfDictionary &rDictionary) const
 
- Public Member Functions inherited from PoDoFo::PdfEncrypt
virtual ~PdfEncrypt ()
 
const PdfEncryptoperator= (const PdfEncrypt &rhs)
 
void GenerateEncryptionKey (const PdfString &documentId)
 
bool Authenticate (const std::string &password, const PdfString &documentId)
 
EPdfEncryptAlgorithm GetEncryptAlgorithm () const
 
bool IsPrintAllowed () const
 
bool IsEditAllowed () const
 
bool IsCopyAllowed () const
 
bool IsEditNotesAllowed () const
 
bool IsFillAndSignAllowed () const
 
bool IsAccessibilityAllowed () const
 
bool IsDocAssemblyAllowed () const
 
bool IsHighPrintAllowed () const
 
const unsigned char * GetUValue () const
 Get the U object value (user)
 
const unsigned char * GetOValue () const
 Get the O object value (owner)
 
int GetPValue () const
 Get the P object value (protection)
 
int GetRevision () const
 Get the revision number of the encryption method.
 
int GetKeyLength () const
 Get the key length of the encryption key in bits.
 
void Encrypt (std::string &str, pdf_long inputLen) const
 Encrypt a wxString.
 
void SetCurrentReference (const PdfReference &rRef)
 

Additional Inherited Members

- Public Types inherited from PoDoFo::PdfEncrypt
enum  EPdfKeyLength
 
enum  EPdfPermissions {
  ePdfPermissions_Print = 0x00000004, ePdfPermissions_Edit = 0x00000008, ePdfPermissions_Copy = 0x00000010, ePdfPermissions_EditNotes = 0x00000020,
  ePdfPermissions_FillAndSign = 0x00000100, ePdfPermissions_Accessible = 0x00000200, ePdfPermissions_DocAssembly = 0x00000400, ePdfPermissions_HighPrint = 0x00000800
}
 
enum  EPdfEncryptAlgorithm { ePdfEncryptAlgorithm_RC4V1 = 1, ePdfEncryptAlgorithm_RC4V2 = 2, ePdfEncryptAlgorithm_AESV2 = 4 }
 
- Static Public Member Functions inherited from PoDoFo::PdfEncrypt
static PdfEncryptCreatePdfEncrypt (const std::string &userPassword, const std::string &ownerPassword, int protection=ePdfPermissions_Print|ePdfPermissions_Edit|ePdfPermissions_Copy|ePdfPermissions_EditNotes|ePdfPermissions_FillAndSign|ePdfPermissions_Accessible|ePdfPermissions_DocAssembly|ePdfPermissions_HighPrint, EPdfEncryptAlgorithm eAlgorithm=ePdfEncryptAlgorithm_RC4V1, EPdfKeyLength eKeyLength=ePdfKeyLength_40)
 
static PdfEncryptCreatePdfEncrypt (const PdfObject *pObject)
 
static PdfEncryptCreatePdfEncrypt (const PdfEncrypt &rhs)
 
static int GetEnabledEncryptionAlgorithms ()
 
static void SetEnabledEncryptionAlgorithms (int nEncryptionAlgorithms)
 
static bool IsEncryptionEnabled (EPdfEncryptAlgorithm eAlgorithm)
 
static PdfString GetMD5String (const unsigned char *pBuffer, int nLength)
 
- Protected Member Functions inherited from PoDoFo::PdfEncrypt
void PadPassword (const std::string &password, unsigned char pswd[32])
 Pad a password to 32 characters.
 
void ComputeOwnerKey (unsigned char userPad[32], unsigned char ownerPad[32], int keylength, int revision, bool authenticate, unsigned char ownerKey[32])
 Compute owner key.
 
void ComputeEncryptionKey (const std::string &documentID, unsigned char userPad[32], unsigned char ownerKey[32], int pValue, int keyLength, int revision, unsigned char userKey[32])
 Compute encryption key and user key.
 
bool CheckKey (unsigned char key1[32], unsigned char key2[32])
 Check two keys for equality.
 
void RC4 (unsigned char *key, int keylen, unsigned char *textin, pdf_long textlen, unsigned char *textout)
 RC4 encryption. More...
 
void GenerateInitialVector (unsigned char iv[16])
 Generate initial vector.
 
void CreateObjKey (unsigned char objkey[16], int *pnKeyLen) const
 
- Static Protected Member Functions inherited from PoDoFo::PdfEncrypt
static void GetMD5Binary (const unsigned char *data, int length, unsigned char *digest)
 Calculate the binary MD5 message digest of the given data.
 
- Protected Attributes inherited from PoDoFo::PdfEncrypt
EPdfEncryptAlgorithm m_eAlgorithm
 The used encryption algorithm.
 
int m_keyLength
 Length of encryption key.
 
int m_rValue
 Revision.
 
int m_pValue
 P entry in pdf document.
 
EPdfKeyLength m_eKeyLength
 The key length.
 
std::string m_userPass
 User password.
 
std::string m_ownerPass
 Owner password.
 
unsigned char m_rc4key [16]
 last RC4 key
 
unsigned char m_rc4last [256]
 last RC4 state table
 
unsigned char m_uValue [32]
 U entry in pdf document.
 
unsigned char m_oValue [32]
 O entry in pdf document.
 

Detailed Description

A class that is used to encrypt a PDF file (AES-128)

Client code is working only with PdfEncrypt class and knows nothing about PdfEncryptAES, it is created through CreatePdfEncrypt factory method

Member Function Documentation

§ CreateEncryptionDictionary()

void PoDoFo::PdfEncryptAES::CreateEncryptionDictionary ( PdfDictionary &  rDictionary) const
virtual

Fill all keys into a encryption dictionary. This dictionary is usually added to the PDF files trailer under the /Encryption key.

Parameters
rDictionaryan empty dictionary which is filled with information about the used encryption algorithm

Implements PoDoFo::PdfEncrypt.

§ CreateEncryptionInputStream()

PdfInputStream * PoDoFo::PdfEncryptAES::CreateEncryptionInputStream ( PdfInputStream pInputStream)
virtual

Create a PdfInputStream that decrypts all data read from it using the current settings of the PdfEncrypt object.

Warning: Currently only RC4 based encryption is supported using output streams!

Parameters
pInputStreamthe created PdfInputStream reads all decrypted data to this input stream.
Returns
a PdfInputStream that decrypts all data.

Implements PoDoFo::PdfEncrypt.

§ CreateEncryptionOutputStream()

PdfOutputStream * PoDoFo::PdfEncryptAES::CreateEncryptionOutputStream ( PdfOutputStream pOutputStream)
virtual

Create a PdfOutputStream that encrypts all data written to it using the current settings of the PdfEncrypt object.

Warning: Currently only RC4 based encryption is supported using output streams!

Parameters
pOutputStreamthe created PdfOutputStream writes all encrypted data to this output stream.
Returns
a PdfOutputStream that encryts all data.

Implements PoDoFo::PdfEncrypt.