using System; namespace Org.BouncyCastle.Asn1.X509 { /** * The OtherName object. *
* OtherName ::= SEQUENCE { * type-id OBJECT IDENTIFIER, * value [0] EXPLICIT ANY DEFINED BY type-id } **/ public class OtherName : Asn1Encodable { /** * OtherName factory method. * @param obj the object used to construct an instance of
* OtherName
. It must be an instance of OtherName
*
or ASN1Sequence
.
* @return the instance of OtherName
built from the
* supplied object.
* @throws java.lang.IllegalArgumentException if the object passed
* to the factory is not an instance of OtherName
or something that
* can be converted into an appropriate ASN1Sequence
.
*/
public static OtherName GetInstance(object obj)
{
if (obj == null)
return null;
if (obj is OtherName otherName)
return otherName;
return new OtherName(Asn1Sequence.GetInstance(obj));
}
public static OtherName GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
}
private readonly DerObjectIdentifier typeID;
private readonly Asn1Encodable value;
/**
* Base constructor.
* @param typeID the type of the other name.
* @param value the ANY object that represents the value.
*/
public OtherName(DerObjectIdentifier typeID, Asn1Encodable value)
{
this.typeID = typeID;
this.value = value;
}
private OtherName(Asn1Sequence seq)
{
this.typeID = DerObjectIdentifier.GetInstance(seq[0]);
this.value = Asn1Utilities.GetExplicitContextBaseObject(Asn1TaggedObject.GetInstance(seq[1]), tagNo: 0);
}
public virtual DerObjectIdentifier TypeID => typeID;
public Asn1Encodable Value => value;
public override Asn1Object ToAsn1Object()
{
return new DerSequence(typeID, new DerTaggedObject(true, 0, value));
}
}
}