PolicyInformation.java revision e6bf3e8dfa2804891a82075cb469b736321b4827
1package org.bouncycastle.asn1.x509;
2
3import org.bouncycastle.asn1.ASN1EncodableVector;
4import org.bouncycastle.asn1.ASN1Object;
5import org.bouncycastle.asn1.ASN1ObjectIdentifier;
6import org.bouncycastle.asn1.ASN1Primitive;
7import org.bouncycastle.asn1.ASN1Sequence;
8import org.bouncycastle.asn1.DERSequence;
9
10public class PolicyInformation
11    extends ASN1Object
12{
13    private ASN1ObjectIdentifier   policyIdentifier;
14    private ASN1Sequence          policyQualifiers;
15
16    private PolicyInformation(
17        ASN1Sequence seq)
18    {
19        if (seq.size() < 1 || seq.size() > 2)
20        {
21            throw new IllegalArgumentException("Bad sequence size: "
22                    + seq.size());
23        }
24
25        policyIdentifier = ASN1ObjectIdentifier.getInstance(seq.getObjectAt(0));
26
27        if (seq.size() > 1)
28        {
29            policyQualifiers = ASN1Sequence.getInstance(seq.getObjectAt(1));
30        }
31    }
32
33    public PolicyInformation(
34        ASN1ObjectIdentifier policyIdentifier)
35    {
36        this.policyIdentifier = policyIdentifier;
37    }
38
39    public PolicyInformation(
40        ASN1ObjectIdentifier policyIdentifier,
41        ASN1Sequence        policyQualifiers)
42    {
43        this.policyIdentifier = policyIdentifier;
44        this.policyQualifiers = policyQualifiers;
45    }
46
47    public static PolicyInformation getInstance(
48        Object obj)
49    {
50        if (obj == null || obj instanceof PolicyInformation)
51        {
52            return (PolicyInformation)obj;
53        }
54
55        return new PolicyInformation(ASN1Sequence.getInstance(obj));
56    }
57
58    public ASN1ObjectIdentifier getPolicyIdentifier()
59    {
60        return policyIdentifier;
61    }
62
63    public ASN1Sequence getPolicyQualifiers()
64    {
65        return policyQualifiers;
66    }
67
68    /*
69     * PolicyInformation ::= SEQUENCE {
70     *      policyIdentifier   CertPolicyId,
71     *      policyQualifiers   SEQUENCE SIZE (1..MAX) OF
72     *              PolicyQualifierInfo OPTIONAL }
73     */
74    public ASN1Primitive toASN1Primitive()
75    {
76        ASN1EncodableVector v = new ASN1EncodableVector();
77
78        v.add(policyIdentifier);
79
80        if (policyQualifiers != null)
81        {
82            v.add(policyQualifiers);
83        }
84
85        return new DERSequence(v);
86    }
87}
88