diff options
Diffstat (limited to 'crypto/src/math/ec/multiplier/AbstractECMultiplier.cs')
-rw-r--r-- | crypto/src/math/ec/multiplier/AbstractECMultiplier.cs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/crypto/src/math/ec/multiplier/AbstractECMultiplier.cs b/crypto/src/math/ec/multiplier/AbstractECMultiplier.cs new file mode 100644 index 000000000..fe683726f --- /dev/null +++ b/crypto/src/math/ec/multiplier/AbstractECMultiplier.cs @@ -0,0 +1,18 @@ +namespace Org.BouncyCastle.Math.EC.Multiplier +{ + public abstract class AbstractECMultiplier + : ECMultiplier + { + public virtual ECPoint Multiply(ECPoint p, BigInteger k) + { + int sign = k.SignValue; + if (sign == 0 || p.IsInfinity) + return p.Curve.Infinity; + + ECPoint positive = MultiplyPositive(p, k.Abs()); + return sign > 0 ? positive : positive.Negate(); + } + + protected abstract ECPoint MultiplyPositive(ECPoint p, BigInteger k); + } +} |