PTLib  Version 2.14.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PCypher Class Referenceabstract

This abstract class defines an encryption/decryption algortihm. More...

#include <cypher.h>

Inheritance diagram for PCypher:
Collaboration diagram for PCypher:

Public Types

enum  BlockChainMode {
  ElectronicCodebook, ECB = ElectronicCodebook, CypherBlockChaining, CBC = CypherBlockChaining,
  OutputFeedback, OFB = OutputFeedback, CypherFeedback, CFB = CypherFeedback,
  NumBlockChainModes
}
 Mechanism by which sequential blocks are linked. More...
 
- Public Types inherited from PObject
enum  Comparison { LessThan = -1, EqualTo = 0, GreaterThan = 1 }
 Result of the comparison operation performed by the Compare() function. More...
 

Public Member Functions

PString Encode (const PString &str)
 Encode the data. More...
 
PString Encode (const PBYTEArray &clear)
 Encode the data. More...
 
PString Encode (const void *data, PINDEX length)
 Encode the data. More...
 
void Encode (const PBYTEArray &clear, PBYTEArray &coded)
 Encode the data. More...
 
void Encode (const void *data, PINDEX length, PBYTEArray &coded)
 Encode the data. More...
 
PString Decode (const PString &cypher)
 Decode the data. More...
 
PBoolean Decode (const PString &cypher, PString &clear)
 Decode the data. More...
 
PBoolean Decode (const PString &cypher, PBYTEArray &clear)
 Decode the data. More...
 
PINDEX Decode (const PString &cypher, void *data, PINDEX length)
 Decode the data. More...
 
PINDEX Decode (const PBYTEArray &coded, void *data, PINDEX length)
 Decode the data. More...
 
PBoolean Decode (const PBYTEArray &coded, PBYTEArray &clear)
 Decode the data. More...
 
- Public Member Functions inherited from PObject
unsigned GetTraceContextIdentifier () const
 Get PTRACE context identifier. More...
 
void SetTraceContextIdentifier (unsigned id)
 
void GetTraceContextIdentifier (PObject &obj)
 
void GetTraceContextIdentifier (PObject *obj)
 
void SetTraceContextIdentifier (const PObject &obj)
 
void SetTraceContextIdentifier (const PObject *obj)
 
virtual ~PObject ()
 
virtual PObjectClone () const
 Create a copy of the class on the heap. More...
 
template<class CLS >
CLS * CloneAs () const
 As for Clone() but converts to specified type. More...
 
virtual PINDEX HashFunction () const
 This function yields a hash value required by the PDictionary class. More...
 
virtual Comparison Compare (const PObject &obj) const
 Compare the two objects and return their relative rank. More...
 
virtual Comparison CompareObjectMemoryDirect (const PObject &obj) const
 Determine the byte wise comparison of two objects. More...
 
bool operator== (const PObject &obj) const
 Compare the two objects. More...
 
bool operator!= (const PObject &obj) const
 Compare the two objects. More...
 
bool operator< (const PObject &obj) const
 Compare the two objects. More...
 
bool operator> (const PObject &obj) const
 Compare the two objects. More...
 
bool operator<= (const PObject &obj) const
 Compare the two objects. More...
 
bool operator>= (const PObject &obj) const
 Compare the two objects. More...
 
virtual const char * GetClass (unsigned ancestor=0) const
 Get the current dynamic type of the object instance. More...
 
PBoolean IsClass (const char *cls) const
 
virtual PBoolean InternalIsDescendant (const char *clsName) const
 Determine if the dynamic type of the current instance is a descendent of the specified class. More...
 
__inline const PObjectPTraceObjectInstance () const
 
virtual void PrintOn (ostream &strm) const
 Output the contents of the object to the stream. More...
 
virtual void ReadFrom (istream &strm)
 Input the contents of the object from the stream. More...
 

Protected Member Functions

 PCypher (PINDEX blockSize, BlockChainMode chainMode)
 Create a new encryption object instance. More...
 
 PCypher (const void *keyData, PINDEX keyLength, PINDEX blockSize, BlockChainMode chainMode)
 
virtual void Initialise (PBoolean encoding)=0
 Initialise the encoding/decoding sequence. More...
 
virtual void EncodeBlock (const void *in, void *out)=0
 Encode an n bit block of memory according to the encryption algorithm. More...
 
virtual void DecodeBlock (const void *in, void *out)=0
 Dencode an n bit block of memory according to the encryption algorithm. More...
 
- Protected Member Functions inherited from PObject
 PObject ()
 Constructor for PObject, made protected so cannot ever create one on its own. More...
 

Protected Attributes

PBYTEArray key
 Key for the encryption/decryption. More...
 
PINDEX blockSize
 Size of each encryption block in bytes. More...
 
BlockChainMode chainMode
 Mode for sequential encryption each block. More...
 
- Protected Attributes inherited from PObject
unsigned m_traceContextIdentifier
 

Additional Inherited Members

- Static Public Member Functions inherited from PObject
static Comparison InternalCompareObjectMemoryDirect (const PObject *obj1, const PObject *obj2, PINDEX size)
 Internal function caled from CompareObjectMemoryDirect() More...
 
