Home | History | Annotate | Download | only in x509
      1 package org.bouncycastle.asn1.x509;
      2 
      3 import org.bouncycastle.asn1.ASN1Encodable;
      4 import org.bouncycastle.asn1.ASN1EncodableVector;
      5 import org.bouncycastle.asn1.ASN1Sequence;
      6 import org.bouncycastle.asn1.DERBitString;
      7 import org.bouncycastle.asn1.DERObject;
      8 import org.bouncycastle.asn1.DERSequence;
      9 
     10 public class AttributeCertificate
     11     extends ASN1Encodable
     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     public AttributeCertificate(
     46         ASN1Sequence    seq)
     47     {
     48         if (seq.size() != 3)
     49         {
     50             throw new IllegalArgumentException("Bad sequence size: "
     51                     + seq.size());
     52         }
     53 
     54         this.acinfo = AttributeCertificateInfo.getInstance(seq.getObjectAt(0));
     55         this.signatureAlgorithm = AlgorithmIdentifier.getInstance(seq.getObjectAt(1));
     56         this.signatureValue = DERBitString.getInstance(seq.getObjectAt(2));
     57     }
     58 
     59     public AttributeCertificateInfo getAcinfo()
     60     {
     61         return acinfo;
     62     }
     63 
     64     public AlgorithmIdentifier getSignatureAlgorithm()
     65     {
     66         return signatureAlgorithm;
     67     }
     68 
     69     public DERBitString getSignatureValue()
     70     {
     71         return signatureValue;
     72     }
     73 
     74     /**
     75      * Produce an object suitable for an ASN1OutputStream.
     76      * <pre>
     77      *  AttributeCertificate ::= SEQUENCE {
     78      *       acinfo               AttributeCertificateInfo,
     79      *       signatureAlgorithm   AlgorithmIdentifier,
     80      *       signatureValue       BIT STRING
     81      *  }
     82      * </pre>
     83      */
     84     public DERObject toASN1Object()
     85     {
     86         ASN1EncodableVector  v = new ASN1EncodableVector();
     87 
     88         v.add(acinfo);
     89         v.add(signatureAlgorithm);
     90         v.add(signatureValue);
     91 
     92         return new DERSequence(v);
     93     }
     94 }
     95