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

Tiny Encryption Algorithm. More...

#include <cypher.h>

Inheritance diagram for PTEACypher:
Collaboration diagram for PTEACypher:

Classes

struct  Key
 

Public Member Functions

 PTEACypher (BlockChainMode chainMode=ElectronicCodebook)
 Create a new TEA encryption object instance. More...
 
 PTEACypher (const Key &keyData, BlockChainMode chainMode=ElectronicCodebook)
 
void SetKey (const Key &newKey)
 Set the key used by this encryption method. More...
 
void GetKey (Key &newKey) const
 Get the key used by this encryption method. More...
 
- Public Member Functions inherited from PCypher
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 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 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 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...
 

Static Public Member Functions

static void GenerateKey (Key &newKey)
 Generate a new key suitable for use for encryption using random data. More...
 

Protected Member Functions

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

Additional Inherited Members

- Public Types inherited from PCypher
enum  BlockChainMode {
  ElectronicCodebook, ECB = ElectronicCodebook, CypherBlockChaining, CBC = CypherBlockChaining,
  OutputFeedback, OFB = OutputFeedback, CypherFeedback, CFB = CypherFeedback,
  NumBlockChainModes
}
 Mechanism by which sequential blocks are linked. More...
 
- Protected Attributes inherited from PCypher
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...
 
- Friends inherited from PObject

Detailed Description

Tiny Encryption Algorithm.

This class implements the Tiny Encryption Algorithm by David Wheeler and Roger Needham at Cambridge University.

This is a simple algorithm using a 128 bit binary key and encrypts data in 64 bit blocks.

Constructor & Destructor Documentation

PTEACypher::PTEACypher ( BlockChainMode  chainMode = ElectronicCodebook)

Create a new TEA encryption object instance.

The parameterless version automatically generates a new, random, key.

Parameters
chainModeBlock chain mode
PTEACypher::PTEACypher ( const Key keyData,
BlockChainMode  chainMode = ElectronicCodebook 
)
Parameters
keyDataKey for the encryption/decryption algorithm.
chainModeBlock chain mode

Member Function Documentation

virtual void PTEACypher::DecodeBlock ( const void *  in,
void *  out 
)
protectedvirtual

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

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

Implements PCypher.

virtual void PTEACypher::EncodeBlock ( const void *  in,
void *  out 
)
protectedvirtual

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.

Implements PCypher.

static void PTEACypher::GenerateKey ( Key newKey)
static

Generate a new key suitable for use for encryption using random data.

Parameters
newKeyVariable to take the newly generated key.
void PTEACypher::GetKey ( Key newKey) const

Get the key used by this encryption method.

Parameters
newKeyVariable to take the key used by cypher.
virtual void PTEACypher::Initialise ( PBoolean  encoding)
protectedvirtual

Initialise the encoding/decoding sequence.

Parameters
encodingFlag for encoding/decoding sequence about to start.

Implements PCypher.

void PTEACypher::SetKey ( const Key newKey)

Set the key used by this encryption method.

Parameters
newKeyVariable to take the key used by cypher.

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