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
path: root/core/src
diff options
context:
space:
mode:
authorPeter Dettman <peter.dettman@bouncycastle.org>2013-10-04 05:20:07 +0400
committerPeter Dettman <peter.dettman@bouncycastle.org>2013-10-04 05:20:07 +0400
commitcd09a6578985280d42e4507412d73dd56957e89c (patch)
treeba4896819be299490ab8e29178863a2d121acb19 /core/src
parent9c5522f0947608f8d5d83cbb075179a0594315c4 (diff)
Move F2m reduction inside the multiplication and square methods (renamed
to modMultiply and modSquare)
Diffstat (limited to 'core/src')
-rw-r--r--core/src/main/java/org/bouncycastle/math/ec/ECFieldElement.java9
-rw-r--r--core/src/main/java/org/bouncycastle/math/ec/LongArray.java15
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)