001package org.apache.commons.ssl.org.bouncycastle.asn1.x9; 002 003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Choice; 004import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Null; 005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1ObjectIdentifier; 007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive; 008import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1TaggedObject; 009 010public class X962Parameters 011 extends ASN1Object 012 implements ASN1Choice 013{ 014 private ASN1Primitive params = null; 015 016 public static X962Parameters getInstance( 017 Object obj) 018 { 019 if (obj == null || obj instanceof X962Parameters) 020 { 021 return (X962Parameters)obj; 022 } 023 024 if (obj instanceof ASN1Primitive) 025 { 026 return new X962Parameters((ASN1Primitive)obj); 027 } 028 029 throw new IllegalArgumentException("unknown object in getInstance()"); 030 } 031 032 public static X962Parameters getInstance( 033 ASN1TaggedObject obj, 034 boolean explicit) 035 { 036 return getInstance(obj.getObject()); // must be explicitly tagged 037 } 038 039 public X962Parameters( 040 X9ECParameters ecParameters) 041 { 042 this.params = ecParameters.toASN1Primitive(); 043 } 044 045 public X962Parameters( 046 ASN1ObjectIdentifier namedCurve) 047 { 048 this.params = namedCurve; 049 } 050 051 public X962Parameters( 052 ASN1Primitive obj) 053 { 054 this.params = obj; 055 } 056 057 public boolean isNamedCurve() 058 { 059 return (params instanceof ASN1ObjectIdentifier); 060 } 061 062 public boolean isImplicitlyCA() 063 { 064 return (params instanceof ASN1Null); 065 } 066 067 public ASN1Primitive getParameters() 068 { 069 return params; 070 } 071 072 /** 073 * Produce an object suitable for an ASN1OutputStream. 074 * <pre> 075 * Parameters ::= CHOICE { 076 * ecParameters ECParameters, 077 * namedCurve CURVES.&id({CurveNames}), 078 * implicitlyCA NULL 079 * } 080 * </pre> 081 */ 082 public ASN1Primitive toASN1Primitive() 083 { 084 return (ASN1Primitive)params; 085 } 086}