| package org.bouncycastle.crypto.params; |
| |
| import java.math.BigInteger; |
| |
| import org.bouncycastle.math.ec.ECConstants; |
| import org.bouncycastle.math.ec.ECCurve; |
| import org.bouncycastle.math.ec.ECPoint; |
| import org.bouncycastle.util.Arrays; |
| |
| public class ECDomainParameters |
| implements ECConstants |
| { |
| private ECCurve curve; |
| private byte[] seed; |
| private ECPoint G; |
| private BigInteger n; |
| private BigInteger h; |
| |
| public ECDomainParameters( |
| ECCurve curve, |
| ECPoint G, |
| BigInteger n) |
| { |
| this(curve, G, n, ONE, null); |
| } |
| |
| public ECDomainParameters( |
| ECCurve curve, |
| ECPoint G, |
| BigInteger n, |
| BigInteger h) |
| { |
| this(curve, G, n, h, null); |
| } |
| |
| public ECDomainParameters( |
| 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; |
| } |
| |
| public ECCurve getCurve() |
| { |
| return curve; |
| } |
| |
| public ECPoint getG() |
| { |
| return G; |
| } |
| |
| public BigInteger getN() |
| { |
| return n; |
| } |
| |
| public BigInteger getH() |
| { |
| return h; |
| } |
| |
| public byte[] getSeed() |
| { |
| return Arrays.clone(seed); |
| } |
| |
| public boolean equals( |
| Object obj) |
| { |
| if (this == obj) |
| { |
| return true; |
| } |
| |
| if ((obj instanceof ECDomainParameters)) |
| { |
| ECDomainParameters other = (ECDomainParameters)obj; |
| |
| return this.curve.equals(other.curve) && this.G.equals(other.G) && this.n.equals(other.n) && this.h.equals(other.h); |
| } |
| |
| return false; |
| } |
| |
| public int hashCode() |
| { |
| int hc = curve.hashCode(); |
| hc *= 37; |
| hc ^= G.hashCode(); |
| hc *= 37; |
| hc ^= n.hashCode(); |
| hc *= 37; |
| hc ^= h.hashCode(); |
| return hc; |
| } |
| } |