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

IetfAttrSyntax

public class IetfAttrSyntax : Asn1Encodable
using System; namespace Org.BouncyCastle.Asn1.X509 { public class IetfAttrSyntax : Asn1Encodable { public const int ValueOctets = 1; public const int ValueOid = 2; public const int ValueUtf8 = 3; private readonly GeneralNames m_policyAuthority; private readonly Asn1Sequence m_values; private readonly int m_valueChoice = -1; public GeneralNames PolicyAuthority => m_policyAuthority; public int ValueType => m_valueChoice; public static IetfAttrSyntax GetInstance(object obj) { if (obj == null) return null; IetfAttrSyntax ietfAttrSyntax = obj as IetfAttrSyntax; if (ietfAttrSyntax != null) return ietfAttrSyntax; return new IetfAttrSyntax(Asn1Sequence.GetInstance(obj)); } public static IetfAttrSyntax GetInstance(Asn1TaggedObject obj, bool isExplicit) { return new IetfAttrSyntax(Asn1Sequence.GetInstance(obj, isExplicit)); } public static IetfAttrSyntax GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new IetfAttrSyntax(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } [Obsolete("Use 'GetInstance' instead")] public IetfAttrSyntax(Asn1Sequence seq) { int count = seq.Count; int sequencePosition = 0; if (count < 1 || count > 2) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); m_policyAuthority = Asn1Utilities.ReadOptionalContextTagged(seq, ref sequencePosition, 0, false, GeneralNames.GetTagged); m_values = Asn1Sequence.GetInstance(seq[sequencePosition++]); if (sequencePosition != count) throw new ArgumentException("Unexpected elements in sequence", "seq"); int num2 = -1; foreach (Asn1Encodable value in m_values) { int num3; if (value is DerObjectIdentifier) num3 = 2; else if (value is DerUtf8String) { num3 = 3; } else { if (!(value is DerOctetString)) throw new ArgumentException("Bad value type encoding IetfAttrSyntax"); num3 = 1; } if (num2 < 0) num2 = num3; else if (num3 != num2) { throw new ArgumentException("Mix of value types in IetfAttrSyntax"); } } m_valueChoice = num2; } public object[] GetValues() { switch (m_valueChoice) { case 1: return m_values.MapElements(Asn1OctetString.GetInstance); case 2: return m_values.MapElements(DerObjectIdentifier.GetInstance); case 3: return m_values.MapElements(DerUtf8String.GetInstance); default: return Array.Empty<object>(); } } public override Asn1Object ToAsn1Object() { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(2); asn1EncodableVector.AddOptionalTagged(false, 0, m_policyAuthority); asn1EncodableVector.Add(m_values); return new DerSequence(asn1EncodableVector); } } }