PTLib  Version 2.10.10
 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:
PCypher PObject

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
virtual ~PObject ()
 
virtual PObject * Clone () const
 Create a copy of the class on the heap. 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...
 
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: