diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/src/main/java/org/bouncycastle/math/ec/ECFieldElement.java | 20 | ||||
-rw-r--r-- | core/src/main/java/org/bouncycastle/math/ec/IntArray.java | 11 |
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(); |