package org.bouncycastle.math.ec;

import java.math.BigInteger;

public class MontgomeryLadderMultiplier extends AbstractECMultiplier
{
    
Montgomery ladder.
/** * Montgomery ladder. */
protected ECPoint multiplyPositive(ECPoint p, BigInteger k) { ECPoint[] R = new ECPoint[]{ p.getCurve().getInfinity(), p }; int n = k.bitLength(); int i = n; while (--i >= 0) { int b = k.testBit(i) ? 1 : 0; int bp = 1 - b; R[bp] = R[bp].add(R[b]); R[b] = R[b].twice(); } return R[0]; } }