From 974e55d21c1fac7a2e21f91cb7174601b653180a Mon Sep 17 00:00:00 2001 From: Loup Vaillant Date: Tue, 14 Aug 2018 12:59:17 +0200 Subject: [PATCH] Simplified sliding windows a bit --- src/monocypher.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/monocypher.c b/src/monocypher.c index dcc303e..8a7b4e3 100644 --- a/src/monocypher.c +++ b/src/monocypher.c @@ -1572,26 +1572,23 @@ static void slide(i8 adds[258], const u8 scalar[32]) { FOR (i, 0, 256) { adds[i] = scalar_bit(scalar, i); } FOR (i, 256, 258) { adds[i] = 0; } - int i = 0; - while (i < 254) { + FOR (i, 0, 254) { if (adds[i] != 0) { // base value of the 5-bit window FOR (j, 1, 5) { adds[i ] |= adds[i+j] << j; adds[i+j] = 0; } - i += 5; - if (adds[i-5] > 16) { - // subtract 32, propagate carry. - adds[i-5] -= 32; - while (adds[i] != 0) { - adds[i] = 0; - i++; + if (adds[i] > 16) { + // go back to [-15, 15], propagate carry. + adds[i] -= 32; + int j = i + 5; + while (adds[j] != 0) { + adds[j] = 0; + j++; } - adds[i] = 1; + adds[j] = 1; } - } else { - i++; } } } -- 2.47.3