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

SemanticsInformation

using System; namespace Org.BouncyCastle.Asn1.X509.Qualified { public class SemanticsInformation : Asn1Encodable { private readonly DerObjectIdentifier m_semanticsIdentifier; private readonly GeneralName[] m_nameRegistrationAuthorities; public DerObjectIdentifier SemanticsIdentifier => m_semanticsIdentifier; public static SemanticsInformation GetInstance(object obj) { if (obj == null) return null; SemanticsInformation semanticsInformation = obj as SemanticsInformation; if (semanticsInformation != null) return semanticsInformation; return new SemanticsInformation(Asn1Sequence.GetInstance(obj)); } public static SemanticsInformation GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new SemanticsInformation(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } public static SemanticsInformation GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new SemanticsInformation(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } [Obsolete("Use 'GetInstance' instead")] public SemanticsInformation(Asn1Sequence seq) { int count = seq.Count; int sequencePosition = 0; if (count < 1 || count > 2) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); m_semanticsIdentifier = Asn1Utilities.ReadOptional(seq, ref sequencePosition, DerObjectIdentifier.GetOptional); m_nameRegistrationAuthorities = Asn1Utilities.ReadOptional(seq, ref sequencePosition, Asn1Sequence.GetOptional)?.MapElements(GeneralName.GetInstance); if (sequencePosition != count) throw new ArgumentException("Unexpected elements in sequence", "seq"); } public SemanticsInformation(DerObjectIdentifier semanticsIdentifier) : this(semanticsIdentifier, null) { } public SemanticsInformation(GeneralName[] generalNames) : this(null, generalNames) { } public SemanticsInformation(DerObjectIdentifier semanticsIdentifier, GeneralName[] generalNames) { if (semanticsIdentifier == null && generalNames == null) throw new ArgumentException("At least one option must be present"); m_semanticsIdentifier = semanticsIdentifier; m_nameRegistrationAuthorities = generalNames; } public GeneralName[] GetNameRegistrationAuthorities() { return m_nameRegistrationAuthorities; } public override Asn1Object ToAsn1Object() { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(2); asn1EncodableVector.AddOptional(m_semanticsIdentifier); Asn1Encodable[] nameRegistrationAuthorities = m_nameRegistrationAuthorities; asn1EncodableVector.AddOptional(DerSequence.FromElementsOptional(nameRegistrationAuthorities)); return new DerSequence(asn1EncodableVector); } } }