diff options
author | Peter Dettman <peter.dettman@bouncycastle.org> | 2014-03-10 10:51:11 +0400 |
---|---|---|
committer | Peter Dettman <peter.dettman@bouncycastle.org> | 2014-03-10 10:51:11 +0400 |
commit | 636dbce39a18b2e5732d1c9b9810776a3e1e3678 (patch) | |
tree | 11035f5e5ce3ff601ee86e5e4a6daab4f20b1e07 /core/src/main/java/org/bouncycastle/math/ec/custom | |
parent | 54bb4f4673c0f4f54dd31961b3825aed0e88d26a (diff) |
Refactor temporary variables in reductions
Diffstat (limited to 'core/src/main/java/org/bouncycastle/math/ec/custom')
3 files changed, 30 insertions, 28 deletions
diff --git a/core/src/main/java/org/bouncycastle/math/ec/custom/sec/SecP224R1Field.java b/core/src/main/java/org/bouncycastle/math/ec/custom/sec/SecP224R1Field.java index 493bbbea..f10ed997 100644 --- a/core/src/main/java/org/bouncycastle/math/ec/custom/sec/SecP224R1Field.java +++ b/core/src/main/java/org/bouncycastle/math/ec/custom/sec/SecP224R1Field.java @@ -91,16 +91,13 @@ public class SecP224R1Field public static void reduce(int[] xx, int[] z) { - long xx07 = xx[7] & M, xx08 = xx[8] & M, xx09 = xx[9] & M, xx10 = xx[10] & M; - long xx11 = xx[11] & M, xx12 = xx[12] & M, xx13 = xx[13] & M; - - long t0 = xx07 + xx11; - long t1 = xx08 + xx12; - long t2 = xx09 + xx13; + long xx10 = xx[10] & M, xx11 = xx[11] & M, xx12 = xx[12] & M, xx13 = xx[13] & M; final long n = 1; - t0 -= n; + long t0 = (xx[7] & M) + xx11 - n; + long t1 = (xx[8] & M) + xx12; + long t2 = (xx[9] & M) + xx13; long cc = 0; cc += (xx[0] & M) - t0; diff --git a/core/src/main/java/org/bouncycastle/math/ec/custom/sec/SecP256R1Field.java b/core/src/main/java/org/bouncycastle/math/ec/custom/sec/SecP256R1Field.java index 57f26a1b..ff037c17 100644 --- a/core/src/main/java/org/bouncycastle/math/ec/custom/sec/SecP256R1Field.java +++ b/core/src/main/java/org/bouncycastle/math/ec/custom/sec/SecP256R1Field.java @@ -91,18 +91,18 @@ public class SecP256R1Field long xx08 = xx[8] & M, xx09 = xx[9] & M, xx10 = xx[10] & M, xx11 = xx[11] & M; long xx12 = xx[12] & M, xx13 = xx[13] & M, xx14 = xx[14] & M, xx15 = xx[15] & M; + final long n = 6; + + xx08 -= n; + long t0 = xx08 + xx09; long t1 = xx09 + xx10; - long t2 = xx10 + xx11; + long t2 = xx10 + xx11 - xx15; long t3 = xx11 + xx12; long t4 = xx12 + xx13; long t5 = xx13 + xx14; long t6 = xx14 + xx15; - final long n = 6; - - t0 -= n; - long cc = 0; cc += (xx[0] & M) + t0 - t3 - t5; z[0] = (int)cc; @@ -110,7 +110,7 @@ public class SecP256R1Field cc += (xx[1] & M) + t1 - t4 - t6; z[1] = (int)cc; cc >>= 32; - cc += (xx[2] & M) + t2 - t5 - xx15; + cc += (xx[2] & M) + t2 - t5; z[2] = (int)cc; cc >>= 32; cc += (xx[3] & M) + (t3 << 1) + xx13 - xx15 - t0; @@ -119,13 +119,13 @@ public class SecP256R1Field cc += (xx[4] & M) + (t4 << 1) + xx14 - t1; z[4] = (int)cc; cc >>= 32; - cc += (xx[5] & M) + (t5 << 1) + xx15 - t2; + cc += (xx[5] & M) + (t5 << 1) - t2; z[5] = (int)cc; cc >>= 32; cc += (xx[6] & M) + (t6 << 1) + t5 - t0; z[6] = (int)cc; cc >>= 32; - cc += (xx[7] & M) + (xx15 << 1) + xx15 + xx08 - t2 - t4 - n; + cc += (xx[7] & M) + (xx15 << 1) + xx08 - t2 - t4; z[7] = (int)cc; cc >>= 32; cc += n; diff --git a/core/src/main/java/org/bouncycastle/math/ec/custom/sec/SecP384R1Field.java b/core/src/main/java/org/bouncycastle/math/ec/custom/sec/SecP384R1Field.java index 27b25a7e..82c9aa0a 100644 --- a/core/src/main/java/org/bouncycastle/math/ec/custom/sec/SecP384R1Field.java +++ b/core/src/main/java/org/bouncycastle/math/ec/custom/sec/SecP384R1Field.java @@ -94,49 +94,54 @@ public class SecP384R1Field public static void reduce(int[] xx, int[] z) { - long xx12 = xx[12] & M, xx13 = xx[13] & M, xx14 = xx[14] & M, xx15 = xx[15] & M; long xx16 = xx[16] & M, xx17 = xx[17] & M, xx18 = xx[18] & M, xx19 = xx[19] & M; long xx20 = xx[20] & M, xx21 = xx[21] & M, xx22 = xx[22] & M, xx23 = xx[23] & M; final long n = 1; - xx12 -= n; + long t0 = (xx[12] & M) + xx20 - n; + long t1 = (xx[13] & M) + xx22; + long t2 = (xx[14] & M) + xx22 + xx23; + long t3 = (xx[15] & M) + xx23; + long t4 = xx17 + xx21; + long t5 = xx21 - xx23; + long t6 = xx22 - xx23; long cc = 0; - cc += (xx[0] & M) + xx12 + xx20 + xx21 - xx23; + cc += (xx[0] & M) + t0 + t5; z[0] = (int)cc; cc >>= 32; - cc += (xx[1] & M) + xx13 + xx22 + xx23 - xx12 - xx20; + cc += (xx[1] & M) + xx23 - t0 + t1; z[1] = (int)cc; cc >>= 32; - cc += (xx[2] & M) + xx14 + xx23 - xx13 - xx21; + cc += (xx[2] & M) - xx21 - t1 + t2; z[2] = (int)cc; cc >>= 32; - cc += (xx[3] & M) + xx12 + xx15 + xx20 + xx21 - xx14 - xx22 - xx23; + cc += (xx[3] & M) + t0 - t2 + t3 + t5; z[3] = (int)cc; cc >>= 32; - cc += (xx[4] & M) + xx12 + xx13 + xx16 + xx20 + ((xx21 - xx23) << 1) + xx22 - xx15; + cc += (xx[4] & M) + xx16 + xx21 + t0 + t1 - t3 + t5; z[4] = (int)cc; cc >>= 32; - cc += (xx[5] & M) + xx13 + xx14 + xx17 + xx21 + (xx22 << 1) + xx23 - xx16; + cc += (xx[5] & M) - xx16 + t1 + t2 + t4; z[5] = (int)cc; cc >>= 32; - cc += (xx[6] & M) + xx14 + xx15 + xx18 + xx22 + (xx23 << 1) - xx17; + cc += (xx[6] & M) + xx18 - xx17 + t2 + t3; z[6] = (int)cc; cc >>= 32; - cc += (xx[7] & M) + xx15 + xx16 + xx19 + xx23 - xx18; + cc += (xx[7] & M) + xx16 + xx19 - xx18 + t3; z[7] = (int)cc; cc >>= 32; cc += (xx[8] & M) + xx16 + xx17 + xx20 - xx19; z[8] = (int)cc; cc >>= 32; - cc += (xx[9] & M) + xx17 + xx18 + xx21 - xx20; + cc += (xx[9] & M) + xx18 - xx20 + t4; z[9] = (int)cc; cc >>= 32; - cc += (xx[10] & M) + xx18 + xx19 + xx22 - xx21; + cc += (xx[10] & M) + xx18 + xx19 - t5 + t6; z[10] = (int)cc; cc >>= 32; - cc += (xx[11] & M) + xx19 + xx20 + xx23 - xx22; + cc += (xx[11] & M) + xx19 + xx20 - t6; z[11] = (int)cc; cc >>= 32; cc += n; |