PTLib
Version 2.10.4
|
This abstract class defines an encryption/decryption algortihm. More...
#include <cypher.h>
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. |
This abstract class defines an encryption/decryption algortihm.
A specific algorithm is implemented in a descendent class.
PCypher::PCypher | ( | PINDEX | blockSize, |
BlockChainMode | chainMode | ||
) | [protected] |
Create a new encryption object instance.
blockSize | Size of encryption blocks (in bits) |
chainMode | Block chain mode |
PCypher::PCypher | ( | const void * | keyData, |
PINDEX | keyLength, | ||
PINDEX | blockSize, | ||
BlockChainMode | chainMode | ||
) | [protected] |
keyData | Key for the encryption/decryption algorithm. |
keyLength | Length of the key. |
blockSize | Size of encryption blocks (in bits) |
chainMode | Block chain mode |
PString PCypher::Decode | ( | const PString & | cypher | ) |
Decode the data.
cypher | Base64 Cypher text string to be decoded. |
PBoolean PCypher::Decode | ( | const PString & | cypher, |
PString & | clear | ||
) |
Decode the data.
cypher | Base64 Cypher text string to be decoded. |
clear | Clear text string decoded. |
PBoolean PCypher::Decode | ( | const PString & | cypher, |
PBYTEArray & | clear | ||
) |
Decode the data.
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.
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.
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.
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.
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.
str | Clear text string to be encoded. |
PString PCypher::Encode | ( | const PBYTEArray & | clear | ) |
Encode the data.
clear | Clear text binary data to be encoded. |
PString PCypher::Encode | ( | const void * | data, |
PINDEX | length | ||
) |
Encode the data.
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.
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.
virtual void PCypher::EncodeBlock | ( | const void * | in, |
void * | out | ||
) | [protected, pure virtual] |
Encode an n bit block of memory according to the encryption algorithm.
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.
encoding | Flag for encoding/decoding sequence about to start. |
Implemented in PTEACypher.
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.