package org.bouncycastle.math.ec; | |
import java.math.BigInteger; | |
public class ZSignedDigitL2RMultiplier extends AbstractECMultiplier | |
{ | |
/** | |
* 'Zeroless' Signed Digit Left-to-Right. | |
*/ | |
protected ECPoint multiplyPositive(ECPoint p, BigInteger k) | |
{ | |
ECPoint addP = p.normalize(), subP = addP.negate(); | |
ECPoint R0 = addP; | |
int n = k.bitLength(); | |
int s = k.getLowestSetBit(); | |
int i = n; | |
while (--i > s) | |
{ | |
R0 = R0.twicePlus(k.testBit(i) ? addP : subP); | |
} | |
R0 = R0.timesPow2(s); | |
return R0; | |
} | |
} |