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

NamingAuthority

using Org.BouncyCastle.Asn1.X500; using Org.BouncyCastle.Utilities; using System; using System.Collections.Generic; namespace Org.BouncyCastle.Asn1.IsisMtt.X509 { public class NamingAuthority : Asn1Encodable { public static readonly DerObjectIdentifier IdIsisMttATNamingAuthoritiesRechtWirtschaftSteuern = new DerObjectIdentifier(IsisMttObjectIdentifiers.IdIsisMttATNamingAuthorities?.ToString() + ".1"); private readonly DerObjectIdentifier namingAuthorityID; private readonly string namingAuthorityUrl; private readonly DirectoryString namingAuthorityText; public virtual DerObjectIdentifier NamingAuthorityID => namingAuthorityID; public virtual DirectoryString NamingAuthorityText => namingAuthorityText; public virtual string NamingAuthorityUrl => namingAuthorityUrl; public static NamingAuthority GetInstance(object obj) { if (obj == null || obj is NamingAuthority) return (NamingAuthority)obj; Asn1Sequence asn1Sequence = obj as Asn1Sequence; if (asn1Sequence != null) return new NamingAuthority(asn1Sequence); throw new ArgumentException("unknown object in factory: " + Platform.GetTypeName(obj), "obj"); } public static NamingAuthority GetInstance(Asn1TaggedObject obj, bool isExplicit) { return GetInstance(Asn1Sequence.GetInstance(obj, isExplicit)); } private NamingAuthority(Asn1Sequence seq) { if (seq.Count > 3) throw new ArgumentException("Bad sequence size: " + seq.Count.ToString()); IEnumerator<Asn1Encodable> enumerator = seq.GetEnumerator(); if (enumerator.MoveNext()) { Asn1Encodable current = enumerator.Current; DerObjectIdentifier derObjectIdentifier = current as DerObjectIdentifier; if (derObjectIdentifier != null) namingAuthorityID = derObjectIdentifier; else { DerIA5String derIA5String = current as DerIA5String; if (derIA5String != null) namingAuthorityUrl = derIA5String.GetString(); else { if (!(current is IAsn1String)) throw new ArgumentException("Bad object encountered: " + Platform.GetTypeName(current)); namingAuthorityText = DirectoryString.GetInstance(current); } } } if (enumerator.MoveNext()) { Asn1Encodable current2 = enumerator.Current; DerIA5String derIA5String2 = current2 as DerIA5String; if (derIA5String2 != null) namingAuthorityUrl = derIA5String2.GetString(); else { if (!(current2 is IAsn1String)) throw new ArgumentException("Bad object encountered: " + Platform.GetTypeName(current2)); namingAuthorityText = DirectoryString.GetInstance(current2); } } if (enumerator.MoveNext()) { Asn1Encodable current3 = enumerator.Current; if (!(current3 is IAsn1String)) throw new ArgumentException("Bad object encountered: " + Platform.GetTypeName(current3)); namingAuthorityText = DirectoryString.GetInstance(current3); } } public NamingAuthority(DerObjectIdentifier namingAuthorityID, string namingAuthorityUrl, DirectoryString namingAuthorityText) { this.namingAuthorityID = namingAuthorityID; this.namingAuthorityUrl = namingAuthorityUrl; this.namingAuthorityText = namingAuthorityText; } public override Asn1Object ToAsn1Object() { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(3); asn1EncodableVector.AddOptional(namingAuthorityID); if (namingAuthorityUrl != null) asn1EncodableVector.Add(new DerIA5String(namingAuthorityUrl, true)); asn1EncodableVector.AddOptional(namingAuthorityText); return new DerSequence(asn1EncodableVector); } } }