diff options
| author | Kévin Le Gouguec <kevin.legouguec@airbus.com> | 2018-12-03 15:28:58 +0100 |
|---|---|---|
| committer | Kévin Le Gouguec <kevin.legouguec@airbus.com> | 2018-12-04 08:17:43 +0100 |
| commit | 4a89a70f14703e9a45eb490b44ca7621a516da71 (patch) | |
| tree | 49e94f62851e185b19cd9905867ce28429b42ce2 /src | |
| parent | 4e5d619a69aa79c61986ce3b4ee86486e583eab3 (diff) | |
| download | lilliput-ae-implem-4a89a70f14703e9a45eb490b44ca7621a516da71.tar.xz | |
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 (limited to 'src')
| -rw-r--r-- | src/tweakey.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/tweakey.c b/src/tweakey.c index d1893e0..648bd54 100644 --- 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]]; } } } |
