lilliput-ae-reference-implementation

Implementations of Lilliput-AE submitted to the NIST LWC standardization process
git clone https://git.kevinlegouguec.net/lilliput-ae-reference-implementation
Log | Files | Refs | README

commit 4a89a70f14703e9a45eb490b44ca7621a516da71
parent 4e5d619a69aa79c61986ce3b4ee86486e583eab3
Author: Kévin Le Gouguec <kevin.legouguec@airbus.com>
Date:   Mon,  3 Dec 2018 15:28:58 +0100

Nettoyage des indices dans l'implémentation du key schedule

Idéalement,  il faudrait  que  j  ne soit  plus  utilisé comme  indice
d'octet dans la spécification.

Diffstat:
Msrc/tweakey.c | 23++++++++++++++---------
1 file changed, 14 insertions(+), 9 deletions(-)

diff --git a/src/tweakey.c b/src/tweakey.c @@ -8,7 +8,7 @@ #define LANE_BITS 64 #define LANE_BYTES (LANE_BITS/8) -#define LANES_NB (TWEAKEY_BYTES/LANE_BYTES) +#define LANES_NB (TWEAKEY_BYTES/LANE_BYTES) void tweakey_state_init( @@ -30,11 +30,13 @@ void tweakey_state_extract( { memset(round_tweakey, 0, ROUND_TWEAKEY_BYTES); - for (const uint8_t *lane=TK; lane<TK+TWEAKEY_BYTES; lane+=LANE_BYTES) + for (size_t j=0; j<LANES_NB; j++) { - for (size_t j=0; j<LANE_BYTES; j++) + const uint8_t *TKj = TK + j*LANE_BYTES; + + for (size_t k=0; k<LANE_BYTES; k++) { - round_tweakey[j] ^= lane[j]; + round_tweakey[k] ^= TKj[k]; } } @@ -47,11 +49,14 @@ static void _permute_state(uint8_t TK[TWEAKEY_BYTES]) uint8_t TK_old[TWEAKEY_BYTES]; memcpy(TK_old, TK, TWEAKEY_BYTES); - for (size_t j=0; j<TWEAKEY_BYTES; j+=LANE_BYTES) + for (size_t j=0; j<LANES_NB; j++) { + uint8_t *TKj = TK + j*LANE_BYTES; + uint8_t const *TKj_old = TK_old + j*LANE_BYTES; + for (size_t k=0; k<LANE_BYTES; k++) { - TK[j+h[k]] = TK_old[j+k]; + TKj[h[k]] = TKj_old[k]; } } } @@ -70,12 +75,12 @@ static void _multiply_state(uint8_t TK[TWEAKEY_BYTES]) for (size_t j=1; j<LANES_NB; j++) { - const uint8_t *P_j = P[j-1]; + uint8_t const *Pj = P[j-1]; + uint8_t *TKj = TK + j*LANE_BYTES; for (size_t k=0; k<LANE_BYTES; k++) { - size_t offset = j*LANE_BYTES + k; - TK[offset] = P_j[TK[offset]]; + TKj[k] = Pj[TKj[k]]; } } }