using System; using Org.BouncyCastle.Asn1; namespace Org.BouncyCastle.Asn1.Ocsp { public class CertStatus : Asn1Encodable, IAsn1Choice { private readonly int tagNo; private readonly Asn1Encodable value; /** * create a CertStatus object with a tag of zero. */ 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) { this.tagNo = choice.TagNo; switch (choice.TagNo) { case 1: value = RevokedInfo.GetInstance(choice, false); break; case 0: case 2: value = DerNull.Instance; break; } } public static CertStatus GetInstance( object obj) { if (obj == null || obj is CertStatus) { return (CertStatus)obj; } if (obj is Asn1TaggedObject) { return new CertStatus((Asn1TaggedObject)obj); } throw new ArgumentException("unknown object in factory: " + obj.GetType().Name, "obj"); } public int TagNo { get { return tagNo; } } public Asn1Encodable Status { get { return value; } } /** * Produce an object suitable for an Asn1OutputStream. *
         *  CertStatus ::= CHOICE {
         *                  good        [0]     IMPLICIT Null,
         *                  revoked     [1]     IMPLICIT RevokedInfo,
         *                  unknown     [2]     IMPLICIT UnknownInfo }
         * 
*/ public override Asn1Object ToAsn1Object() { return new DerTaggedObject(false, tagNo, value); } } }