14eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootpackage org.bouncycastle.asn1.ocsp;
24eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
34eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport java.util.Enumeration;
44eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
54eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.ASN1EncodableVector;
64eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.ASN1GeneralizedTime;
74eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.ASN1Integer;
84eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.ASN1Object;
94eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.ASN1Primitive;
104eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.ASN1Sequence;
114eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.ASN1TaggedObject;
124eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.DERIA5String;
134eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.DERSequence;
144eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootimport org.bouncycastle.asn1.DERTaggedObject;
154eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
164eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Rootpublic class CrlID
174eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    extends ASN1Object
184eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root{
194eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    private DERIA5String         crlUrl;
204eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    private ASN1Integer          crlNum;
214eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    private ASN1GeneralizedTime  crlTime;
224eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
234eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    private CrlID(
244eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        ASN1Sequence    seq)
254eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    {
264eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        Enumeration    e = seq.getObjects();
274eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
284eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        while (e.hasMoreElements())
294eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        {
304eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root            ASN1TaggedObject    o = (ASN1TaggedObject)e.nextElement();
314eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
324eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root            switch (o.getTagNo())
334eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root            {
344eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root            case 0:
354eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root                crlUrl = DERIA5String.getInstance(o, true);
364eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root                break;
374eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root            case 1:
384eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root                crlNum = ASN1Integer.getInstance(o, true);
394eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root                break;
404eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root            case 2:
414eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root                crlTime = ASN1GeneralizedTime.getInstance(o, true);
424eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root                break;
434eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root            default:
444eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root                throw new IllegalArgumentException(
454eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root                        "unknown tag number: " + o.getTagNo());
464eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root            }
474eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        }
484eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    }
494eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
504eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    public static CrlID getInstance(
514eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        Object  obj)
524eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    {
534eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        if (obj instanceof CrlID)
544eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        {
554eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root            return (CrlID)obj;
564eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        }
574eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        else if (obj != null)
584eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        {
594eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root            return new CrlID(ASN1Sequence.getInstance(obj));
604eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        }
614eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
624eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        return null;
634eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    }
644eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
654eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    public DERIA5String getCrlUrl()
664eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    {
674eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        return crlUrl;
684eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    }
694eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
704eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    public ASN1Integer getCrlNum()
714eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    {
724eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        return crlNum;
734eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    }
744eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
754eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    public ASN1GeneralizedTime getCrlTime()
764eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    {
774eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        return crlTime;
784eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    }
794eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
804eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    /**
814eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root     * Produce an object suitable for an ASN1OutputStream.
824eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root     * <pre>
834eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root     * CrlID ::= SEQUENCE {
844eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root     *     crlUrl               [0]     EXPLICIT IA5String OPTIONAL,
854eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root     *     crlNum               [1]     EXPLICIT INTEGER OPTIONAL,
864eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root     *     crlTime              [2]     EXPLICIT GeneralizedTime OPTIONAL }
874eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root     * </pre>
884eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root     */
894eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    public ASN1Primitive toASN1Primitive()
904eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    {
914eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        ASN1EncodableVector    v = new ASN1EncodableVector();
924eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
934eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        if (crlUrl != null)
944eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        {
954eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root            v.add(new DERTaggedObject(true, 0, crlUrl));
964eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        }
974eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
984eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        if (crlNum != null)
994eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        {
1004eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root            v.add(new DERTaggedObject(true, 1, crlNum));
1014eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        }
1024eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
1034eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        if (crlTime != null)
1044eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        {
1054eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root            v.add(new DERTaggedObject(true, 2, crlTime));
1064eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        }
1074eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root
1084eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root        return new DERSequence(v);
1094eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root    }
1104eb438010b8024cfa97cdad1906a8e6963a16f5bKenny Root}
111