<PackageReference Include="BouncyCastle.Cryptography" Version="2.7.0-beta.98" />

NameOrPseudonym

using Org.BouncyCastle.Asn1.X500; using System; namespace Org.BouncyCastle.Asn1.X509.SigI { public class NameOrPseudonym : Asn1Encodable, IAsn1Choice { private readonly DirectoryString m_pseudonym; private readonly DirectoryString m_surname; private readonly Asn1Sequence m_givenName; public DirectoryString Pseudonym => m_pseudonym; public DirectoryString Surname => m_surname; public static NameOrPseudonym GetInstance(object obj) { return Asn1Utilities.GetInstanceChoice(obj, GetOptional); } public static NameOrPseudonym GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return Asn1Utilities.GetInstanceChoice(taggedObject, declaredExplicit, GetInstance); } public static NameOrPseudonym GetOptional(Asn1Encodable element) { if (element == null) throw new ArgumentNullException("element"); NameOrPseudonym nameOrPseudonym = element as NameOrPseudonym; if (nameOrPseudonym != null) return nameOrPseudonym; Asn1Sequence optional = Asn1Sequence.GetOptional(element); if (optional != null) return new NameOrPseudonym(optional); DirectoryString optional2 = DirectoryString.GetOptional(element); if (optional2 != null) return new NameOrPseudonym(optional2); return null; } public static NameOrPseudonym GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return Asn1Utilities.GetTaggedChoice(taggedObject, declaredExplicit, GetInstance); } public NameOrPseudonym(DirectoryString pseudonym) { if (pseudonym == null) throw new ArgumentNullException("pseudonym"); m_pseudonym = pseudonym; } private NameOrPseudonym(Asn1Sequence seq) { if (seq.Count != 2) throw new ArgumentException("Bad sequence size: " + seq.Count.ToString()); m_surname = DirectoryString.GetInstance(seq[0]); m_givenName = Asn1Sequence.GetInstance(seq[1]); } public NameOrPseudonym(string pseudonym) : this(new DirectoryString(pseudonym)) { } public NameOrPseudonym(DirectoryString surname, Asn1Sequence givenName) { if (surname == null) throw new ArgumentNullException("surname"); m_surname = surname; if (givenName == null) throw new ArgumentNullException("givenName"); m_givenName = givenName; } public DirectoryString[] GetGivenName() { return m_givenName?.MapElements(DirectoryString.GetInstance); } public override Asn1Object ToAsn1Object() { if (m_pseudonym != null) return m_pseudonym.ToAsn1Object(); return new DerSequence(m_surname, m_givenName); } } }