ResponderID
using Org.BouncyCastle.Asn1.X509;
using System;
namespace Org.BouncyCastle.Asn1.Ocsp
{
public class ResponderID : Asn1Encodable, IAsn1Choice
{
private readonly Asn1Encodable m_id;
public virtual X509Name Name {
get {
if (m_id is Asn1OctetString)
return null;
return X509Name.GetInstance(m_id);
}
}
public static ResponderID GetInstance(object obj)
{
return Asn1Utilities.GetInstanceChoice(obj, GetOptional);
}
public static ResponderID GetInstance(Asn1TaggedObject obj, bool isExplicit)
{
return Asn1Utilities.GetInstanceChoice(obj, isExplicit, GetInstance);
}
public static ResponderID GetOptional(Asn1Encodable element)
{
if (element == null)
throw new ArgumentNullException("element");
ResponderID responderID = element as ResponderID;
if (responderID != null)
return responderID;
Asn1TaggedObject optional = Asn1TaggedObject.GetOptional(element);
if (optional != null) {
if (optional.HasContextTag(1))
return new ResponderID(X509Name.GetTagged(optional, true));
if (optional.HasContextTag(2))
return new ResponderID(Asn1OctetString.GetTagged(optional, true));
}
Asn1OctetString asn1OctetString = element as Asn1OctetString;
if (asn1OctetString != null)
return new ResponderID(asn1OctetString);
X509Name optional2 = X509Name.GetOptional(element);
if (optional2 != null)
return new ResponderID(optional2);
return null;
}
public static ResponderID GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return Asn1Utilities.GetTaggedChoice(taggedObject, declaredExplicit, GetInstance);
}
public ResponderID(Asn1OctetString id)
{
if (id == null)
throw new ArgumentNullException("id");
m_id = id;
}
public ResponderID(X509Name id)
{
if (id == null)
throw new ArgumentNullException("id");
m_id = id;
}
public virtual byte[] GetKeyHash()
{
return (m_id as Asn1OctetString)?.GetOctets();
}
public override Asn1Object ToAsn1Object()
{
Asn1OctetString asn1OctetString = m_id as Asn1OctetString;
if (asn1OctetString != null)
return new DerTaggedObject(true, 2, asn1OctetString);
return new DerTaggedObject(true, 1, m_id);
}
}
}