All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bouncycastle.math.ec.AbstractECMultiplier Maven / Gradle / Ivy

Go to download

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.

There is a newer version: 2.73.7
Show newest version
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