using System; using System.Collections; namespace Org.BouncyCastle.Asn1.Ocsp { public class CrlID : Asn1Encodable { private readonly DerIA5String crlUrl; private readonly DerInteger crlNum; private readonly DerGeneralizedTime crlTime; // TODO Add GetInstance method(s) and amke this private? public CrlID( Asn1Sequence seq) { foreach (Asn1TaggedObject o in seq) { switch (o.TagNo) { case 0: crlUrl = DerIA5String.GetInstance(o, true); break; case 1: crlNum = DerInteger.GetInstance(o, true); break; case 2: crlTime = DerGeneralizedTime.GetInstance(o, true); break; default: throw new ArgumentException("unknown tag number: " + o.TagNo); } } } public DerIA5String CrlUrl { get { return crlUrl; } } public DerInteger CrlNum { get { return crlNum; } } public DerGeneralizedTime CrlTime { get { return crlTime; } } /** * Produce an object suitable for an Asn1OutputStream. *
* CrlID ::= Sequence { * crlUrl [0] EXPLICIT IA5String OPTIONAL, * crlNum [1] EXPLICIT Integer OPTIONAL, * crlTime [2] EXPLICIT GeneralizedTime OPTIONAL } **/ public override Asn1Object ToAsn1Object() { Asn1EncodableVector v = new Asn1EncodableVector(); if (crlUrl != null) { v.Add(new DerTaggedObject(true, 0, crlUrl)); } if (crlNum != null) { v.Add(new DerTaggedObject(true, 1, crlNum)); } if (crlTime != null) { v.Add(new DerTaggedObject(true, 2, crlTime)); } return new DerSequence(v); } } }