18212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrompackage org.bouncycastle.crypto.params;
28212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom
38212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport java.math.BigInteger;
48212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom
58212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport org.bouncycastle.math.ec.ECConstants;
68212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport org.bouncycastle.math.ec.ECCurve;
78212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport org.bouncycastle.math.ec.ECPoint;
8a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstromimport org.bouncycastle.util.Arrays;
98212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom
108212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrompublic class ECDomainParameters
118212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    implements ECConstants
128212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom{
13a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom    private ECCurve     curve;
14a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom    private byte[]      seed;
15a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom    private ECPoint     G;
16a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom    private BigInteger  n;
17a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom    private BigInteger  h;
188212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom
198212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    public ECDomainParameters(
208212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom        ECCurve     curve,
218212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom        ECPoint     G,
228212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom        BigInteger  n)
238212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    {
24a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom        this(curve, G, n, ONE, null);
258212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    }
268212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom
278212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    public ECDomainParameters(
288212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom        ECCurve     curve,
298212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom        ECPoint     G,
308212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom        BigInteger  n,
318212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom        BigInteger  h)
328212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    {
33a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom        this(curve, G, n, h, null);
348212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    }
358212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom
368212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    public ECDomainParameters(
378212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom        ECCurve     curve,
388212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom        ECPoint     G,
398212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom        BigInteger  n,
408212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom        BigInteger  h,
418212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom        byte[]      seed)
428212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    {
438212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom        this.curve = curve;
448212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom        this.G = G;
458212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom        this.n = n;
468212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom        this.h = h;
478212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom        this.seed = seed;
488212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    }
498212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom
508212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    public ECCurve getCurve()
518212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    {
528212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom        return curve;
538212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    }
548212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom
558212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    public ECPoint getG()
568212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    {
578212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom        return G;
588212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    }
598212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom
608212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    public BigInteger getN()
618212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    {
628212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom        return n;
638212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    }
648212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom
658212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    public BigInteger getH()
668212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    {
678212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom        return h;
688212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    }
698212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom
708212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    public byte[] getSeed()
718212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    {
72a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom        return Arrays.clone(seed);
738212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    }
748212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom}
75