NamingAuthority
using Org.BouncyCastle.Asn1.X500;
using System;
namespace Org.BouncyCastle.Asn1.IsisMtt.X509
{
public class NamingAuthority : Asn1Encodable
{
public static readonly DerObjectIdentifier IdIsisMttATNamingAuthoritiesRechtWirtschaftSteuern = IsisMttObjectIdentifiers.IdIsisMttATNamingAuthorities.Branch("1");
private readonly DerObjectIdentifier m_namingAuthorityID;
private readonly DerIA5String m_namingAuthorityUrl;
private readonly DirectoryString m_namingAuthorityText;
public virtual DerObjectIdentifier NamingAuthorityID => m_namingAuthorityID;
public virtual DirectoryString NamingAuthorityText => m_namingAuthorityText;
public virtual string NamingAuthorityUrl => m_namingAuthorityUrl?.GetString();
public virtual DerIA5String NamingAuthorityUrlData => m_namingAuthorityUrl;
public static NamingAuthority GetInstance(object obj)
{
if (obj == null)
return null;
NamingAuthority namingAuthority = obj as NamingAuthority;
if (namingAuthority != null)
return namingAuthority;
return new NamingAuthority(Asn1Sequence.GetInstance(obj));
}
public static NamingAuthority GetInstance(Asn1TaggedObject obj, bool isExplicit)
{
return new NamingAuthority(Asn1Sequence.GetInstance(obj, isExplicit));
}
public static NamingAuthority GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return new NamingAuthority(Asn1Sequence.GetTagged(taggedObject, declaredExplicit));
}
private NamingAuthority(Asn1Sequence seq)
{
int count = seq.Count;
int sequencePosition = 0;
if (count < 0 || count > 3)
throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq");
m_namingAuthorityID = Asn1Utilities.ReadOptional(seq, ref sequencePosition, DerObjectIdentifier.GetOptional);
m_namingAuthorityUrl = Asn1Utilities.ReadOptional(seq, ref sequencePosition, DerIA5String.GetOptional);
m_namingAuthorityText = Asn1Utilities.ReadOptional(seq, ref sequencePosition, DirectoryString.GetOptional);
if (sequencePosition != count)
throw new ArgumentException("Unexpected elements in sequence", "seq");
}
public NamingAuthority(DerObjectIdentifier namingAuthorityID, string namingAuthorityUrl, DirectoryString namingAuthorityText)
{
m_namingAuthorityID = namingAuthorityID;
m_namingAuthorityUrl = ((namingAuthorityUrl == null) ? null : new DerIA5String(namingAuthorityUrl, true));
m_namingAuthorityText = namingAuthorityText;
}
public override Asn1Object ToAsn1Object()
{
Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(3);
asn1EncodableVector.AddOptional(m_namingAuthorityID);
asn1EncodableVector.AddOptional(m_namingAuthorityUrl);
asn1EncodableVector.AddOptional(m_namingAuthorityText);
return new DerSequence(asn1EncodableVector);
}
}
}