Home | History | Annotate | Download | only in pkcs
      1 package org.bouncycastle.asn1.pkcs;
      2 
      3 import org.bouncycastle.asn1.ASN1Encodable;
      4 import org.bouncycastle.asn1.ASN1EncodableVector;
      5 import org.bouncycastle.asn1.ASN1Object;
      6 import org.bouncycastle.asn1.ASN1ObjectIdentifier;
      7 import org.bouncycastle.asn1.ASN1Primitive;
      8 import org.bouncycastle.asn1.ASN1Sequence;
      9 import org.bouncycastle.asn1.ASN1Set;
     10 import org.bouncycastle.asn1.ASN1TaggedObject;
     11 import org.bouncycastle.asn1.DLSequence;
     12 import org.bouncycastle.asn1.DLTaggedObject;
     13 
     14 public class SafeBag
     15     extends ASN1Object
     16 {
     17     private ASN1ObjectIdentifier bagId;
     18     private ASN1Encodable bagValue;
     19     private ASN1Set                     bagAttributes;
     20 
     21     public SafeBag(
     22         ASN1ObjectIdentifier oid,
     23         ASN1Encodable obj)
     24     {
     25         this.bagId = oid;
     26         this.bagValue = obj;
     27         this.bagAttributes = null;
     28     }
     29 
     30     public SafeBag(
     31         ASN1ObjectIdentifier oid,
     32         ASN1Encodable obj,
     33         ASN1Set                 bagAttributes)
     34     {
     35         this.bagId = oid;
     36         this.bagValue = obj;
     37         this.bagAttributes = bagAttributes;
     38     }
     39 
     40     public static SafeBag getInstance(
     41         Object  obj)
     42     {
     43         if (obj instanceof SafeBag)
     44         {
     45             return (SafeBag)obj;
     46         }
     47 
     48         if (obj != null)
     49         {
     50             return new SafeBag(ASN1Sequence.getInstance(obj));
     51         }
     52 
     53         return null;
     54     }
     55 
     56     private SafeBag(
     57         ASN1Sequence    seq)
     58     {
     59         this.bagId = (ASN1ObjectIdentifier)seq.getObjectAt(0);
     60         this.bagValue = ((ASN1TaggedObject)seq.getObjectAt(1)).getObject();
     61         if (seq.size() == 3)
     62         {
     63             this.bagAttributes = (ASN1Set)seq.getObjectAt(2);
     64         }
     65     }
     66 
     67     public ASN1ObjectIdentifier getBagId()
     68     {
     69         return bagId;
     70     }
     71 
     72     public ASN1Encodable getBagValue()
     73     {
     74         return bagValue;
     75     }
     76 
     77     public ASN1Set getBagAttributes()
     78     {
     79         return bagAttributes;
     80     }
     81 
     82     public ASN1Primitive toASN1Primitive()
     83     {
     84         ASN1EncodableVector v = new ASN1EncodableVector();
     85 
     86         v.add(bagId);
     87         v.add(new DLTaggedObject(true, 0, bagValue));
     88 
     89         if (bagAttributes != null)
     90         {
     91             v.add(bagAttributes);
     92         }
     93 
     94         return new DLSequence(v);
     95     }
     96 }
     97