<PackageReference Include="BouncyCastle.Cryptography" Version="2.5.0" />

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) { if (obj == null) return null; ResponderID responderID = obj as ResponderID; if (responderID != null) return responderID; Asn1OctetString asn1OctetString = obj as Asn1OctetString; if (asn1OctetString != null) return new ResponderID(asn1OctetString); Asn1TaggedObject asn1TaggedObject = obj as Asn1TaggedObject; if (asn1TaggedObject != null) { if (asn1TaggedObject.HasContextTag(1)) return new ResponderID(X509Name.GetInstance(asn1TaggedObject, true)); return new ResponderID(Asn1OctetString.GetInstance(asn1TaggedObject, true)); } return new ResponderID(X509Name.GetInstance(obj)); } public static ResponderID GetInstance(Asn1TaggedObject obj, bool isExplicit) { return Asn1Utilities.GetInstanceChoice(obj, isExplicit, GetInstance); } 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); } } }