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