001package org.apache.commons.ssl.org.bouncycastle.asn1.pkcs;
002
003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Encodable;
004import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector;
005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object;
006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1ObjectIdentifier;
007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive;
008import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence;
009import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence;
010import org.apache.commons.ssl.org.bouncycastle.asn1.DERTaggedObject;
011
012public class CRLBag
013    extends ASN1Object
014{
015    private ASN1ObjectIdentifier crlId;
016    private ASN1Encodable crlValue;
017
018    private CRLBag(
019        ASN1Sequence seq)
020    {
021        this.crlId = (ASN1ObjectIdentifier)seq.getObjectAt(0);
022        this.crlValue = ((DERTaggedObject)seq.getObjectAt(1)).getObject();
023    }
024
025    public static CRLBag getInstance(Object o)
026    {
027        if (o instanceof CRLBag)
028        {
029            return (CRLBag)o;
030        }
031        else if (o != null)
032        {
033            return new CRLBag(ASN1Sequence.getInstance(o));
034        }
035
036        return null;
037    }
038
039    public CRLBag(
040        ASN1ObjectIdentifier crlId,
041        ASN1Encodable crlValue)
042    {
043        this.crlId = crlId;
044        this.crlValue = crlValue;
045    }
046
047    public ASN1ObjectIdentifier getcrlId()
048    {
049        return crlId;
050    }
051
052    public ASN1Encodable getCRLValue()
053    {
054        return crlValue;
055    }
056
057    /**
058     * <pre>
059     * CRLBag ::= SEQUENCE {
060     * crlId  BAG-TYPE.&amp;id ({CRLTypes}),
061     * crlValue  [0] EXPLICIT BAG-TYPE.&amp;Type ({CRLTypes}{@crlId})
062     * }
063     *
064     * x509CRL BAG-TYPE ::= {OCTET STRING IDENTIFIED BY {certTypes 1}
065     * -- DER-encoded X.509 CRL stored in OCTET STRING
066         *
067     * CRLTypes BAG-TYPE ::= {
068     * x509CRL,
069     * ... -- For future extensions
070     * }
071     * </pre>
072     */
073    public ASN1Primitive toASN1Primitive()
074    {
075        ASN1EncodableVector  v = new ASN1EncodableVector();
076
077        v.add(crlId);
078        v.add(new DERTaggedObject(0, crlValue));
079
080        return new DERSequence(v);
081    }
082}