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

Target

public class Target : Asn1Encodable, IAsn1Choice
using Org.BouncyCastle.Utilities; using System; namespace Org.BouncyCastle.Asn1.X509 { public class Target : Asn1Encodable, IAsn1Choice { public enum Choice { Name, Group } private readonly GeneralName targetName; private readonly GeneralName targetGroup; public virtual GeneralName TargetGroup => targetGroup; public virtual GeneralName TargetName => targetName; public static Target GetInstance(object obj) { Target target = obj as Target; if (target != null) return target; Asn1TaggedObject asn1TaggedObject = obj as Asn1TaggedObject; if (asn1TaggedObject != null) return new Target(asn1TaggedObject); throw new ArgumentException("unknown object in factory: " + Platform.GetTypeName(obj), "obj"); } public static Target GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return Asn1Utilities.GetInstanceChoice(taggedObject, declaredExplicit, GetInstance); } public static Target GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return Asn1Utilities.GetTaggedChoice(taggedObject, declaredExplicit, GetInstance); } private Target(Asn1TaggedObject tagObj) { switch (tagObj.TagNo) { case 0: targetName = GeneralName.GetInstance(tagObj, true); break; case 1: targetGroup = GeneralName.GetInstance(tagObj, true); break; default: throw new ArgumentException("unknown tag: " + tagObj.TagNo.ToString()); } } public Target(Choice type, GeneralName name) : this(new DerTaggedObject((int)type, name)) { } public override Asn1Object ToAsn1Object() { if (targetName != null) return new DerTaggedObject(true, 0, targetName); return new DerTaggedObject(true, 1, targetGroup); } } }