18212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrompackage org.bouncycastle.jce.spec;
28212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom
38212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport org.bouncycastle.math.ec.ECPoint;
48212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom
58212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom/**
68212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom * Elliptic Curve public key specification
78212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom */
88212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrompublic class ECPublicKeySpec
98212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    extends ECKeySpec
108212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom{
118212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    private ECPoint    q;
128212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom
138212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    /**
148212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom     * base constructor
158212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom     *
168212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom     * @param q the public point on the curve.
178212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom     * @param spec the domain parameters for the curve.
188212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom     */
198212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    public ECPublicKeySpec(
208212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom        ECPoint         q,
218212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom        ECParameterSpec spec)
228212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    {
238212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom        super(spec);
248212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom
255db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root        if (q.getCurve() != null)
265db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root        {
275db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root            this.q = q.normalize();
285db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root        }
295db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root        else
305db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root        {
315db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root            this.q = q;
325db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root        }
338212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    }
348212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom
358212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    /**
368212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom     * return the public point q
378212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom     */
388212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    public ECPoint getQ()
398212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    {
408212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom        return q;
418212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom    }
428212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom}
43