1 package org.bouncycastle.asn1.x9; 2 3 import org.bouncycastle.asn1.ASN1Choice; 4 import org.bouncycastle.asn1.ASN1Encodable; 5 import org.bouncycastle.asn1.ASN1Null; 6 import org.bouncycastle.asn1.ASN1TaggedObject; 7 import org.bouncycastle.asn1.DERObject; 8 import org.bouncycastle.asn1.DERObjectIdentifier; 9 10 public class X962Parameters 11 extends ASN1Encodable 12 implements ASN1Choice 13 { 14 private DERObject 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 DERObject) 25 { 26 return new X962Parameters((DERObject)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.getDERObject(); 43 } 44 45 public X962Parameters( 46 DERObjectIdentifier namedCurve) 47 { 48 this.params = namedCurve; 49 } 50 51 public X962Parameters( 52 DERObject obj) 53 { 54 this.params = obj; 55 } 56 57 public boolean isNamedCurve() 58 { 59 return (params instanceof DERObjectIdentifier); 60 } 61 62 public boolean isImplicitlyCA() 63 { 64 return (params instanceof ASN1Null); 65 } 66 67 public DERObject 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 DERObject toASN1Object() 83 { 84 return params; 85 } 86 } 87