jdk/src/share/classes/java/security/cert/PKIXCertPathValidatorResult.java
changeset 18551 882a3948c6e6
parent 14342 8435a30053c1
child 24969 afa6934dd8e8
equal deleted inserted replaced
18550:6d0f51c99930 18551:882a3948c6e6
     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");