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

PoDoFo::PdfEncryptRC4 Class Reference

#include <PdfEncrypt.h>

Inheritance diagram for PoDoFo::PdfEncryptRC4:
Inheritance graph
[legend]
Collaboration diagram for PoDoFo::PdfEncryptRC4:
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)
virtual pdf_long CalculateStreamLength (pdf_long length) const
 Calculate stream size.
virtual 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
 PdfEncryptRC4 (PdfString oValue, PdfString uValue, int pValue, int rValue, EPdfEncryptAlgorithm eAlgorithm, long length)
 PdfEncryptRC4 (const PdfEncrypt &rhs)
 PdfEncryptRC4 (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)
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.

Detailed Description

A class that is used to encrypt a PDF file (RC4 40-bit and 128-bit)

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

Definition at line 487 of file PdfEncrypt.h.


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

Generated by  Doxygen 1.6.0   Back to index