Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/quite/humla-spongycastle.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Dettman <peter.dettman@bouncycastle.org>2014-03-10 10:51:11 +0400
committerPeter Dettman <peter.dettman@bouncycastle.org>2014-03-10 10:51:11 +0400
commit636dbce39a18b2e5732d1c9b9810776a3e1e3678 (patch)
tree11035f5e5ce3ff601ee86e5e4a6daab4f20b1e07 /core/src/main/java/org/bouncycastle/math/ec/custom
parent54bb4f4673c0f4f54dd31961b3825aed0e88d26a (diff)
Refactor temporary variables in reductions
Diffstat (limited to 'core/src/main/java/org/bouncycastle/math/ec/custom')
-rw-r--r--core/src/main/java/org/bouncycastle/math/ec/custom/sec/SecP224R1Field.java11
-rw-r--r--core/src/main/java/org/bouncycastle/math/ec/custom/sec/SecP256R1Field.java16
-rw-r--r--core/src/main/java/org/bouncycastle/math/ec/custom/sec/SecP384R1Field.java31
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;