]> git.codecow.com Git - Monocypher.git/commitdiff
Simplified sliding windows a bit
authorLoup Vaillant <loup@loup-vaillant.fr>
Tue, 14 Aug 2018 10:59:17 +0000 (12:59 +0200)
committerLoup Vaillant <loup@loup-vaillant.fr>
Tue, 14 Aug 2018 10:59:17 +0000 (12:59 +0200)
src/monocypher.c

index dcc303ef820f323c8c1fe1c72904afc8121eef95..8a7b4e39cceba93fa586ac96201878dbfbfdd771 100644 (file)
@@ -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++;
         }
     }
 }