14c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrompackage org.bouncycastle.asn1.pkcs;
24c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
34c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Encodable;
44c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1EncodableVector;
54c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Object;
64c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1ObjectIdentifier;
74c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Primitive;
84c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Sequence;
94c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.DERSequence;
104c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.DERTaggedObject;
114c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
124c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrompublic class CRLBag
134c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    extends ASN1Object
144c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom{
154c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    private ASN1ObjectIdentifier crlId;
164c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    private ASN1Encodable crlValue;
174c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
184c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    private CRLBag(
194c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        ASN1Sequence seq)
204c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    {
214c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        this.crlId = (ASN1ObjectIdentifier)seq.getObjectAt(0);
224c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        this.crlValue = ((DERTaggedObject)seq.getObjectAt(1)).getObject();
234c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    }
244c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
254c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public static CRLBag getInstance(Object o)
264c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    {
274c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        if (o instanceof CRLBag)
284c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        {
294c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            return (CRLBag)o;
304c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        }
314c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        else if (o != null)
324c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        {
334c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            return new CRLBag(ASN1Sequence.getInstance(o));
344c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        }
354c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
364c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        return null;
374c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    }
384c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
394c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public CRLBag(
404c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        ASN1ObjectIdentifier crlId,
414c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        ASN1Encodable crlValue)
424c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    {
434c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        this.crlId = crlId;
444c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        this.crlValue = crlValue;
454c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    }
464c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
474c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public ASN1ObjectIdentifier getcrlId()
484c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    {
494c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        return crlId;
504c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    }
514c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
524c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public ASN1Encodable getCRLValue()
534c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    {
544c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        return crlValue;
554c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    }
564c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
574c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    /**
584c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom     * <pre>
594c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom     CRLBag ::= SEQUENCE {
604c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom     crlId  BAG-TYPE.&id ({CRLTypes}),
614c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom     crlValue  [0] EXPLICIT BAG-TYPE.&Type ({CRLTypes}{@crlId})
624c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom     }
634c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
644c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom     x509CRL BAG-TYPE ::= {OCTET STRING IDENTIFIED BY {certTypes 1}
654c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom     -- DER-encoded X.509 CRL stored in OCTET STRING
664c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
674c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom     CRLTypes BAG-TYPE ::= {
684c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom     x509CRL,
694c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom     ... -- For future extensions
704c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom     }
714c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom       </pre>
724c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom     */
734c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public ASN1Primitive toASN1Primitive()
744c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    {
754c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        ASN1EncodableVector  v = new ASN1EncodableVector();
764c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
774c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        v.add(crlId);
784c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        v.add(new DERTaggedObject(0, crlValue));
794c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
804c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        return new DERSequence(v);
814c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    }
824c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom}
83