org.bouncycastle.math.ec.AbstractECMultiplier Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bcprov-lts8on Show documentation
Show all versions of bcprov-lts8on Show documentation
The Long Term Stable (LTS) Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. This jar contains the JCA/JCE provider and low-level API for the BC LTS version 2.73.7 for Java 8 and later.
package org.bouncycastle.math.ec;
import java.math.BigInteger;
public abstract class AbstractECMultiplier implements ECMultiplier
{
public ECPoint multiply(ECPoint p, BigInteger k)
{
int sign = k.signum();
if (sign == 0 || p.isInfinity())
{
return p.getCurve().getInfinity();
}
ECPoint positive = multiplyPositive(p, k.abs());
ECPoint result = sign > 0 ? positive : positive.negate();
/*
* Although the various multipliers ought not to produce invalid output under normal
* circumstances, a final check here is advised to guard against fault attacks.
*/
return checkResult(result);
}
protected abstract ECPoint multiplyPositive(ECPoint p, BigInteger k);
protected ECPoint checkResult(ECPoint p)
{
return ECAlgorithms.implCheckResult(p);
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy