#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 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. |
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 |
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.
Decode the data.
cypher | Base64 Cypher text string to be decoded. |
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::Initialise | ( | PBoolean | encoding | ) | [protected, pure virtual] |
Initialise the encoding/decoding sequence.
encoding | Flag for encoding/decoding sequence about to start. |
Implemented in PTEACypher.
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::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.
PBYTEArray PCypher::key [protected] |
Key for the encryption/decryption.
PINDEX PCypher::blockSize [protected] |
Size of each encryption block in bytes.
BlockChainMode PCypher::chainMode [protected] |
Mode for sequential encryption each block.