AES-128 decryption class (running in Cipher Block Chaining mode) More...

#include <aes128_decrypt.h>

Public Member Functions

 AES128_Decrypt ()
 Constructs a AES-128 generator (running in Cipher Block Chaining mode) More...
 
void add (const void *data, int size)
 Adds data to be decrypted. More...
 
void add (const DataBuffer &data)
 Add data to be decrypted. More...
 
bool calculate ()
 Finalize decryption. More...
 
DataBuffer get_data () const
 Get decrypted data. More...
 
void reset ()
 Resets the decryption. More...
 
void set_iv (const unsigned char iv[iv_size])
 Sets the initialisation vector. More...
 
void set_key (const unsigned char key[key_size])
 Sets the cipher key. More...
 
void set_padding (bool value=true, bool use_pkcs7=true)
 Enable AES Padding. More...
 

Static Public Attributes

static const int iv_size = 16
 
static const int key_size = 16
 

Detailed Description

AES-128 decryption class (running in Cipher Block Chaining mode)

Constructor & Destructor Documentation

clan::AES128_Decrypt::AES128_Decrypt ( )

Constructs a AES-128 generator (running in Cipher Block Chaining mode)

Member Function Documentation

void clan::AES128_Decrypt::add ( const void *  data,
int  size 
)

Adds data to be decrypted.

void clan::AES128_Decrypt::add ( const DataBuffer data)

Add data to be decrypted.

Parameters
data= Data Buffer
bool clan::AES128_Decrypt::calculate ( )

Finalize decryption.

IMPORTANT, to avoid timing attacks, if this function fails, you should still validate the data (via a hash or otherwise), then throw an error

Returns
false = AES Padding value is invalid.
DataBuffer clan::AES128_Decrypt::get_data ( ) const

Get decrypted data.

This is the databuffer used internally to store the decrypted data. You may call "set_size()" to clear the buffer, inbetween calls to "add()" You may call "set_capacity()" to optimise storage requirements before the add() call

void clan::AES128_Decrypt::reset ( )

Resets the decryption.

void clan::AES128_Decrypt::set_iv ( const unsigned char  iv[iv_size])

Sets the initialisation vector.

This should be a random number
This must be called before the initial add()

void clan::AES128_Decrypt::set_key ( const unsigned char  key[key_size])

Sets the cipher key.

This must be called before the initial add()

void clan::AES128_Decrypt::set_padding ( bool  value = true,
bool  use_pkcs7 = true 
)

Enable AES Padding.

Example (use_pkcs7==true) : ... 0x03 0x03 0x03 (3 octets of padding) Example (use_pkcs7==false) : ... 0x02 0x02 0x02 (3 octets of padding, the last octet is the length)

Parameters
value= true = Enable padding (default)
use_pkcs7= true = This uses the PKCS#7/RFC3369 method (Enabled by default). false = use the TLS method (rfc2246)

Member Data Documentation

const int clan::AES128_Decrypt::iv_size = 16
static
const int clan::AES128_Decrypt::key_size = 16
static

The documentation for this class was generated from the following file: