SemanticsInformation
using Org.BouncyCastle.Utilities;
using System;
using System.Collections.Generic;
namespace Org.BouncyCastle.Asn1.X509.Qualified
{
public class SemanticsInformation : Asn1Encodable
{
private readonly DerObjectIdentifier semanticsIdentifier;
private readonly GeneralName[] nameRegistrationAuthorities;
public DerObjectIdentifier SemanticsIdentifier => semanticsIdentifier;
public static SemanticsInformation GetInstance(object obj)
{
if (obj == null || obj is SemanticsInformation)
return (SemanticsInformation)obj;
if (obj is Asn1Sequence)
return new SemanticsInformation(Asn1Sequence.GetInstance(obj));
throw new ArgumentException("unknown object in GetInstance: " + Platform.GetTypeName(obj), "obj");
}
public SemanticsInformation(Asn1Sequence seq)
{
if (seq.Count < 1)
throw new ArgumentException("no objects in SemanticsInformation");
IEnumerator<Asn1Encodable> enumerator = seq.GetEnumerator();
enumerator.MoveNext();
Asn1Encodable asn1Encodable = enumerator.Current;
DerObjectIdentifier derObjectIdentifier = asn1Encodable as DerObjectIdentifier;
if (derObjectIdentifier != null) {
semanticsIdentifier = derObjectIdentifier;
asn1Encodable = ((!enumerator.MoveNext()) ? null : enumerator.Current);
}
if (asn1Encodable != null)
nameRegistrationAuthorities = Asn1Sequence.GetInstance(asn1Encodable).MapElements(GeneralName.GetInstance);
}
public SemanticsInformation(DerObjectIdentifier semanticsIdentifier, GeneralName[] generalNames)
{
this.semanticsIdentifier = semanticsIdentifier;
nameRegistrationAuthorities = generalNames;
}
public SemanticsInformation(DerObjectIdentifier semanticsIdentifier)
{
this.semanticsIdentifier = semanticsIdentifier;
}
public SemanticsInformation(GeneralName[] generalNames)
{
nameRegistrationAuthorities = generalNames;
}
public GeneralName[] GetNameRegistrationAuthorities()
{
return nameRegistrationAuthorities;
}
public override Asn1Object ToAsn1Object()
{
Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(2);
asn1EncodableVector.AddOptional(semanticsIdentifier);
if (nameRegistrationAuthorities != null) {
Asn1EncodableVector asn1EncodableVector2 = asn1EncodableVector;
Asn1Encodable[] elements = nameRegistrationAuthorities;
asn1EncodableVector2.Add(new DerSequence(elements));
}
return new DerSequence(asn1EncodableVector);
}
}
}