static const char * Class ()
 Get the name of the class as a C string. More...
 
static __inline const PObjectPTraceObjectInstance (const char *)
 
static __inline const PObjectPTraceObjectInstance (const PObject *obj)
 
- Friends inherited from PObject

Detailed Description

This abstract class defines an encryption/decryption algortihm.

A specific algorithm is implemented in a descendent class.

Member Enumeration Documentation

Mechanism by which sequential blocks are linked.

Enumerator
ElectronicCodebook 
ECB 
CypherBlockChaining 
CBC 
OutputFeedback 
OFB 
CypherFeedback 
CFB 
NumBlockChainModes 

Constructor & Destructor Documentation

PCypher::PCypher ( PINDEX  blockSize,
BlockChainMode  chainMode 
)
protected

Create a new encryption object instance.

Parameters
blockSizeSize of encryption blocks (in bits)
chainModeBlock chain mode
PCypher::PCypher ( const void *  keyData,
PINDEX  keyLength,
PINDEX  blockSize,
BlockChainMode  chainMode 
)
protected
Parameters
keyDataKey for the encryption/decryption algorithm.
keyLengthLength of the key.
blockSizeSize of encryption blocks (in bits)
chainModeBlock chain mode

Member Function Documentation

PString PCypher::Decode ( const PString cypher)

Decode the data.

Parameters
cypherBase64 Cypher text string to be decoded.
PBoolean PCypher::Decode ( const PString cypher,
PString clear 
)

Decode the data.

Parameters
cypherBase64 Cypher text string to be decoded.
clearClear text string decoded.
PBoolean PCypher::Decode ( const PString cypher,
PBYTEArray clear 
)

Decode the data.

Parameters
cypherBase64 Cypher text string to be decoded.
clearClear text binary data decoded.
PINDEX PCypher::Decode ( const PString cypher,
void *  data,
PINDEX  length 
)

Decode the data.

Parameters
cypherBase64 Cypher text string to be decoded.
dataClear text binary data decoded.
lengthMaximum number of bytes of data decoded.
PINDEX PCypher::Decode ( const PBYTEArray coded,
void *  data,
PINDEX  length 
)

Decode the data.

Parameters
codedEncoded data (cyphertext).
dataClear text binary data decoded.
lengthMaximum number of bytes of data decoded.
PBoolean PCypher::Decode ( const PBYTEArray coded,
PBYTEArray clear 
)

Decode the data.

Decode the data using the algorithm embodied by the descendent class and the key specifed in the construction of the objects instance.

The first form takes a string and returns a decoded string. The second form takes an encoded string and returns arbitrary binary data bytes. In both cases the encoded string is always 7 bit printable ASCII suitable for use in mail systems etc.

The final form takes and arbitrary block of bytes and decodes them into another block of binary data.

Returns
decoded string.
Parameters
codedEncoded data (cyphertext).
clearClear text binary data decoded.
virtual void PCypher::DecodeBlock ( const void *  in,
void *  out 
)
protectedpure virtual

Dencode an n bit block of memory according to the encryption algorithm.

Parameters
inPointer to coded n bit block.
outPointer to clear n bit block.

Implemented in PTEACypher.

PString PCypher::Encode ( const PString str)

Encode the data.

Parameters
strClear text string to be encoded.
PString PCypher::Encode ( const PBYTEArray clear)

Encode the data.

Parameters
clearClear text binary data to be encoded.
PString PCypher::Encode ( const void *  data,
PINDEX  length 
)

Encode the data.

Parameters
dataClear text binary data to be encoded.
lengthNumber of bytes of data to be encoded.
void PCypher::Encode ( const PBYTEArray clear,
PBYTEArray coded 
)

Encode the data.

Parameters
clearClear text binary data to be encoded.
codedEncoded data.
void PCypher::Encode ( const void *  data,
PINDEX  length,
PBYTEArray coded 
)

Encode the data.

The data is encoded using the algorithm embodied by the descendent class and the key specifed in the construction of the objects instance.

The first form takes a string and returns an encoded string. The second form takes arbitrary binary data bytes and returns an encoded string. In both cases the encoded string is always 7 bit printable ASCII suitable for use in mail systems etc.

The final form takes and arbitrary block of bytes and encodes them into another block of binary data.

Returns
encoded string.
virtual void PCypher::EncodeBlock ( const void *  in,
void *  out 
)
protectedpure virtual

Encode an n bit block of memory according to the encryption algorithm.

Parameters
inPointer to clear n bit block.
outPointer to coded n bit block.

Implemented in PTEACypher.

virtual void PCypher::Initialise ( PBoolean  encoding)
protectedpure virtual

Initialise the encoding/decoding sequence.

Parameters
encodingFlag for encoding/decoding sequence about to start.

Implemented in PTEACypher.

Member Data Documentation

PINDEX PCypher::blockSize
protected

Size of each encryption block in bytes.

BlockChainMode PCypher::chainMode
protected

Mode for sequential encryption each block.

PBYTEArray PCypher::key
protected

Key for the encryption/decryption.


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