All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.bugvm.bouncycastle.jce.spec.ECNamedCurveSpec Maven / Gradle / Ivy
package com.bugvm.bouncycastle.jce.spec;
import java.math.BigInteger;
import java.security.spec.ECFieldF2m;
import java.security.spec.ECFieldFp;
import java.security.spec.ECPoint;
import java.security.spec.EllipticCurve;
import com.bugvm.bouncycastle.math.ec.ECCurve;
/**
* specification signifying that the curve parameters can also be
* referred to by name.
*/
public class ECNamedCurveSpec
extends java.security.spec.ECParameterSpec
{
private String name;
private static EllipticCurve convertCurve(
ECCurve curve,
byte[] seed)
{
if (curve instanceof ECCurve.Fp)
{
return new EllipticCurve(new ECFieldFp(((ECCurve.Fp)curve).getQ()), curve.getA().toBigInteger(), curve.getB().toBigInteger(), seed);
}
else
{
ECCurve.F2m curveF2m = (ECCurve.F2m)curve;
int ks[];
if (curveF2m.isTrinomial())
{
ks = new int[] { curveF2m.getK1() };
return new EllipticCurve(new ECFieldF2m(curveF2m.getM(), ks), curve.getA().toBigInteger(), curve.getB().toBigInteger(), seed);
}
else
{
ks = new int[] { curveF2m.getK3(), curveF2m.getK2(), curveF2m.getK1() };
return new EllipticCurve(new ECFieldF2m(curveF2m.getM(), ks), curve.getA().toBigInteger(), curve.getB().toBigInteger(), seed);
}
}
}
private static ECPoint convertPoint(
com.bugvm.bouncycastle.math.ec.ECPoint g)
{
return new ECPoint(g.getX().toBigInteger(), g.getY().toBigInteger());
}
public ECNamedCurveSpec(
String name,
ECCurve curve,
com.bugvm.bouncycastle.math.ec.ECPoint g,
BigInteger n)
{
super(convertCurve(curve, null), convertPoint(g), n, 1);
this.name = name;
}
public ECNamedCurveSpec(
String name,
EllipticCurve curve,
ECPoint g,
BigInteger n)
{
super(curve, g, n, 1);
this.name = name;
}
public ECNamedCurveSpec(
String name,
ECCurve curve,
com.bugvm.bouncycastle.math.ec.ECPoint g,
BigInteger n,
BigInteger h)
{
super(convertCurve(curve, null), convertPoint(g), n, h.intValue());
this.name = name;
}
public ECNamedCurveSpec(
String name,
EllipticCurve curve,
ECPoint g,
BigInteger n,
BigInteger h)
{
super(curve, g, n, h.intValue());
this.name = name;
}
public ECNamedCurveSpec(
String name,
ECCurve curve,
com.bugvm.bouncycastle.math.ec.ECPoint g,
BigInteger n,
BigInteger h,
byte[] seed)
{
super(convertCurve(curve, seed), convertPoint(g), n, h.intValue());
this.name = name;
}
/**
* return the name of the curve the EC domain parameters belong to.
*/
public String getName()
{
return name;
}
}