KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > ca > commons > security > cert > extensions > CertificatePolicies


1
2 package com.ca.commons.security.cert.extensions;
3
4
5 import com.ca.commons.cbutil.CBParse;
6 import com.ca.commons.security.asn1.*;
7
8 import java.util.Hashtable JavaDoc;
9
10 /**
11  * <pre>
12  * CertificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation
13  *
14  * PolicyInformation ::= SEQUENCE {
15  * policyIdentifier CertPolicyId,
16  * policyQualifiers SEQUENCE SIZE (1..MAX) OF
17  * PolicyQualifierInfo OPTIONAL }
18  *
19  * CertPolicyId ::= OBJECT IDENTIFIER
20  *
21  * PolicyQualifierInfo ::= SEQUENCE {
22  * policyQualifierId PolicyQualifierId,
23  * qualifier ANY DEFINED BY policyQualifierId }
24  *
25  * -- Implementations that recognize additional policy qualifiers shall
26  * -- augment the following definition for PolicyQualifierId
27  *
28  * PolicyQualifierId ::=
29  * OBJECT IDENTIFIER ( id-qt-cps | id-qt-unotice )
30  *
31  * -- CPS pointer qualifier
32  *
33  *
34  * CPSuri ::= IA5String
35  *
36  * -- user notice qualifier
37  *
38  * UserNotice ::= SEQUENCE {
39  * noticeRef NoticeReference OPTIONAL,
40  * explicitText DisplayText OPTIONAL}
41  *
42  * NoticeReference ::= SEQUENCE {
43  * organization DisplayText,
44  * noticeNumbers SEQUENCE OF INTEGER }
45  *
46  * DisplayText ::= CHOICE {
47  * visibleString VisibleString (SIZE (1..200)),
48  * bmpString BMPString (SIZE (1..200)),
49  * utf8String UTF8String (SIZE (1..200)) }
50  * </pre>
51  *
52  * @author vbui
53  */

54 public class CertificatePolicies implements V3Extension
55 {
56     String JavaDoc value = null;
57
58     static Hashtable JavaDoc qualifierIDName = new Hashtable JavaDoc();
59
60     static
61     {
62         qualifierIDName.put(ASN1OID.cpsOID, "CPS");
63     }
64
65     public void init(ASN1Object asn1object) throws Exception JavaDoc
66     {
67         if (!asn1object.isASN1Type(ASN1Type.SEQUENCE))
68             throw new Exception JavaDoc("Wrong ASN.1 type for CertificatePolicies");
69
70         for (int i = 0; i < asn1object.size(); i++)
71         {
72             if (!(asn1object.getComponent(i) instanceof Sequence))
73                 throw new Exception JavaDoc("CertificatePolicies component is not sequence");
74
75             Sequence seq = (Sequence) asn1object.getComponent(i);
76             for (int j = 0; j < seq.size(); j++)
77             {
78                 ASN1Object nextComp = seq.getComponent(j);
79
80                 if (j == 0)
81                 {
82                     String JavaDoc certPolicyID = nextComp.getValue().toString();
83
84                     if (value == null)
85                         value = "Certificate Policy ID: " + certPolicyID;
86                     else
87                         value = value + "\n" + "Certificate Policy ID: " + certPolicyID;
88                 }
89                 else if (j == 1)
90                 {
91                     value = value + "\n" + " Qualifier Info: ";
92
93                     if (!(nextComp instanceof Sequence))
94                         throw new Exception JavaDoc("CertificatePolicies component.policyQualifierInfo is not sequence");
95
96                     nextComp = nextComp.getComponent(0);
97
98                     String JavaDoc qualifierID = nextComp.getComponent(0).getValue().toString();
99                     if (qualifierIDName.get(qualifierID) != null)
100                     {
101                         qualifierID = (String JavaDoc) qualifierIDName.get(qualifierID);
102                     }
103                     value = value + "\n" + " Qualifier ID: " + qualifierID;
104
105                     ASN1Object qualifier = nextComp.getComponent(1);
106                     if (qualifier.getValue() != null)
107                     {
108                         value = value + "\n" + " Qualifier: " + qualifier.getValue();
109                     }
110                     else
111                     {
112                         value = value + "\n" + " Qualifier: " + CBParse.bytes2HexSplit(qualifier.getByteArray(), 4, 36);
113                     }
114                 }
115             }
116         }
117     }
118
119     public String JavaDoc toString()
120     {
121         return value;
122     }
123 }
124
125
Popular Tags