PCypher Class Reference

#include <cypher.h>

Inheritance diagram for PCypher:
PObject PTEACypher

List of all members.

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 Member Functions

PString Encode (const PString &str)
PString Encode (const PBYTEArray &clear)
PString Encode (const void *data, PINDEX length)
void Encode (const PBYTEArray &clear, PBYTEArray &coded)
void Encode (const void *data, PINDEX length, PBYTEArray &coded)
PString Decode (const PString &cypher)
PBoolean Decode (const PString &cypher, PString &clear)
PBoolean Decode (const PString &cypher, PBYTEArray &clear)
PINDEX Decode (const PString &cypher, void *data, PINDEX length)
PINDEX Decode (const PBYTEArray &coded, void *data, PINDEX length)
PBoolean Decode (const PBYTEArray &coded, PBYTEArray &clear)

Protected Member Functions

 PCypher (PINDEX blockSize, BlockChainMode chainMode)
 PCypher (const void *keyData, PINDEX keyLength, PINDEX blockSize, BlockChainMode chainMode)
virtual void Initialise (PBoolean encoding)=0
virtual void EncodeBlock (const void *in, void *out)=0
virtual void DecodeBlock (const void *in, void *out)=0

Protected Attributes

PBYTEArray key
 Key for the encryption/decryption.
PINDEX blockSize
 Size of each encryption block in bytes.
BlockChainMode chainMode
 Mode for sequential encryption each block.

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:
blockSize Size of encryption blocks (in bits)
chainMode Block chain mode
PCypher::PCypher ( const void *  keyData,
PINDEX  keyLength,
PINDEX  blockSize,
BlockChainMode  chainMode 
) [protected]
Parameters:
keyData Key for the encryption/decryption algorithm.
keyLength Length of the key.
blockSize Size of encryption blocks (in bits)
chainMode Block chain mode

Member Function Documentation

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:
coded Encoded data (cyphertext).
clear Clear text binary data decoded.
PINDEX PCypher::Decode ( const PBYTEArray coded,
void *  data,
PINDEX  length 
)

Decode the data.

Parameters:
coded Encoded data (cyphertext).
data Clear text binary data decoded.
length Maximum number of bytes of data decoded.
PINDEX PCypher::Decode ( const PString cypher,
void *  data,
PINDEX  length 
)

Decode the data.

Parameters:
cypher Base64 Cypher text string to be decoded.
data Clear text binary data decoded.
length Maximum number of bytes of data decoded.
PBoolean PCypher::Decode ( const PString cypher,
PBYTEArray clear 
)

Decode the data.

Parameters:
cypher Base64 Cypher text string to be decoded.
clear Clear text binary data decoded.
PBoolean PCypher::Decode ( const PString cypher,
PString clear 
)

Decode the data.

Parameters:
cypher Base64 Cypher text string to be decoded.
clear Clear text string decoded.
PString PCypher::Decode ( const PString cypher  ) 

Decode the data.

Parameters:
cypher Base64 Cypher text string to be decoded.
virtual void PCypher::DecodeBlock ( const void *  in,
void *  out 
) [protected, pure virtual]

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

Parameters:
in Pointer to coded n bit block.
out Pointer to clear n bit block.

Implemented in PTEACypher.

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.
void PCypher::Encode ( const PBYTEArray clear,
PBYTEArray coded 
)

Encode the data.

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

Encode the data.

Parameters:
data Clear text binary data to be encoded.
length Number of bytes of data to be encoded.
PString PCypher::Encode ( const PBYTEArray clear  ) 

Encode the data.

Parameters:
clear Clear text binary data to be encoded.
PString PCypher::Encode ( const PString str  ) 

Encode the data.

Parameters:
str Clear text string to be encoded.
virtual void PCypher::EncodeBlock ( const void *  in,
void *  out 
) [protected, pure virtual]

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

Parameters:
in Pointer to clear n bit block.
out Pointer to coded n bit block.

Implemented in PTEACypher.

virtual void PCypher::Initialise ( PBoolean  encoding  )  [protected, pure virtual]

Initialise the encoding/decoding sequence.

Parameters:
encoding Flag for encoding/decoding sequence about to start.

Implemented in PTEACypher.


Member Data Documentation

PINDEX PCypher::blockSize [protected]

Size of each encryption block in bytes.

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:
Generated on Fri May 28 07:32:31 2010 for PTLib by  doxygen 1.6.3