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>2013-09-28 09:20:16 +0400
committerPeter Dettman <peter.dettman@bouncycastle.org>2013-09-28 09:20:16 +0400
commita2c084379e998296d4ca8667d4f274867ef55946 (patch)
treea02aed8ce3c2e335e3bbad9b0102715efbaf5635 /core/src/main/java/org/bouncycastle/math
parent6d46044b078fd485ad2a4ab172a8274613120272 (diff)
Add method addOne() to ECFieldElement
Diffstat (limited to 'core/src/main/java/org/bouncycastle/math')
-rw-r--r--core/src/main/java/org/bouncycastle/math/ec/ECFieldElement.java20
-rw-r--r--core/src/main/java/org/bouncycastle/math/ec/IntArray.java11
2 files changed, 30 insertions, 1 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 6e36a84f..c50cedb7 100644
--- a/core/src/main/java/org/bouncycastle/math/ec/ECFieldElement.java
+++ b/core/src/main/java/org/bouncycastle/math/ec/ECFieldElement.java
@@ -12,6 +12,7 @@ public abstract class ECFieldElement
public abstract String getFieldName();
public abstract int getFieldSize();
public abstract ECFieldElement add(ECFieldElement b);
+ public abstract ECFieldElement addOne();
public abstract ECFieldElement subtract(ECFieldElement b);
public abstract ECFieldElement multiply(ECFieldElement b);
public abstract ECFieldElement divide(ECFieldElement b);
@@ -139,12 +140,22 @@ public abstract class ECFieldElement
{
return q;
}
-
+
public ECFieldElement add(ECFieldElement b)
{
return new Fp(q, r, modAdd(x, b.toBigInteger()));
}
+ public ECFieldElement addOne()
+ {
+ BigInteger x2 = x.add(ECConstants.ONE);
+ if (x2.compareTo(q) == 0)
+ {
+ x2 = ECConstants.ZERO;
+ }
+ return new Fp(q, r, x2);
+ }
+
public ECFieldElement subtract(ECFieldElement b)
{
BigInteger x2 = b.toBigInteger();
@@ -1183,6 +1194,13 @@ public abstract class ECFieldElement
return new F2m(m, k1, k2, k3, iarrClone);
}
+ public ECFieldElement addOne()
+ {
+ IntArray iarrClone = (IntArray)this.x.clone();
+ iarrClone.addOneShifted(0);
+ return new F2m(m, k1, k2, k3, iarrClone);
+ }
+
public ECFieldElement subtract(final ECFieldElement b)
{
// Addition and subtraction are the same in F2m
diff --git a/core/src/main/java/org/bouncycastle/math/ec/IntArray.java b/core/src/main/java/org/bouncycastle/math/ec/IntArray.java
index ead38c48..f13efff6 100644
--- a/core/src/main/java/org/bouncycastle/math/ec/IntArray.java
+++ b/core/src/main/java/org/bouncycastle/math/ec/IntArray.java
@@ -287,6 +287,17 @@ class IntArray
return new IntArray(newInts);
}
+ public void addOneShifted(int shift)
+ {
+ int newMinUsedLen = 1 + shift;
+ if (newMinUsedLen > m_ints.length)
+ {
+ m_ints = resizedInts(newMinUsedLen);
+ }
+
+ m_ints[shift] ^= 1;
+ }
+
public void addShifted(IntArray other, int shift)
{
int usedLenOther = other.getUsedLength();