PTLib  Version 2.10.4
PCypher Class Reference

This abstract class defines an encryption/decryption algortihm. More...

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

Protected Member Functions

 PCypher (PINDEX blockSize, BlockChainMode chainMode)
 Create a new encryption object instance.
 PCypher (const void *keyData, PINDEX keyLength, PINDEX blockSize, BlockChainMode chainMode)
virtual void Initialise (PBoolean encoding)=0
 Initialise the encoding/decoding sequence.
virtual void EncodeBlock (const void *in, void *out)=0
 Encode an n bit block of memory according to the encryption algorithm.
virtual void DecodeBlock (const void *in, void *out)=0
 Dencode an n bit block of memory according to the encryption algorithm.

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

Member Function Documentation

PString PCypher::Decode ( const PString cypher)

Decode the data.

Parameters:
cypherBase64 Cypher text string to be decoded.
PBoolean PCypher::Decode ( const PString cypher,
PString clear 
)

Decode the data.

Parameters:
cypherBase64 Cypher text string to be decoded.
clearClear text string decoded.
PBoolean PCypher::Decode ( const PString cypher,
PBYTEArray clear 
)

Decode the data.

Parameters:
cypherBase64 Cypher text string to be decoded.
clearClear text binary data decoded.
PINDEX PCypher::Decode ( const PString cypher,
void *  data,
PINDEX  length 
)

Decode the data.

Parameters:
cypherBase64 Cypher text string to be decoded.
dataClear text binary data decoded.
lengthMaximum number of bytes of data decoded.
PINDEX PCypher::Decode ( const PBYTEArray coded,
void *  data,
PINDEX  length 
)

Decode the data.

Parameters:
codedEncoded data (cyphertext).
dataClear text binary data decoded.
lengthMaximum number of bytes of data decoded.
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:
codedEncoded data (cyphertext).
clearClear text binary data 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:
inPointer to coded n bit block.
outPointer to clear n bit block.

Implemented in PTEACypher.

PString PCypher::Encode ( const PString str)

Encode the data.

Parameters:
strClear text string to be encoded.
PString PCypher::Encode ( const PBYTEArray clear)

Encode the data.

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

Encode the data.

Parameters:
dataClear text binary data to be encoded.
lengthNumber of bytes of data to be encoded.
void PCypher::Encode ( const PBYTEArray clear,
PBYTEArray coded 
)

Encode the data.

Parameters:
clearClear text binary data to be encoded.
codedEncoded data.
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.
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:
inPointer to clear n bit block.
outPointer to coded n bit block.

Implemented in PTEACypher.

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

Initialise the encoding/decoding sequence.

Parameters:
encodingFlag 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:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines