#pragma once #include #include /* debug */ #include #define TWEAK_LENGTH_BITS 192 #define KEY_LENGTH_BITS 128 #define TWEAKEY_LENGTH_BITS (TWEAK_LENGTH_BITS+KEY_LENGTH_BITS) #define ROUND_TWEAKEY_LENGTH_BITS 64 #define TWEAK_BYTES (TWEAK_LENGTH_BITS/8) #define KEY_BYTES (KEY_LENGTH_BITS/8) #define TWEAKEY_BYTES (TWEAKEY_LENGTH_BITS/8) #define ROUND_TWEAKEY_BYTES (ROUND_TWEAKEY_LENGTH_BITS/8) struct tweakey_state { FILE* debug; uint8_t TK[TWEAKEY_BYTES]; }; typedef struct tweakey_state tweakey_state; void tweakey_state_init( tweakey_state *TK, const uint8_t key[KEY_BYTES], const uint8_t tweak[TWEAK_BYTES], FILE* debug ); void tweakey_state_extract( const tweakey_state *TK, uint8_t round_tweakey[ROUND_TWEAKEY_BYTES], /* output */ uint8_t i /* round constant */ ); void tweakey_state_update(tweakey_state *TK);