18212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrompackage org.bouncycastle.asn1.x9; 28212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 38212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport org.bouncycastle.asn1.ASN1Choice; 48212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport org.bouncycastle.asn1.ASN1Null; 54c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Object; 64c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1ObjectIdentifier; 74c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Primitive; 88212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstromimport org.bouncycastle.asn1.ASN1TaggedObject; 98212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 108212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrompublic class X962Parameters 114c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends ASN1Object 128212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom implements ASN1Choice 138212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom{ 144c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom private ASN1Primitive params = null; 158212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 168212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom public static X962Parameters getInstance( 178212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom Object obj) 188212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 198212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom if (obj == null || obj instanceof X962Parameters) 208212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 218212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom return (X962Parameters)obj; 228212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 238212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 244c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom if (obj instanceof ASN1Primitive) 258212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 264c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return new X962Parameters((ASN1Primitive)obj); 278212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 288212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 298212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom throw new IllegalArgumentException("unknown object in getInstance()"); 308212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 318212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 328212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom public static X962Parameters getInstance( 338212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom ASN1TaggedObject obj, 348212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom boolean explicit) 358212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 368212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom return getInstance(obj.getObject()); // must be explicitly tagged 378212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 388212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 398212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom public X962Parameters( 408212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom X9ECParameters ecParameters) 418212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 424c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom this.params = ecParameters.toASN1Primitive(); 438212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 448212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 458212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom public X962Parameters( 464c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom ASN1ObjectIdentifier namedCurve) 478212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 488212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom this.params = namedCurve; 498212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 508212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 518212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom public X962Parameters( 524c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom ASN1Primitive obj) 538212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 548212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom this.params = obj; 558212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 568212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 578212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom public boolean isNamedCurve() 588212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 594c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return (params instanceof ASN1ObjectIdentifier); 608212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 618212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 628212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom public boolean isImplicitlyCA() 638212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 648212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom return (params instanceof ASN1Null); 658212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 668212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 674c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public ASN1Primitive getParameters() 688212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 698212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom return params; 708212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 718212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom 728212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom /** 738212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom * Produce an object suitable for an ASN1OutputStream. 748212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom * <pre> 758212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom * Parameters ::= CHOICE { 768212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom * ecParameters ECParameters, 778212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom * namedCurve CURVES.&id({CurveNames}), 788212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom * implicitlyCA NULL 798212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom * } 808212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom * </pre> 818212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom */ 824c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public ASN1Primitive toASN1Primitive() 838212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom { 844c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return (ASN1Primitive)params; 858212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom } 868212855a312dc8ebe081a3e08b1d2d8f8757af02Brian Carlstrom} 87