summaryrefslogtreecommitdiff
path: root/src/add_tweakeyunrolled/tweakey.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/add_tweakeyunrolled/tweakey.c')
-rw-r--r--src/add_tweakeyunrolled/tweakey.c26
1 files changed, 7 insertions, 19 deletions
diff --git a/src/add_tweakeyunrolled/tweakey.c b/src/add_tweakeyunrolled/tweakey.c
index cad50da..b2822b0 100644
--- a/src/add_tweakeyunrolled/tweakey.c
+++ b/src/add_tweakeyunrolled/tweakey.c
@@ -62,21 +62,6 @@ void tweakey_state_extract(
}
-static uint8_t _M1(uint8_t x)
-{
- return x<<3 ^ x>>3;
-}
-
-static uint8_t _M3(uint8_t x)
-{
- return (uint8_t)(x<<3) >> 3;
-}
-
-static uint8_t _M4(uint8_t x)
-{
- return (uint8_t)(x<<2) >> 3;
-}
-
static void _multiply_M(const uint8_t x[LANE_BYTES], uint8_t y[LANE_BYTES])
{
y[7] = x[6];
@@ -149,12 +134,15 @@ static void _multiply_MR2(const uint8_t x[LANE_BYTES], uint8_t y[LANE_BYTES])
static void _multiply_MR3(const uint8_t x[LANE_BYTES], uint8_t y[LANE_BYTES])
{
+ uint8_t x_MR_4 = x[5] ^ x[6]<<3;
+ uint8_t x_MR2_4 = x[3]<<2 ^ x[6] ^ x[7]<<3;
+
y[0] = x[3] ^ x[4]>>3;
- y[1] = x[4] ^ x[5]>>3 ^ _M3(x[6]);
- y[2] = _M4(x[3]) ^ x[5] ^ _M1(x[6]) ^ _M3(x[7]);
- y[3] = x[3]<<2 ^ x[6] ^ x[7]<<3;
+ y[1] = x[4] ^ x_MR_4>>3;
+ y[2] = x_MR_4 ^ x_MR2_4>>3;
+ y[3] = x_MR2_4;
y[4] = x[0]<<3 ^ x[4]<<2 ^ x[7];
- y[5] = x[0] ^ x[5]<<2 ^ x[6]<<5;
+ y[5] = x_MR_4<<2 ^ x[0];
y[6] = x[1];
y[7] = x[2];
}