diff options
Diffstat (limited to 'core/src/main/java/org/spongycastle/asn1/x9/X962Parameters.java')
-rw-r--r-- | core/src/main/java/org/spongycastle/asn1/x9/X962Parameters.java | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/core/src/main/java/org/spongycastle/asn1/x9/X962Parameters.java b/core/src/main/java/org/spongycastle/asn1/x9/X962Parameters.java new file mode 100644 index 00000000..7c95793f --- /dev/null +++ b/core/src/main/java/org/spongycastle/asn1/x9/X962Parameters.java @@ -0,0 +1,86 @@ +package org.spongycastle.asn1.x9; + +import org.spongycastle.asn1.ASN1Choice; +import org.spongycastle.asn1.ASN1Null; +import org.spongycastle.asn1.ASN1Object; +import org.spongycastle.asn1.ASN1ObjectIdentifier; +import org.spongycastle.asn1.ASN1Primitive; +import org.spongycastle.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. + * <pre> + * Parameters ::= CHOICE { + * ecParameters ECParameters, + * namedCurve CURVES.&id({CurveNames}), + * implicitlyCA NULL + * } + * </pre> + */ + public ASN1Primitive toASN1Primitive() + { + return (ASN1Primitive)params; + } +} |