1package org.bouncycastle.math.ec;
2
3import java.math.BigInteger;
4
5public abstract class AbstractECMultiplier implements ECMultiplier
6{
7    public ECPoint multiply(ECPoint p, BigInteger k)
8    {
9        int sign = k.signum();
10        if (sign == 0 || p.isInfinity())
11        {
12            return p.getCurve().getInfinity();
13        }
14
15        ECPoint positive = multiplyPositive(p, k.abs());
16        return sign > 0 ? positive : positive.negate();
17    }
18
19    protected abstract ECPoint multiplyPositive(ECPoint p, BigInteger k);
20}
21