1package org.bouncycastle.asn1.pkcs;
2
3import org.bouncycastle.asn1.ASN1Encodable;
4import org.bouncycastle.asn1.ASN1EncodableVector;
5import org.bouncycastle.asn1.ASN1Object;
6import org.bouncycastle.asn1.ASN1ObjectIdentifier;
7import org.bouncycastle.asn1.ASN1Primitive;
8import org.bouncycastle.asn1.ASN1Sequence;
9import org.bouncycastle.asn1.DERSequence;
10import org.bouncycastle.asn1.DERTaggedObject;
11
12public class CRLBag
13    extends ASN1Object
14{
15    private ASN1ObjectIdentifier crlId;
16    private ASN1Encodable crlValue;
17
18    private CRLBag(
19        ASN1Sequence seq)
20    {
21        this.crlId = (ASN1ObjectIdentifier)seq.getObjectAt(0);
22        this.crlValue = ((DERTaggedObject)seq.getObjectAt(1)).getObject();
23    }
24
25    public static CRLBag getInstance(Object o)
26    {
27        if (o instanceof CRLBag)
28        {
29            return (CRLBag)o;
30        }
31        else if (o != null)
32        {
33            return new CRLBag(ASN1Sequence.getInstance(o));
34        }
35
36        return null;
37    }
38
39    public CRLBag(
40        ASN1ObjectIdentifier crlId,
41        ASN1Encodable crlValue)
42    {
43        this.crlId = crlId;
44        this.crlValue = crlValue;
45    }
46
47    public ASN1ObjectIdentifier getcrlId()
48    {
49        return crlId;
50    }
51
52    public ASN1Encodable getCRLValue()
53    {
54        return crlValue;
55    }
56
57    /**
58     * <pre>
59     CRLBag ::= SEQUENCE {
60     crlId  BAG-TYPE.&id ({CRLTypes}),
61     crlValue  [0] EXPLICIT BAG-TYPE.&Type ({CRLTypes}{@crlId})
62     }
63
64     x509CRL BAG-TYPE ::= {OCTET STRING IDENTIFIED BY {certTypes 1}
65     -- DER-encoded X.509 CRL stored in OCTET STRING
66
67     CRLTypes BAG-TYPE ::= {
68     x509CRL,
69     ... -- For future extensions
70     }
71       </pre>
72     */
73    public ASN1Primitive toASN1Primitive()
74    {
75        ASN1EncodableVector  v = new ASN1EncodableVector();
76
77        v.add(crlId);
78        v.add(new DERTaggedObject(0, crlValue));
79
80        return new DERSequence(v);
81    }
82}
83