Frames | No Frames |
1: /* PKIXBuilderParameters.java -- parameters for PKIX cert path builders 2: Copyright (C) 2003 Free Software Foundation, Inc. 3: 4: This file is part of GNU Classpath. 5: 6: GNU Classpath is free software; you can redistribute it and/or modify 7: it under the terms of the GNU General Public License as published by 8: the Free Software Foundation; either version 2, or (at your option) 9: any later version. 10: 11: GNU Classpath is distributed in the hope that it will be useful, but 12: WITHOUT ANY WARRANTY; without even the implied warranty of 13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14: General Public License for more details. 15: 16: You should have received a copy of the GNU General Public License 17: along with GNU Classpath; see the file COPYING. If not, write to the 18: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 19: 02110-1301 USA. 20: 21: Linking this library statically or dynamically with other modules is 22: making a combined work based on this library. Thus, the terms and 23: conditions of the GNU General Public License cover the whole 24: combination. 25: 26: As a special exception, the copyright holders of this library give you 27: permission to link this library with independent modules to produce an 28: executable, regardless of the license terms of these independent 29: modules, and to copy and distribute the resulting executable under 30: terms of your choice, provided that you also meet, for each linked 31: independent module, the terms and conditions of the license of that 32: module. An independent module is a module which is not derived from 33: or based on this library. If you modify this library, you may extend 34: this exception to your version of the library, but you are not 35: obligated to do so. If you do not wish to do so, delete this 36: exception statement from your version. */ 37: 38: 39: package java.security.cert; 40: 41: import gnu.java.lang.CPStringBuilder; 42: 43: import java.security.InvalidAlgorithmParameterException; 44: import java.security.KeyStore; 45: import java.security.KeyStoreException; 46: 47: import java.util.Set; 48: 49: /** 50: * Parameters for building certificate paths using the PKIX algorithm. 51: * 52: * @see CertPathBuilder 53: * @since 1.4 54: */ 55: public class PKIXBuilderParameters extends PKIXParameters 56: { 57: 58: // Fields. 59: // ------------------------------------------------------------------------ 60: 61: /** The maximum path length. */ 62: private int maxPathLength; 63: 64: // Constructors. 65: // ------------------------------------------------------------------------ 66: 67: /** 68: * Create a new PKIXBuilderParameters object, populating the trusted 69: * certificates set with all X.509 certificates found in the given key 70: * store. All certificates found in the key store are assumed to be 71: * trusted by this constructor. 72: * 73: * @param keystore The key store. 74: * @param targetConstraints The target certificate constraints. 75: * @throws KeyStoreException If the certificates cannot be retrieved 76: * from the key store. 77: * @throws InvalidAlgorithmParameterException If there are no 78: * certificates in the key store. 79: * @throws NullPointerException If <i>keystore</i> is null. 80: */ 81: public PKIXBuilderParameters(KeyStore keystore, 82: CertSelector targetConstraints) 83: throws KeyStoreException, InvalidAlgorithmParameterException 84: { 85: super(keystore); 86: setTargetCertConstraints(targetConstraints); 87: maxPathLength = 5; 88: } 89: 90: /** 91: * Create a new PKIXBuilderParameters object, populating the trusted 92: * certificates set with the elements of the given set, each of which 93: * must be a {@link TrustAnchor}. 94: * 95: * @param trustAnchors The set of trust anchors. 96: * @param targetConstraints The target certificate constraints. 97: * @throws InvalidAlgorithmParameterException If there are no 98: * certificates in the set. 99: * @throws NullPointerException If <i>trustAnchors</i> is null. 100: * @throws ClassCastException If every element in <i>trustAnchors</i> 101: * is not a {@link TrustAnchor}. 102: */ 103: public PKIXBuilderParameters(Set<TrustAnchor> trustAnchors, 104: CertSelector targetConstraints) 105: throws InvalidAlgorithmParameterException 106: { 107: super(trustAnchors); 108: setTargetCertConstraints(targetConstraints); 109: maxPathLength = 5; 110: } 111: 112: // Instance methods. 113: // ------------------------------------------------------------------------ 114: 115: /** 116: * Returns the maximum length of certificate paths to build. 117: * 118: * <p>If this value is 0 it is taken to mean that the certificate path 119: * should contain only one certificate. A value of -1 means that the 120: * certificate path length is unconstrained. The default value is 5. 121: * 122: * @return The maximum path length. 123: */ 124: public int getMaxPathLength() 125: { 126: return maxPathLength; 127: } 128: 129: /** 130: * Sets the maximum length of certificate paths to build. 131: * 132: * @param maxPathLength The new path length. 133: * @throws IllegalArgumentException If <i>maxPathLength</i> is less 134: * than -1. 135: */ 136: public void setMaxPathLength(int maxPathLength) 137: { 138: if (maxPathLength < -1) 139: throw new IllegalArgumentException(); 140: this.maxPathLength = maxPathLength; 141: } 142: 143: public String toString() 144: { 145: CPStringBuilder buf = new CPStringBuilder(super.toString()); 146: buf.insert(buf.length() - 2, "; Max Path Length=" + maxPathLength); 147: return buf.toString(); 148: } 149: }