Home | History | Annotate | Download | only in x509
      1 package org.bouncycastle.asn1.x509;
      2 
      3 import org.bouncycastle.asn1.ASN1EncodableVector;
      4 import org.bouncycastle.asn1.ASN1Object;
      5 import org.bouncycastle.asn1.ASN1Primitive;
      6 import org.bouncycastle.asn1.ASN1Sequence;
      7 import org.bouncycastle.asn1.DERBitString;
      8 import org.bouncycastle.asn1.DERSequence;
      9 
     10 public class AttributeCertificate
     11     extends ASN1Object
     12 {
     13     AttributeCertificateInfo    acinfo;
     14     AlgorithmIdentifier         signatureAlgorithm;
     15     DERBitString                signatureValue;
     16 
     17     /**
     18      * @param obj
     19      * @return an AttributeCertificate object
     20      */
     21     public static AttributeCertificate getInstance(Object obj)
     22     {
     23         if (obj instanceof AttributeCertificate)
     24         {
     25             return (AttributeCertificate)obj;
     26         }
     27         else if (obj != null)
     28         {
     29             return new AttributeCertificate(ASN1Sequence.getInstance(obj));
     30         }
     31 
     32         return null;
     33     }
     34 
     35     public AttributeCertificate(
     36         AttributeCertificateInfo    acinfo,
     37         AlgorithmIdentifier         signatureAlgorithm,
     38         DERBitString                signatureValue)
     39     {
     40         this.acinfo = acinfo;
     41         this.signatureAlgorithm = signatureAlgorithm;
     42         this.signatureValue = signatureValue;
     43     }
     44 
     45     /**
     46      * @deprecated use getInstance() method.
     47      */
     48     public AttributeCertificate(
     49         ASN1Sequence    seq)
     50     {
     51         if (seq.size() != 3)
     52         {
     53             throw new IllegalArgumentException("Bad sequence size: "
     54                     + seq.size());
     55         }
     56 
     57         this.acinfo = AttributeCertificateInfo.getInstance(seq.getObjectAt(0));
     58         this.signatureAlgorithm = AlgorithmIdentifier.getInstance(seq.getObjectAt(1));
     59         this.signatureValue = DERBitString.getInstance(seq.getObjectAt(2));
     60     }
     61 
     62     public AttributeCertificateInfo getAcinfo()
     63     {
     64         return acinfo;
     65     }
     66 
     67     public AlgorithmIdentifier getSignatureAlgorithm()
     68     {
     69         return signatureAlgorithm;
     70     }
     71 
     72     public DERBitString getSignatureValue()
     73     {
     74         return signatureValue;
     75     }
     76 
     77     /**
     78      * Produce an object suitable for an ASN1OutputStream.
     79      * <pre>
     80      *  AttributeCertificate ::= SEQUENCE {
     81      *       acinfo               AttributeCertificateInfo,
     82      *       signatureAlgorithm   AlgorithmIdentifier,
     83      *       signatureValue       BIT STRING
     84      *  }
     85      * </pre>
     86      */
     87     public ASN1Primitive toASN1Primitive()
     88     {
     89         ASN1EncodableVector  v = new ASN1EncodableVector();
     90 
     91         v.add(acinfo);
     92         v.add(signatureAlgorithm);
     93         v.add(signatureValue);
     94 
     95         return new DERSequence(v);
     96     }
     97 }
     98