X962Parameters.java revision e6bf3e8dfa2804891a82075cb469b736321b4827
1package org.bouncycastle.asn1.x9;
2
3import org.bouncycastle.asn1.ASN1Choice;
4import org.bouncycastle.asn1.ASN1Null;
5import org.bouncycastle.asn1.ASN1Object;
6import org.bouncycastle.asn1.ASN1ObjectIdentifier;
7import org.bouncycastle.asn1.ASN1Primitive;
8import org.bouncycastle.asn1.ASN1TaggedObject;
9
10public class X962Parameters
11    extends ASN1Object
12    implements ASN1Choice
13{
14    private ASN1Primitive           params = null;
15
16    public static X962Parameters getInstance(
17        Object obj)
18    {
19        if (obj == null || obj instanceof X962Parameters)
20        {
21            return (X962Parameters)obj;
22        }
23
24        if (obj instanceof ASN1Primitive)
25        {
26            return new X962Parameters((ASN1Primitive)obj);
27        }
28
29        throw new IllegalArgumentException("unknown object in getInstance()");
30    }
31
32    public static X962Parameters getInstance(
33        ASN1TaggedObject obj,
34        boolean          explicit)
35    {
36        return getInstance(obj.getObject()); // must be explicitly tagged
37    }
38
39    public X962Parameters(
40        X9ECParameters      ecParameters)
41    {
42        this.params = ecParameters.toASN1Primitive();
43    }
44
45    public X962Parameters(
46        ASN1ObjectIdentifier  namedCurve)
47    {
48        this.params = namedCurve;
49    }
50
51    public X962Parameters(
52        ASN1Primitive           obj)
53    {
54        this.params = obj;
55    }
56
57    public boolean isNamedCurve()
58    {
59        return (params instanceof ASN1ObjectIdentifier);
60    }
61
62    public boolean isImplicitlyCA()
63    {
64        return (params instanceof ASN1Null);
65    }
66
67    public ASN1Primitive getParameters()
68    {
69        return params;
70    }
71
72    /**
73     * Produce an object suitable for an ASN1OutputStream.
74     * <pre>
75     * Parameters ::= CHOICE {
76     *    ecParameters ECParameters,
77     *    namedCurve   CURVES.&id({CurveNames}),
78     *    implicitlyCA NULL
79     * }
80     * </pre>
81     */
82    public ASN1Primitive toASN1Primitive()
83    {
84        return (ASN1Primitive)params;
85    }
86}
87