~brian-thomason/+junk/bouncycastle

« back to all changes in this revision

Viewing changes to src/org/bouncycastle/asn1/x509/PolicyQualifierInfo.java

  • Committer: Brian Thomason
  • Date: 2011-12-20 17:20:32 UTC
  • Revision ID: brian.thomason@canonical.com-20111220172032-rdtm13jgdxtksacr
Initial import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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.DEREncodable;
 
7
import org.bouncycastle.asn1.DERObject;
 
8
import org.bouncycastle.asn1.DERIA5String;
 
9
import org.bouncycastle.asn1.DERObjectIdentifier;
 
10
import org.bouncycastle.asn1.DERSequence;
 
11
 
 
12
/**
 
13
 * Policy qualifiers, used in the X509V3 CertificatePolicies
 
14
 * extension.
 
15
 * 
 
16
 * <pre>
 
17
 *   PolicyQualifierInfo ::= SEQUENCE {
 
18
 *       policyQualifierId  PolicyQualifierId,
 
19
 *       qualifier          ANY DEFINED BY policyQualifierId }
 
20
 * </pre>
 
21
 */
 
22
public class PolicyQualifierInfo
 
23
    extends ASN1Encodable
 
24
{
 
25
   private DERObjectIdentifier policyQualifierId;
 
26
   private DEREncodable        qualifier;
 
27
 
 
28
   /**
 
29
    * Creates a new <code>PolicyQualifierInfo</code> instance.
 
30
    *
 
31
    * @param policyQualifierId a <code>PolicyQualifierId</code> value
 
32
    * @param qualifier the qualifier, defined by the above field.
 
33
    */
 
34
   public PolicyQualifierInfo(
 
35
       DERObjectIdentifier policyQualifierId,
 
36
       DEREncodable qualifier) 
 
37
   {
 
38
      this.policyQualifierId = policyQualifierId;
 
39
      this.qualifier = qualifier;
 
40
   }
 
41
 
 
42
   /**
 
43
    * Creates a new <code>PolicyQualifierInfo</code> containing a
 
44
    * cPSuri qualifier.
 
45
    *
 
46
    * @param cps the CPS (certification practice statement) uri as a
 
47
    * <code>String</code>.
 
48
    */
 
49
   public PolicyQualifierInfo(
 
50
       String cps) 
 
51
   {
 
52
      policyQualifierId = PolicyQualifierId.id_qt_cps;
 
53
      qualifier = new DERIA5String (cps);
 
54
   }
 
55
 
 
56
   /**
 
57
    * Creates a new <code>PolicyQualifierInfo</code> instance.
 
58
    *
 
59
    * @param as <code>PolicyQualifierInfo</code> X509 structure
 
60
    * encoded as an ASN1Sequence. 
 
61
    */
 
62
   public PolicyQualifierInfo(
 
63
       ASN1Sequence as)
 
64
   {
 
65
        if (as.size() != 2)
 
66
        {
 
67
            throw new IllegalArgumentException("Bad sequence size: "
 
68
                    + as.size());
 
69
        }
 
70
 
 
71
        policyQualifierId = DERObjectIdentifier.getInstance(as.getObjectAt(0));
 
72
        qualifier = as.getObjectAt(1);
 
73
   }
 
74
 
 
75
   public static PolicyQualifierInfo getInstance(
 
76
       Object as) 
 
77
   {
 
78
        if (as instanceof PolicyQualifierInfo)
 
79
        {
 
80
            return (PolicyQualifierInfo)as;
 
81
        }
 
82
        else if (as instanceof ASN1Sequence)
 
83
        {
 
84
            return new PolicyQualifierInfo((ASN1Sequence)as);
 
85
        }
 
86
 
 
87
        throw new IllegalArgumentException("unknown object in getInstance.");
 
88
   }
 
89
 
 
90
 
 
91
   public DERObjectIdentifier getPolicyQualifierId()
 
92
   {
 
93
       return policyQualifierId;
 
94
   }
 
95
 
 
96
   public DEREncodable getQualifier()
 
97
   {
 
98
       return qualifier;
 
99
   }
 
100
   
 
101
   /**
 
102
    * Returns a DER-encodable representation of this instance. 
 
103
    *
 
104
    * @return a <code>DERObject</code> value
 
105
    */
 
106
   public DERObject toASN1Object() 
 
107
   {
 
108
      ASN1EncodableVector dev = new ASN1EncodableVector();
 
109
      dev.add(policyQualifierId);
 
110
      dev.add(qualifier);
 
111
 
 
112
      return new DERSequence(dev);
 
113
   }
 
114
}