Logo Search packages:      
Sourcecode: libpodofo version File versions  Download package

Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes

PoDoFo::PdfEncryptAES Class Reference

#include <PdfEncrypt.h>

Inheritance diagram for PoDoFo::PdfEncryptAES:
Inheritance graph
[legend]
Collaboration diagram for PoDoFo::PdfEncryptAES:
Collaboration graph
[legend]

List of all members.

Public Types

enum  EPdfEncryptAlgorithm { ePdfEncryptAlgorithm_RC4V1 = 1, ePdfEncryptAlgorithm_RC4V2 = 2, ePdfEncryptAlgorithm_AESV2 = 4 }
enum  EPdfKeyLength {
  ePdfKeyLength_40 = 40, ePdfKeyLength_56 = 56, ePdfKeyLength_80 = 80, ePdfKeyLength_96 = 96,
  ePdfKeyLength_128 = 128
}
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
}

Public Member Functions

bool Authenticate (const std::string &password, const PdfString &documentId)
bool Authenticate (const std::string &documentID, const std::string &password, const std::string &uValue, const std::string &oValue, int pValue, int lengthValue, int rValue)
pdf_long CalculateStreamLength (pdf_long length) const
 Calculate stream size.
pdf_long CalculateStreamOffset () const
 Calculate stream offset.
void CreateEncryptionDictionary (PdfDictionary &rDictionary) const
PdfInputStreamCreateEncryptionInputStream (PdfInputStream *pInputStream)
PdfOutputStreamCreateEncryptionOutputStream (PdfOutputStream *pOutputStream)
void Encrypt (unsigned char *str, pdf_long len) const
 Encrypt a character string.
void Encrypt (std::string &str, pdf_long inputLen) const
 Encrypt a wxString.
void GenerateEncryptionKey (const PdfString &documentId)
EPdfEncryptAlgorithm GetEncryptAlgorithm () const
int GetKeyLength () const
 Get the key length of the encryption key in bits.
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.
const unsigned char * GetUValue () const
 Get the U object value (user)
bool IsAccessibilityAllowed () const
bool IsCopyAllowed () const
bool IsDocAssemblyAllowed () const
bool IsEditAllowed () const
bool IsEditNotesAllowed () const
bool IsFillAndSignAllowed () const
bool IsHighPrintAllowed () const
bool IsPrintAllowed () const
 PdfEncryptAES (PdfString oValue, PdfString uValue, int pValue)
 PdfEncryptAES (const PdfEncrypt &rhs)
 PdfEncryptAES (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)
void SetCurrentReference (const PdfReference &rRef)

Static Public Member Functions

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 PdfString GetMD5String (const unsigned char *pBuffer, int nLength)
static bool IsEncryptionEnabled (EPdfEncryptAlgorithm eAlgorithm)
static void SetEnabledEncryptionAlgorithms (int nEncryptionAlgorithms)

Protected Member Functions

bool CheckKey (unsigned char key1[32], unsigned char key2[32])
 Check two keys for equality.
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.
void ComputeOwnerKey (unsigned char userPad[32], unsigned char ownerPad[32], int keylength, int revision, bool authenticate, unsigned char ownerKey[32])
 Compute owner key.
void CreateObjKey (unsigned char objkey[16], int *pnKeyLen) const
void GenerateInitialVector (unsigned char iv[16])
 Generate initial vector.
void PadPassword (const std::string &password, unsigned char pswd[32])
 Pad a password to 32 characters.
void RC4 (unsigned char *key, int keylen, unsigned char *textin, pdf_long textlen, unsigned char *textout)
 RC4 encryption.

Static Protected Member Functions

static void GetMD5Binary (const unsigned char *data, int length, unsigned char *digest)
 Calculate the binary MD5 message digest of the given data.

Protected Attributes

EPdfEncryptAlgorithm m_eAlgorithm
 The used encryption algorithm.
EPdfKeyLength m_eKeyLength
 The key length.
int m_keyLength
 Length of encryption key.
unsigned char m_oValue [32]
 O entry in pdf document.
std::string m_ownerPass
 Owner password.
int m_pValue
 P entry in pdf document.
unsigned char m_rc4key [16]
 last RC4 key
unsigned char m_rc4last [256]
 last RC4 state table
int m_rValue
 Revision.
std::string m_userPass
 User password.
unsigned char m_uValue [32]
 U entry in pdf document.

Private Member Functions

void AES (unsigned char *key, int keylen, unsigned char *textin, pdf_long textlen, unsigned char *textout)
 AES encryption.

Private Attributes

PdfRijndaelm_aes
 AES encryptor.

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

Definition at line 434 of file PdfEncrypt.h.


The documentation for this class was generated from the following files:

Generated by  Doxygen 1.6.0   Back to index