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