Abstract base class for SKINNY tweakable block ciphers with 64-bit blocks. More...
#include <Skinny64.h>
Public Member Functions | |
virtual | ~Skinny64_Tweaked () |
Destroys this tweakable Skinny-64 block cipher object after clearing sensitive information. | |
bool | setTweak (const uint8_t *tweak, size_t len) |
Sets the 64-bit tweak value for this block cipher. More... | |
void | clear () |
Clears all security-sensitive state from this block cipher. More... | |
Public Member Functions inherited from Skinny64 | |
virtual | ~Skinny64 () |
Destroys this Skinny-64 block cipher object after clearing sensitive information. | |
size_t | blockSize () const |
Size of a Skinny-64 block in bytes. More... | |
void | encryptBlock (uint8_t *output, const uint8_t *input) |
Encrypts a single block using this cipher. More... | |
void | decryptBlock (uint8_t *output, const uint8_t *input) |
Decrypts 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... | |
virtual size_t | keySize () const =0 |
Default size of the key for this block cipher, in bytes. More... | |
virtual bool | setKey (const uint8_t *key, size_t len)=0 |
Sets the key to use for future encryption and decryption operations. More... | |
Protected Member Functions | |
Skinny64_Tweaked (uint32_t *schedule, uint8_t rounds) | |
Constructs a tweakable Skinny-64 block cipher object. More... | |
void | resetTweak () |
Resets the tweak to all-zeroes. More... | |
Protected Member Functions inherited from Skinny64 | |
Skinny64 (uint32_t *schedule, uint8_t rounds) | |
Constructs a Skinny-64 block cipher object. More... | |
void | setTK1 (const uint8_t *key, bool tweaked=false) |
Clears the key schedule and sets it to the schedule for TK1. More... | |
void | xorTK1 (const uint8_t *key) |
XOR's the key schedule with the schedule for TK1. More... | |
void | setTK2 (const uint8_t *key) |
XOR's the key schedule with the schedule for TK2. More... | |
void | setTK3 (const uint8_t *key) |
XOR's the key schedule with the schedule for TK3. More... | |
Abstract base class for SKINNY tweakable block ciphers with 64-bit blocks.
This class is abstract. The caller should instantiate Skinny64_128_Tweaked or Skinny64_192_Tweaked to create a SKINNY block cipher with a tweak and a specific key size.
Reference: https://sites.google.com/site/skinnycipher/
Definition at line 53 of file Skinny64.h.
|
protected |
Constructs a tweakable Skinny-64 block cipher object.
schedule | Points to the schedule data structure in the subclass. |
rounds | The number of rounds to perform during encryption/decryption. |
Definition at line 1040 of file Skinny64.cpp.
|
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.
Reimplemented from Skinny64.
Definition at line 1083 of file Skinny64.cpp.
|
protected |
Resets the tweak to all-zeroes.
This is used by subclass implementations of setKey().
Definition at line 1094 of file Skinny64.cpp.
bool Skinny64_Tweaked::setTweak | ( | const uint8_t * | tweak, |
size_t | len | ||
) |
Sets the 64-bit tweak value for this block cipher.
tweak | Points to the tweak, and can be NULL if you want a tweak of all-zeroes (the default). |
len | Length of tweak in bytes, which must be 16. |
This function must be called after setKey() as the setKey() call will implicitly set the tweak back to all-zeroes.
Definition at line 1069 of file Skinny64.cpp.