All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PCypher Class Referenceabstract

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

`#include <cypher.h>`

Inheritance diagram for PCypher:

## 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 Types inherited from PObject
enum | Comparison { LessThan = -1, EqualTo = 0, GreaterThan = 1 }
| Result of the comparison operation performed by the `Compare()` function. More...

## Public Member Functions

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 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 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 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...

## Protected Member Functions

| PCypher (PINDEX blockSize, BlockChainMode chainMode)
| Create a new encryption object instance. More...
| PCypher (const void *keyData, PINDEX keyLength, PINDEX blockSize, BlockChainMode chainMode)
virtual void | Initialise (PBoolean encoding)=0
| Initialise the encoding/decoding sequence. More...
virtual void | EncodeBlock (const void *in, void *out)=0
| Encode an n bit block of memory according to the encryption algorithm. More...
virtual void | DecodeBlock (const void *in, void *out)=0
| Dencode an n bit block of memory according to the encryption algorithm. More...
Protected Member Functions inherited from PObject
| PObject ()
| Constructor for PObject, made protected so cannot ever create one on its own. More...

## Protected Attributes

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...

## 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

PString PCypher::Decode | ( | const PString & | cypher | ) |

Decode the data.

Parameters

  cypher | Base64 Cypher text string to be 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.

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.

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.

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.

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.

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.

PString PCypher::Encode | ( | const PString & | str | ) |

Encode the data.

Parameters

  str | Clear text string 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 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.

void PCypher::Encode | ( | const PBYTEArray & | clear,
|  | PBYTEArray & | coded
| ) |  |

Encode the data.

Parameters

  clear | Clear text binary data to be encoded.
  coded | Encoded 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

  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:

- cypher.h