diff options
| -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]]; } } } |
