diff options
Diffstat (limited to 'bcprov/src/main/java/org/bouncycastle/math/ec/DoubleAddMultiplier.java')
-rw-r--r-- | bcprov/src/main/java/org/bouncycastle/math/ec/DoubleAddMultiplier.java | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/bcprov/src/main/java/org/bouncycastle/math/ec/DoubleAddMultiplier.java b/bcprov/src/main/java/org/bouncycastle/math/ec/DoubleAddMultiplier.java new file mode 100644 index 0000000..aae2e00 --- /dev/null +++ b/bcprov/src/main/java/org/bouncycastle/math/ec/DoubleAddMultiplier.java @@ -0,0 +1,24 @@ +package org.bouncycastle.math.ec; + +import java.math.BigInteger; + +public class DoubleAddMultiplier extends AbstractECMultiplier +{ + /** + * Joye's double-add algorithm. + */ + protected ECPoint multiplyPositive(ECPoint p, BigInteger k) + { + ECPoint[] R = new ECPoint[]{ p.getCurve().getInfinity(), p }; + + int n = k.bitLength(); + for (int i = 0; i < n; ++i) + { + int b = k.testBit(i) ? 1 : 0; + int bp = 1 - b; + R[bp] = R[bp].twicePlus(R[b]); + } + + return R[0]; + } +} |