Arduino Cryptography Library
Public Member Functions | List of all members
AESSmall128 Class Reference

AES block cipher with 128-bit keys and reduced memory usage. More...

#include <AES.h>

Inheritance diagram for AESSmall128:
AESTiny128 BlockCipher

Public Member Functions

 AESSmall128 ()
 Constructs an AES 128-bit block cipher with no initial key. More...
 
bool setKey (const uint8_t *key, size_t len)
 Sets the key to use for future encryption and decryption operations. More...
 
void decryptBlock (uint8_t *output, const uint8_t *input)
 Decrypts a single block using this cipher. More...
 
void clear ()
 Clears all security-sensitive state from this block cipher. More...
 
- Public Member Functions inherited from AESTiny128
 AESTiny128 ()
 Constructs an AES 128-bit block cipher with no initial key. More...
 
size_t blockSize () const
 Size of an AES block in bytes. More...
 
size_t keySize () const
 Size of a 128-bit AES key in bytes. More...
 
void encryptBlock (uint8_t *output, const uint8_t *input)
 Encrypts a single block using this cipher. More...
 
- Public Member Functions inherited from BlockCipher
 BlockCipher ()
 Constructs a block cipher.
 
virtual ~BlockCipher ()
 Destroys this block cipher object. More...
 

Detailed Description

AES block cipher with 128-bit keys and reduced memory usage.

This class differs from the AES128 class in that the RAM requirements are vastly reduced. The key schedule is expanded round by round instead of being generated and stored by setKey(). The performance of encryption and decryption is slightly less because of this.

This class is useful when RAM is at a premium and reduced encryption performance is not a hindrance to the application.

The companion AESTiny128 class uses even less RAM but only supports the encryptBlock() operation. Block cipher modes like CTR, EAX, and GCM do not need the decryptBlock() operation, so AESTiny128 may be a better option than AESSmall128 for many applications.

See also
AESTiny128, AES128

Definition at line 173 of file AES.h.

Constructor & Destructor Documentation

◆ AESSmall128()

AESSmall128::AESSmall128 ( )

Constructs an AES 128-bit block cipher with no initial key.

This constructor must be followed by a call to setKey() before the block cipher can be used for encryption or decryption.

Definition at line 271 of file AES128.cpp.

Member Function Documentation

◆ clear()

void AESSmall128::clear ( )
virtual

Clears all security-sensitive state from this block cipher.

Security-sensitive information includes key schedules and any temporary state that is used by encryptBlock() or decryptBlock() which is stored in the object itself.

See also
setKey(), encryptBlock(), decryptBlock()

Reimplemented from AESTiny128.

Definition at line 350 of file AES128.cpp.

◆ decryptBlock()

void AESSmall128::decryptBlock ( uint8_t *  output,
const uint8_t *  input 
)
virtual

Decrypts a single block using this cipher.

Parameters
outputThe output buffer to put the plaintext into. Must be at least blockSize() bytes in length.
inputThe input buffer to read the ciphertext from which is allowed to overlap with output. Must be at least blockSize() bytes in length.
See also
encryptBlock(), blockSize()

Reimplemented from AESTiny128.

Definition at line 306 of file AES128.cpp.

◆ setKey()

bool AESSmall128::setKey ( const uint8_t *  key,
size_t  len 
)
virtual

Sets the key to use for future encryption and decryption operations.

Parameters
keyThe key to use.
lenThe length of the key.
Returns
Returns false if the key length is not supported, or the key is somehow "weak" and unusable by this cipher.

Use clear() or the destructor to remove the key and any other sensitive data from the object once encryption or decryption is complete.

See also
keySize(), clear()

Reimplemented from AESTiny128.

Definition at line 280 of file AES128.cpp.


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