Admissions
using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Utilities;
using System;
using System.Collections.Generic;
namespace Org.BouncyCastle.Asn1.IsisMtt.X509
{
public class Admissions : Asn1Encodable
{
private readonly GeneralName admissionAuthority;
private readonly NamingAuthority namingAuthority;
private readonly Asn1Sequence professionInfos;
public virtual GeneralName AdmissionAuthority => admissionAuthority;
public virtual NamingAuthority NamingAuthority => namingAuthority;
public static Admissions GetInstance(object obj)
{
if (obj == null || obj is Admissions)
return (Admissions)obj;
Asn1Sequence asn1Sequence = obj as Asn1Sequence;
if (asn1Sequence != null)
return new Admissions(asn1Sequence);
throw new ArgumentException("unknown object in factory: " + Platform.GetTypeName(obj), "obj");
}
private Admissions(Asn1Sequence seq)
{
int num;
if (seq.Count > 3) {
num = seq.Count;
throw new ArgumentException("Bad sequence size: " + num.ToString());
}
IEnumerator<Asn1Encodable> enumerator = seq.GetEnumerator();
enumerator.MoveNext();
Asn1Encodable current = enumerator.Current;
Asn1TaggedObject asn1TaggedObject = current as Asn1TaggedObject;
if (asn1TaggedObject != null) {
num = asn1TaggedObject.TagNo;
switch (num) {
case 0:
admissionAuthority = GeneralName.GetInstance(asn1TaggedObject, true);
break;
case 1:
namingAuthority = NamingAuthority.GetInstance(asn1TaggedObject, true);
break;
default:
throw new ArgumentException("Bad tag number: " + asn1TaggedObject.TagNo.ToString());
}
enumerator.MoveNext();
current = enumerator.Current;
}
Asn1TaggedObject asn1TaggedObject2 = current as Asn1TaggedObject;
if (asn1TaggedObject2 != null) {
if (asn1TaggedObject2.TagNo != 1) {
num = asn1TaggedObject2.TagNo;
throw new ArgumentException("Bad tag number: " + num.ToString());
}
namingAuthority = NamingAuthority.GetInstance(asn1TaggedObject2, true);
enumerator.MoveNext();
current = enumerator.Current;
}
professionInfos = Asn1Sequence.GetInstance(current);
if (enumerator.MoveNext())
throw new ArgumentException("Bad object encountered: " + Platform.GetTypeName(enumerator.Current));
}
public Admissions(GeneralName admissionAuthority, NamingAuthority namingAuthority, ProfessionInfo[] professionInfos)
{
this.admissionAuthority = admissionAuthority;
this.namingAuthority = namingAuthority;
this.professionInfos = new DerSequence(professionInfos);
}
public ProfessionInfo[] GetProfessionInfos()
{
ProfessionInfo[] array = new ProfessionInfo[professionInfos.Count];
int num = 0;
foreach (Asn1Encodable professionInfo in professionInfos) {
array[num++] = ProfessionInfo.GetInstance(professionInfo);
}
return array;
}
public override Asn1Object ToAsn1Object()
{
Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(3);
asn1EncodableVector.AddOptionalTagged(true, 0, admissionAuthority);
asn1EncodableVector.AddOptionalTagged(true, 1, namingAuthority);
asn1EncodableVector.Add(professionInfos);
return new DerSequence(asn1EncodableVector);
}
}
}