CertStatus
using Org.BouncyCastle.Utilities;
using System;
namespace Org.BouncyCastle.Asn1.Ocsp
{
public class CertStatus : Asn1Encodable, IAsn1Choice
{
private readonly int tagNo;
private readonly Asn1Encodable value;
public int TagNo => tagNo;
public Asn1Encodable Status => value;
public CertStatus()
{
tagNo = 0;
value = DerNull.Instance;
}
public CertStatus(RevokedInfo info)
{
tagNo = 1;
value = info;
}
public CertStatus(int tagNo, Asn1Encodable value)
{
this.tagNo = tagNo;
this.value = value;
}
public CertStatus(Asn1TaggedObject choice)
{
tagNo = choice.TagNo;
switch (choice.TagNo) {
case 0:
value = Asn1Null.GetInstance(choice, false);
break;
case 1:
value = RevokedInfo.GetInstance(choice, false);
break;
case 2:
value = Asn1Null.GetInstance(choice, false);
break;
default:
throw new ArgumentException("Unknown tag encountered: " + Asn1Utilities.GetTagText(choice));
}
}
public static CertStatus GetInstance(object obj)
{
if (obj == null)
return null;
CertStatus certStatus = obj as CertStatus;
if (certStatus != null)
return certStatus;
Asn1TaggedObject asn1TaggedObject = obj as Asn1TaggedObject;
if (asn1TaggedObject != null)
return new CertStatus(asn1TaggedObject);
throw new ArgumentException("unknown object in factory: " + Platform.GetTypeName(obj), "obj");
}
public static CertStatus GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return Asn1Utilities.GetInstanceFromChoice(taggedObject, declaredExplicit, GetInstance);
}
public override Asn1Object ToAsn1Object()
{
return new DerTaggedObject(false, tagNo, value);
}
}
}