PCypher Class Reference

#include <cypher.h>

Inheritance diagram for PCypher:

PObject PTEACypher List of all members.

Public Types

 ElectronicCodebook
 ECB = ElectronicCodebook
 CypherBlockChaining
 CBC = CypherBlockChaining
 OutputFeedback
 OFB = OutputFeedback
 CypherFeedback
 CFB = CypherFeedback
 NumBlockChainModes
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

enum PCypher::BlockChainMode

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.

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 Thu May 27 01:36:48 2010 for PTLib by  doxygen 1.4.7