package org.bouncycastle.asn1.x9; import org.bouncycastle.asn1.ASN1Choice; import org.bouncycastle.asn1.ASN1Null; import org.bouncycastle.asn1.ASN1Object; import org.bouncycastle.asn1.ASN1ObjectIdentifier; import org.bouncycastle.asn1.ASN1Primitive; import org.bouncycastle.asn1.ASN1TaggedObject; public class X962Parameters extends ASN1Object implements ASN1Choice { private ASN1Primitive params = null; public static X962Parameters getInstance( Object obj) { if (obj == null || obj instanceof X962Parameters) { return (X962Parameters)obj; } if (obj instanceof ASN1Primitive) { return new X962Parameters((ASN1Primitive)obj); } throw new IllegalArgumentException("unknown object in getInstance()"); } public static X962Parameters getInstance( ASN1TaggedObject obj, boolean explicit) { return getInstance(obj.getObject()); // must be explicitly tagged } public X962Parameters( X9ECParameters ecParameters) { this.params = ecParameters.toASN1Primitive(); } public X962Parameters( ASN1ObjectIdentifier namedCurve) { this.params = namedCurve; } public X962Parameters( ASN1Primitive obj) { this.params = obj; } public boolean isNamedCurve() { return (params instanceof ASN1ObjectIdentifier); } public boolean isImplicitlyCA() { return (params instanceof ASN1Null); } public ASN1Primitive getParameters() { return params; } /** * Produce an object suitable for an ASN1OutputStream. *
     * Parameters ::= CHOICE {
     *    ecParameters ECParameters,
     *    namedCurve   CURVES.&id({CurveNames}),
     *    implicitlyCA NULL
     * }
     * 
*/ public ASN1Primitive toASN1Primitive() { return (ASN1Primitive)params; } }