blob: 99f26a26fdb9eab501fedd775f3112444be2422a [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package java.security.cert;
import java.security.PublicKey;
/**
* The implementation of the result of the PKIX certification path validation.
*
* @see CertPathValidator
* @see CertPathValidator#validate(CertPath, CertPathParameters)
*/
public class PKIXCertPathValidatorResult implements CertPathValidatorResult {
// A trust anchor used during validation of certification path
private final TrustAnchor trustAnchor;
// Valid policy tree resulting from PKIX
// certification path validation algorithm
private final PolicyNode policyTree;
// Public key of the subject (target) certificate
private final PublicKey subjectPublicKey;
/**
* Creates a new {@code PKIXCertPathValidatorResult} with the specified
* trust anchor, the valid policy tree and the subject public key.
*
* @param trustAnchor
* the trust anchor describing the certification authority (CA)
* that served as trust anchor for the certification path.
* @param policyTree
* the valid policy tree from the validation.
* @param subjectPublicKey
* the subject public key from the validation.
*/
public PKIXCertPathValidatorResult(TrustAnchor trustAnchor,
PolicyNode policyTree, PublicKey subjectPublicKey) {
this.trustAnchor = trustAnchor;
this.policyTree = policyTree;
this.subjectPublicKey = subjectPublicKey;
if (this.trustAnchor == null) {
throw new NullPointerException("trustAnchor == null");
}
if (this.subjectPublicKey == null) {
throw new NullPointerException("subjectPublicKey == null");
}
}
/**
* Returns the valid policy tree from the validation.
*
* @return the valid policy tree from the validation.
*/
public PolicyNode getPolicyTree() {
return policyTree;
}
/**
* Returns the subject public key from the validation.
*
* @return the subject public key from the validation.
*/
public PublicKey getPublicKey() {
return subjectPublicKey;
}
/**
* Returns the trust anchor describing the certification authority (CA) that
* served as trust anchor for this certification path.
*
* @return the trust anchor.
*/
public TrustAnchor getTrustAnchor() {
return trustAnchor;
}
/**
* Clones this {@code PKIXCertPathValidatorResult} instance.
*
* @return the cloned instance.
*/
public Object clone() {
try {
return super.clone();
} catch (CloneNotSupportedException e) {
throw new AssertionError(e);
}
}
/**
* Returns a string representation for this {@code
* PKIXCertPathValidatorResult} instance.
*
* @return a string representation for this {@code
* PKIXCertPathValidatorResult} instance.
*/
public String toString() {
StringBuilder sb = new StringBuilder(super.toString());
sb.append(": [\n Trust Anchor: ");
sb.append(trustAnchor.toString());
sb.append("\n Policy Tree: ");
sb.append(policyTree == null ? "no valid policy tree\n"
: policyTree.toString());
sb.append("\n Subject Public Key: ");
sb.append(subjectPublicKey.toString());
sb.append("\n]");
return sb.toString();
}
}