diff options
Diffstat (limited to 'libraries/spongycastle/core/src/main/java/org/spongycastle/math/ec/AbstractECMultiplier.java')
-rw-r--r-- | libraries/spongycastle/core/src/main/java/org/spongycastle/math/ec/AbstractECMultiplier.java | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/libraries/spongycastle/core/src/main/java/org/spongycastle/math/ec/AbstractECMultiplier.java b/libraries/spongycastle/core/src/main/java/org/spongycastle/math/ec/AbstractECMultiplier.java new file mode 100644 index 000000000..93de81c9f --- /dev/null +++ b/libraries/spongycastle/core/src/main/java/org/spongycastle/math/ec/AbstractECMultiplier.java @@ -0,0 +1,20 @@ +package org.spongycastle.math.ec; + +import java.math.BigInteger; + +public abstract class AbstractECMultiplier implements ECMultiplier +{ + public ECPoint multiply(ECPoint p, BigInteger k) + { + int sign = k.signum(); + if (sign == 0 || p.isInfinity()) + { + return p.getCurve().getInfinity(); + } + + ECPoint positive = multiplyPositive(p, k.abs()); + return sign > 0 ? positive : positive.negate(); + } + + protected abstract ECPoint multiplyPositive(ECPoint p, BigInteger k); +} |