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

ResponderID

using Org.BouncyCastle.Asn1.X509; using System; namespace Org.BouncyCastle.Asn1.Ocsp { public class ResponderID : Asn1Encodable, IAsn1Choice { private readonly Asn1Encodable id; public virtual X509Name Name { get { if (id is Asn1OctetString) return null; return X509Name.GetInstance(id); } } public static ResponderID GetInstance(object obj) { if (obj == null || obj is ResponderID) return (ResponderID)obj; Asn1OctetString asn1OctetString = obj as Asn1OctetString; if (asn1OctetString != null) return new ResponderID(asn1OctetString); Asn1TaggedObject asn1TaggedObject = obj as Asn1TaggedObject; if (asn1TaggedObject != null) { if (asn1TaggedObject.TagNo == 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.GetInstanceFromChoice(obj, isExplicit, GetInstance); } public ResponderID(Asn1OctetString id) { if (id == null) throw new ArgumentNullException("id"); this.id = id; } public ResponderID(X509Name id) { if (id == null) throw new ArgumentNullException("id"); this.id = id; } public virtual byte[] GetKeyHash() { return (id as Asn1OctetString)?.GetOctets(); } public override Asn1Object ToAsn1Object() { if (id is Asn1OctetString) return new DerTaggedObject(true, 2, id); return new DerTaggedObject(true, 1, id); } } }