Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Class Members | File Members

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)
BOOL Decode (const PString &cypher, PString &clear)
BOOL Decode (const PString &cypher, PBYTEArray &clear)
PINDEX Decode (const PString &cypher, void *data, PINDEX length)
PINDEX Decode (const PBYTEArray &coded, void *data, PINDEX length)
BOOL 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 (BOOL 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

enum PCypher::BlockChainMode
 

Mechanism by which sequential blocks are linked.

Enumeration values:
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:
chainMode  Size of encryption blocks (in bits) Block chain mode

PCypher::PCypher const void *  keyData,
PINDEX  keyLength,
PINDEX  blockSize,
BlockChainMode  chainMode
[protected]
 

Parameters:
keyLength  Key for the encryption/decryption algorithm.
blockSize  Length of the key.
chainMode  Size of encryption blocks (in bits) Block chain mode


Member Function Documentation

BOOL 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:
clear  Encoded data (cyphertext). Clear text binary data decoded.

PINDEX PCypher::Decode const PBYTEArray coded,
void *  data,
PINDEX  length
 

Decode the data.

Parameters:
data  Encoded data (cyphertext).
length  Clear text binary data decoded. Maximum number of bytes of data decoded.

PINDEX PCypher::Decode const PString cypher,
void *  data,
PINDEX  length
 

Decode the data.

Parameters:
data  Base64 Cypher text string to be decoded.
length  Clear text binary data decoded. Maximum number of bytes of data decoded.

BOOL PCypher::Decode const PString cypher,
PBYTEArray clear
 

Decode the data.

Parameters:
clear  Base64 Cypher text string to be decoded. Clear text binary data decoded.

BOOL PCypher::Decode const PString cypher,
PString clear
 

Decode the data.

Parameters:
clear  Base64 Cypher text string to be decoded. 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:
out  Pointer to coded n bit block. 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:
coded  Clear text binary data to be encoded. Encoded data.

PString PCypher::Encode const void *  data,
PINDEX  length
 

Encode the data.

Parameters:
length  Clear text binary data to be encoded. 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:
out  Pointer to clear n bit block. Pointer to coded n bit block.

Implemented in PTEACypher.

virtual void PCypher::Initialise BOOL  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.

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:
Generated on Tue Mar 15 10:44:53 2005 for PWLib by  doxygen 1.4.0