History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg/sun/security/provider/certpath/Vertex.java (1 of 18352 files). Show all

Unified · Split

java/pkg/sun/security/provider/certpath/Vertex.java+239−0
@@ -0,0 +1,239 @@
1/*
2 * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26package sun.security.provider.certpath;
27
28import sun.security.util.Debug;
29
30import java.security.cert.Certificate;
31import java.security.cert.CertificateException;
32import java.security.cert.X509Certificate;
33
34import sun.security.x509.AuthorityKeyIdentifierExtension;
35import sun.security.x509.KeyIdentifier;
36import sun.security.x509.SubjectKeyIdentifierExtension;
37import sun.security.x509.X509CertImpl;
38
39/*
40 * This class represents a vertex in the adjacency list. A
41 * vertex in the builder's view is just a distinguished name
42 * in the directory. The Vertex contains a certificate
43 * along an attempted certification path, along with a pointer
44 * to a list of certificates that followed this one in various
45 * attempted certification paths.
46 *
47 * @author Sean Mullan
48 * @since 1.4
49 */
50public class Vertex {
51
52 private static final Debug debug = Debug.getInstance("certpath");
53 private Certificate cert;
54 private int index;
55 private Throwable throwable;
56
57 /**
58 * Constructor; creates vertex with index of -1
59 * Use setIndex method to set another index.
60 *
61 * @param cert Certificate associated with vertex
62 */
63 Vertex(Certificate cert) {
64 this.cert = cert;
65 this.index = -1;
66 }
67
68 /**
69 * return the certificate for this vertex
70 *
71 * @returns Certificate
72 */
73 public Certificate getCertificate() {
74 return cert;
75 }
76
77 /**
78 * get the index for this vertex, where the index is the row of the
79 * adjacency list that contains certificates that could follow this
80 * certificate.
81 *
82 * @returns int index for this vertex, or -1 if no following certificates.
83 */
84 public int getIndex() {
85 return index;
86 }
87
88 /**
89 * set the index for this vertex, where the index is the row of the
90 * adjacency list that contains certificates that could follow this
91 * certificate.
92 *
93 * @param ndx int index for vertex, or -1 if no following certificates.
94 */
95 void setIndex(int ndx) {
96 index = ndx;
97 }
98
99 /**
100 * return the throwable associated with this vertex;
101 * returns null if none.
102 *
103 * @returns Throwable
104 */
105 public Throwable getThrowable() {
106 return throwable;
107 }
108
109 /**
110 * set throwable associated with this vertex; default value is null.
111 *
112 * @param throwable Throwable associated with this vertex
113 * (or null)
114 */
115 void setThrowable(Throwable throwable) {
116 this.throwable = throwable;
117 }
118
119 /**
120 * Return full string representation of vertex
121 *
122 * @returns String representation of vertex
123 */
124 public String toString() {
125 return certToString() + throwableToString() + indexToString();
126 }
127
128 /**
129 * Return string representation of this vertex's
130 * certificate information.
131 *
132 * @returns String representation of certificate info
133 */
134 public String certToString() {
135 String out = "";
136 if (cert == null || ! (cert instanceof X509Certificate))
137 return "Cert: Not an X509Certificate\n";
138
139 X509CertImpl x509Cert = null;
140 try {
141 x509Cert = X509CertImpl.toImpl((X509Certificate)cert);
142 } catch (CertificateException ce) {
143 if (debug != null) {
144 debug.println("Vertex.certToString() unexpected exception");
145 ce.printStackTrace();
146 }
147 return out;
148 }
149
150 out = "Issuer: " + x509Cert.getIssuerX500Principal() + "\n";
151 out = out + "Subject: " + x509Cert.getSubjectX500Principal() + "\n";
152 out = out + "SerialNum: " + (x509Cert.getSerialNumber()).toString(16) + "\n";
153 out = out + "Expires: " + x509Cert.getNotAfter().toString() + "\n";
154 boolean[] iUID = x509Cert.getIssuerUniqueID();
155 if (iUID != null) {
156 out = out + "IssuerUID: ";
157 for (int i=0; i < iUID.length; i++) {
158 out = out + (iUID[i]?1:0);
159 }
160 out = out + "\n";
161 }
162 boolean[] sUID = x509Cert.getSubjectUniqueID();
163 if (sUID != null) {
164 out = out + "SubjectUID: ";
165 for (int i=0; i< sUID.length; i++) {
166 out = out + (sUID[i]?1:0);
167 }
168 out = out + "\n";
169 }
170 SubjectKeyIdentifierExtension sKeyID = null;
171 try {
172 sKeyID = x509Cert.getSubjectKeyIdentifierExtension();
173 if (sKeyID != null) {
174 KeyIdentifier keyID = (KeyIdentifier)sKeyID.get(sKeyID.KEY_ID);
175 out = out + "SubjKeyID: " + keyID.toString();
176 }
177 } catch (Exception e) {
178 if (debug != null) {
179 debug.println("Vertex.certToString() unexpected exception");
180 e.printStackTrace();
181 }
182 }
183 AuthorityKeyIdentifierExtension aKeyID = null;
184 try {
185 aKeyID = x509Cert.getAuthorityKeyIdentifierExtension();
186 if (aKeyID != null) {
187 KeyIdentifier keyID = (KeyIdentifier)aKeyID.get(aKeyID.KEY_ID);
188 out = out + "AuthKeyID: " + keyID.toString();
189 }
190 } catch (Exception e) {
191 if (debug != null) {
192 debug.println("Vertex.certToString() 2 unexpected exception");
193 e.printStackTrace();
194 }
195 }
196 return out;
197 }
198
199 /**
200 * return Vertex throwable as String compatible with
201 * the way toString returns other information
202 *
203 * @returns String form of exception (or "none")
204 */
205 public String throwableToString() {
206 String out = "Exception: ";
207 if (throwable != null)
208 out = out + throwable.toString();
209 else
210 out = out + "null";
211 out = out + "\n";
212 return out;
213 }
214
215 /**
216 * return Vertex index as String compatible with
217 * the way other Vertex.xToString() methods display
218 * information.
219 *
220 * @returns String form of index as "Last cert? [Yes/No]
221 */
222 public String moreToString() {
223 String out = "Last cert? ";
224 out = out + ((index == -1)?"Yes":"No");
225 out = out + "\n";
226 return out;
227 }
228
229 /**
230 * return Vertex index as String compatible with
231 * the way other Vertex.xToString() methods displays other information.
232 *
233 * @returns String form of index as "Index: [numeric index]"
234 */
235 public String indexToString() {
236 String out = "Index: " + index + "\n";
237 return out;
238 }
239}