AttributeCertificate.java revision 5db505e1f6a68c8d5dfdb0fed0b8607dea7bed96
1package org.bouncycastle.asn1.x509;
2
3import org.bouncycastle.asn1.ASN1EncodableVector;
4import org.bouncycastle.asn1.ASN1Object;
5import org.bouncycastle.asn1.ASN1Primitive;
6import org.bouncycastle.asn1.ASN1Sequence;
7import org.bouncycastle.asn1.DERBitString;
8import org.bouncycastle.asn1.DERSequence;
9
10public 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