io.gatling.recorder.internal.bouncycastle.oer.its.ieee1609dot2.basetypes.Signature Maven / Gradle / Ivy
package io.gatling.recorder.internal.bouncycastle.oer.its.ieee1609dot2.basetypes;
import io.gatling.recorder.internal.bouncycastle.asn1.ASN1Choice;
import io.gatling.recorder.internal.bouncycastle.asn1.ASN1Encodable;
import io.gatling.recorder.internal.bouncycastle.asn1.ASN1Object;
import io.gatling.recorder.internal.bouncycastle.asn1.ASN1Primitive;
import io.gatling.recorder.internal.bouncycastle.asn1.ASN1TaggedObject;
import io.gatling.recorder.internal.bouncycastle.asn1.BERTags;
import io.gatling.recorder.internal.bouncycastle.asn1.DERTaggedObject;
/**
*
* Signature ::= CHOICE {
* ecdsaNistP256Signature EcdsaP256Signature,
* ecdsaBrainpoolP256r1Signature EcdsaP256Signature,
* ...
* ecdsaBrainpoolP384r1Signature EcdsaP384Signature
* }
*
*/
public class Signature
extends ASN1Object
implements ASN1Choice
{
public static final int ecdsaNistP256Signature = 0;
public static final int ecdsaBrainpoolP256r1Signature = 1;
public static final int ecdsaBrainpoolP384r1Signature = 2;
private final int choice;
private final ASN1Encodable signature;
public Signature(int choice, ASN1Encodable value)
{
this.choice = choice;
this.signature = value;
}
public static Signature ecdsaNistP256Signature(EcdsaP256Signature v)
{
return new Signature(ecdsaNistP256Signature, v);
}
public static Signature ecdsaBrainpoolP256r1Signature(EcdsaP256Signature v)
{
return new Signature(ecdsaBrainpoolP256r1Signature, v);
}
public static Signature ecdsaBrainpoolP384r1Signature(EcdsaP384Signature v)
{
return new Signature(ecdsaBrainpoolP384r1Signature, v);
}
private Signature(ASN1TaggedObject ato)
{
choice = ato.getTagNo();
switch (choice)
{
case ecdsaNistP256Signature:
case ecdsaBrainpoolP256r1Signature:
signature = EcdsaP256Signature.getInstance(ato.getExplicitBaseObject());
break;
case ecdsaBrainpoolP384r1Signature:
signature = EcdsaP384Signature.getInstance(ato.getExplicitBaseObject());
break;
default:
throw new IllegalArgumentException("invalid choice value " + ato.getTagNo());
}
}
public static Signature getInstance(Object objectAt)
{
if (objectAt instanceof Signature)
{
return (Signature)objectAt;
}
if (objectAt != null)
{
return new Signature(ASN1TaggedObject.getInstance(objectAt, BERTags.CONTEXT_SPECIFIC));
}
return null;
}
public int getChoice()
{
return choice;
}
public ASN1Encodable getSignature()
{
return signature;
}
public ASN1Primitive toASN1Primitive()
{
return new DERTaggedObject(choice, signature);
}
}