1 /* |
1 /* |
2 * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
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 |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. Oracle designates this |
7 * published by the Free Software Foundation. Oracle designates this |
29 |
29 |
30 /** |
30 /** |
31 * This class represents the successful result of the PKIX certification |
31 * This class represents the successful result of the PKIX certification |
32 * path validation algorithm. |
32 * path validation algorithm. |
33 * |
33 * |
34 * <p>Instances of <code>PKIXCertPathValidatorResult</code> are returned by the |
34 * <p>Instances of {@code PKIXCertPathValidatorResult} are returned by the |
35 * {@link CertPathValidator#validate validate} method of |
35 * {@link CertPathValidator#validate validate} method of |
36 * <code>CertPathValidator</code> objects implementing the PKIX algorithm. |
36 * {@code CertPathValidator} objects implementing the PKIX algorithm. |
37 * |
37 * |
38 * <p> All <code>PKIXCertPathValidatorResult</code> objects contain the |
38 * <p> All {@code PKIXCertPathValidatorResult} objects contain the |
39 * valid policy tree and subject public key resulting from the |
39 * valid policy tree and subject public key resulting from the |
40 * validation algorithm, as well as a <code>TrustAnchor</code> describing |
40 * validation algorithm, as well as a {@code TrustAnchor} describing |
41 * the certification authority (CA) that served as a trust anchor for the |
41 * the certification authority (CA) that served as a trust anchor for the |
42 * certification path. |
42 * certification path. |
43 * <p> |
43 * <p> |
44 * <b>Concurrent Access</b> |
44 * <b>Concurrent Access</b> |
45 * <p> |
45 * <p> |
60 private TrustAnchor trustAnchor; |
60 private TrustAnchor trustAnchor; |
61 private PolicyNode policyTree; |
61 private PolicyNode policyTree; |
62 private PublicKey subjectPublicKey; |
62 private PublicKey subjectPublicKey; |
63 |
63 |
64 /** |
64 /** |
65 * Creates an instance of <code>PKIXCertPathValidatorResult</code> |
65 * Creates an instance of {@code PKIXCertPathValidatorResult} |
66 * containing the specified parameters. |
66 * containing the specified parameters. |
67 * |
67 * |
68 * @param trustAnchor a <code>TrustAnchor</code> describing the CA that |
68 * @param trustAnchor a {@code TrustAnchor} describing the CA that |
69 * served as a trust anchor for the certification path |
69 * served as a trust anchor for the certification path |
70 * @param policyTree the immutable valid policy tree, or <code>null</code> |
70 * @param policyTree the immutable valid policy tree, or {@code null} |
71 * if there are no valid policies |
71 * if there are no valid policies |
72 * @param subjectPublicKey the public key of the subject |
72 * @param subjectPublicKey the public key of the subject |
73 * @throws NullPointerException if the <code>subjectPublicKey</code> or |
73 * @throws NullPointerException if the {@code subjectPublicKey} or |
74 * <code>trustAnchor</code> parameters are <code>null</code> |
74 * {@code trustAnchor} parameters are {@code null} |
75 */ |
75 */ |
76 public PKIXCertPathValidatorResult(TrustAnchor trustAnchor, |
76 public PKIXCertPathValidatorResult(TrustAnchor trustAnchor, |
77 PolicyNode policyTree, PublicKey subjectPublicKey) |
77 PolicyNode policyTree, PublicKey subjectPublicKey) |
78 { |
78 { |
79 if (subjectPublicKey == null) |
79 if (subjectPublicKey == null) |
84 this.policyTree = policyTree; |
84 this.policyTree = policyTree; |
85 this.subjectPublicKey = subjectPublicKey; |
85 this.subjectPublicKey = subjectPublicKey; |
86 } |
86 } |
87 |
87 |
88 /** |
88 /** |
89 * Returns the <code>TrustAnchor</code> describing the CA that served |
89 * Returns the {@code TrustAnchor} describing the CA that served |
90 * as a trust anchor for the certification path. |
90 * as a trust anchor for the certification path. |
91 * |
91 * |
92 * @return the <code>TrustAnchor</code> (never <code>null</code>) |
92 * @return the {@code TrustAnchor} (never {@code null}) |
93 */ |
93 */ |
94 public TrustAnchor getTrustAnchor() { |
94 public TrustAnchor getTrustAnchor() { |
95 return trustAnchor; |
95 return trustAnchor; |
96 } |
96 } |
97 |
97 |
98 /** |
98 /** |
99 * Returns the root node of the valid policy tree resulting from the |
99 * Returns the root node of the valid policy tree resulting from the |
100 * PKIX certification path validation algorithm. The |
100 * PKIX certification path validation algorithm. The |
101 * <code>PolicyNode</code> object that is returned and any objects that |
101 * {@code PolicyNode} object that is returned and any objects that |
102 * it returns through public methods are immutable. |
102 * it returns through public methods are immutable. |
103 * |
103 * |
104 * <p>Most applications will not need to examine the valid policy tree. |
104 * <p>Most applications will not need to examine the valid policy tree. |
105 * They can achieve their policy processing goals by setting the |
105 * They can achieve their policy processing goals by setting the |
106 * policy-related parameters in <code>PKIXParameters</code>. However, more |
106 * policy-related parameters in {@code PKIXParameters}. However, more |
107 * sophisticated applications, especially those that process policy |
107 * sophisticated applications, especially those that process policy |
108 * qualifiers, may need to traverse the valid policy tree using the |
108 * qualifiers, may need to traverse the valid policy tree using the |
109 * {@link PolicyNode#getParent PolicyNode.getParent} and |
109 * {@link PolicyNode#getParent PolicyNode.getParent} and |
110 * {@link PolicyNode#getChildren PolicyNode.getChildren} methods. |
110 * {@link PolicyNode#getChildren PolicyNode.getChildren} methods. |
111 * |
111 * |
112 * @return the root node of the valid policy tree, or <code>null</code> |
112 * @return the root node of the valid policy tree, or {@code null} |
113 * if there are no valid policies |
113 * if there are no valid policies |
114 */ |
114 */ |
115 public PolicyNode getPolicyTree() { |
115 public PolicyNode getPolicyTree() { |
116 return policyTree; |
116 return policyTree; |
117 } |
117 } |
118 |
118 |
119 /** |
119 /** |
120 * Returns the public key of the subject (target) of the certification |
120 * Returns the public key of the subject (target) of the certification |
121 * path, including any inherited public key parameters if applicable. |
121 * path, including any inherited public key parameters if applicable. |
122 * |
122 * |
123 * @return the public key of the subject (never <code>null</code>) |
123 * @return the public key of the subject (never {@code null}) |
124 */ |
124 */ |
125 public PublicKey getPublicKey() { |
125 public PublicKey getPublicKey() { |
126 return subjectPublicKey; |
126 return subjectPublicKey; |
127 } |
127 } |
128 |
128 |
140 } |
140 } |
141 } |
141 } |
142 |
142 |
143 /** |
143 /** |
144 * Return a printable representation of this |
144 * Return a printable representation of this |
145 * <code>PKIXCertPathValidatorResult</code>. |
145 * {@code PKIXCertPathValidatorResult}. |
146 * |
146 * |
147 * @return a <code>String</code> describing the contents of this |
147 * @return a {@code String} describing the contents of this |
148 * <code>PKIXCertPathValidatorResult</code> |
148 * {@code PKIXCertPathValidatorResult} |
149 */ |
149 */ |
150 public String toString() { |
150 public String toString() { |
151 StringBuffer sb = new StringBuffer(); |
151 StringBuffer sb = new StringBuffer(); |
152 sb.append("PKIXCertPathValidatorResult: [\n"); |
152 sb.append("PKIXCertPathValidatorResult: [\n"); |
153 sb.append(" Trust Anchor: " + trustAnchor.toString() + "\n"); |
153 sb.append(" Trust Anchor: " + trustAnchor.toString() + "\n"); |