diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/src/main/java/org/bouncycastle/math/ec/ECFieldElement.java | 9 | ||||
-rw-r--r-- | core/src/main/java/org/bouncycastle/math/ec/LongArray.java | 15 |
2 files changed, 12 insertions, 12 deletions
diff --git a/core/src/main/java/org/bouncycastle/math/ec/ECFieldElement.java b/core/src/main/java/org/bouncycastle/math/ec/ECFieldElement.java index 284709a4..820964ea 100644 --- a/core/src/main/java/org/bouncycastle/math/ec/ECFieldElement.java +++ b/core/src/main/java/org/bouncycastle/math/ec/ECFieldElement.java @@ -1191,10 +1191,7 @@ public abstract class ECFieldElement // No check performed here for performance reasons. Instead the // elements involved are checked in ECPoint.F2m // checkFieldElements(this, b); - F2m bF2m = (F2m)b; - LongArray mult = x.multiply(bF2m.x, m); - mult.reduce(m, ks); - return new F2m(m, ks, mult); + return new F2m(m, ks, x.modMultiply(((F2m)b).x, m, ks)); } public ECFieldElement divide(final ECFieldElement b) @@ -1212,9 +1209,7 @@ public abstract class ECFieldElement public ECFieldElement square() { - LongArray squared = x.square(m); - squared.reduce(m, ks); - return new F2m(m, ks, squared); + return new F2m(m, ks, x.modSquare(m, ks)); } public ECFieldElement invert() diff --git a/core/src/main/java/org/bouncycastle/math/ec/LongArray.java b/core/src/main/java/org/bouncycastle/math/ec/LongArray.java index 3b9cd801..cd1790ca 100644 --- a/core/src/main/java/org/bouncycastle/math/ec/LongArray.java +++ b/core/src/main/java/org/bouncycastle/math/ec/LongArray.java @@ -529,7 +529,7 @@ class LongArray m_ints[theInt] &= ~setter; } - public LongArray multiply(LongArray other, int m) + public LongArray modMultiply(LongArray other, int m, int[] ks) { int aLen = getUsedLength(); if (aLen == 0) @@ -568,7 +568,9 @@ class LongArray } ++k; } - return new LongArray(c); + LongArray p = new LongArray(c); + p.reduce(m, ks); + return p; } int width, shifts, top; @@ -659,6 +661,7 @@ class LongArray // TODO reduce in place to avoid extra copying LongArray p = new LongArray(cLen); System.arraycopy(c, ci[1], p.m_ints, 0, cLen); + p.reduce(m, ks); return p; } @@ -689,7 +692,7 @@ class LongArray // return x; // } - public void reduce(int m, int[] ks) + private void reduce(int m, int[] ks) { int len = getUsedLength(); int mLen = (m + 63) >>> 6; @@ -762,7 +765,7 @@ class LongArray } } - public LongArray square(int m) + public LongArray modSquare(int m, int[] ks) { int len = getUsedLength(); if (len == 0) @@ -781,7 +784,9 @@ class LongArray r[pos++] = expand32((int)(mi >>> 32)); } - return new LongArray(r); + LongArray p = new LongArray(r); + p.reduce(m, ks); + return p; } private static void interleave3(long[] x, int xOff, long[] z, int zOff, int count) |