package org.bouncycastle.jce.spec;

import org.bouncycastle.math.ec.ECCurve;
import org.bouncycastle.math.ec.ECPoint;

import java.math.BigInteger;
import java.security.spec.AlgorithmParameterSpec;

basic domain parameters for an Elliptic Curve public or private key.
/** * basic domain parameters for an Elliptic Curve public or private key. */
public class ECParameterSpec implements AlgorithmParameterSpec { private ECCurve curve; private byte[] seed; private ECPoint G; private BigInteger n; private BigInteger h; public ECParameterSpec( ECCurve curve, ECPoint G, BigInteger n) { this.curve = curve; this.G = G.normalize(); this.n = n; this.h = BigInteger.valueOf(1); this.seed = null; } public ECParameterSpec( ECCurve curve, ECPoint G, BigInteger n, BigInteger h) { this.curve = curve; this.G = G.normalize(); this.n = n; this.h = h; this.seed = null; } public ECParameterSpec( ECCurve curve, ECPoint G, BigInteger n, BigInteger h, byte[] seed) { this.curve = curve; this.G = G.normalize(); this.n = n; this.h = h; this.seed = seed; }
return the curve along which the base point lies.
Returns:the curve
/** * return the curve along which the base point lies. * @return the curve */
public ECCurve getCurve() { return curve; }
return the base point we are using for these domain parameters.
Returns:the base point.
/** * return the base point we are using for these domain parameters. * @return the base point. */
public ECPoint getG() { return G; }
return the order N of G
Returns:the order
/** * return the order N of G * @return the order */
public BigInteger getN() { return n; }
return the cofactor H to the order of G.
Returns:the cofactor
/** * return the cofactor H to the order of G. * @return the cofactor */
public BigInteger getH() { return h; }
return the seed used to generate this curve (if available).
Returns:the random seed
/** * return the seed used to generate this curve (if available). * @return the random seed */
public byte[] getSeed() { return seed; } public boolean equals(Object o) { if (!(o instanceof ECParameterSpec)) { return false; } ECParameterSpec other = (ECParameterSpec)o; return this.getCurve().equals(other.getCurve()) && this.getG().equals(other.getG()); } public int hashCode() { return this.getCurve().hashCode() ^ this.getG().hashCode(); } }