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);
}
}
}