diff -r fd16c54261b3 -r 90ce3da70b43 jdk/src/share/classes/javax/net/ssl/SSLParameters.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/src/share/classes/javax/net/ssl/SSLParameters.java Sat Dec 01 00:00:00 2007 +0000 @@ -0,0 +1,181 @@ +/* + * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package javax.net.ssl; + +/** + * Encapsulates parameters for an SSL/TLS connection. The parameters + * are the list of ciphersuites to be accepted in an SSL/TLS handshake, + * the list of protocols to be allowed, and whether SSL/TLS servers should + * request or require client authentication. + * + *

SSLParameters can be created via the constructors in this class. + * Objects can also be obtained using the getSSLParameters() + * methods in + * {@link SSLSocket#getSSLParameters SSLSocket} and + * {@link SSLEngine#getSSLParameters SSLEngine} or the + * {@link SSLContext#getDefaultSSLParameters getDefaultSSLParameters()} and + * {@link SSLContext#getSupportedSSLParameters getSupportedSSLParameters()} + * methods in SSLContext. + * + *

SSLParameters can be applied to a connection via the methods + * {@link SSLSocket#setSSLParameters SSLSocket.setSSLParameters()} and + * {@link SSLEngine#setSSLParameters SSLEngine.getSSLParameters()}. + * + * @see SSLSocket + * @see SSLEngine + * @see SSLContext + * + * @since 1.6 + */ +public class SSLParameters { + + private String[] cipherSuites; + private String[] protocols; + private boolean wantClientAuth; + private boolean needClientAuth; + + /** + * Constructs SSLParameters. + * + *

The cipherSuites and protocols values are set to null, + * wantClientAuth and needClientAuth are set to false. + */ + public SSLParameters() { + // empty + } + + /** + * Constructs SSLParameters from the specified array of ciphersuites. + * Calling this constructor is equivalent to calling the no-args + * constructor followed by + * setCipherSuites(cipherSuites);. + * + * @param cipherSuites the array of ciphersuites (or null) + */ + public SSLParameters(String[] cipherSuites) { + setCipherSuites(cipherSuites); + } + + /** + * Constructs SSLParameters from the specified array of ciphersuites + * and protocols. + * Calling this constructor is equivalent to calling the no-args + * constructor followed by + * setCipherSuites(cipherSuites); setProtocols(protocols);. + * + * @param cipherSuites the array of ciphersuites (or null) + * @param protocols the array of protocols (or null) + */ + public SSLParameters(String[] cipherSuites, String[] protocols) { + setCipherSuites(cipherSuites); + setProtocols(protocols); + } + + private static String[] clone(String[] s) { + return (s == null) ? null : s.clone(); + } + + /** + * Returns a copy of the array of ciphersuites or null if none + * have been set. + * + * @return a copy of the array of ciphersuites or null if none + * have been set. + */ + public String[] getCipherSuites() { + return clone(cipherSuites); + } + + /** + * Sets the array of ciphersuites. + * + * @param cipherSuites the array of ciphersuites (or null) + */ + public void setCipherSuites(String[] cipherSuites) { + this.cipherSuites = clone(cipherSuites); + } + + /** + * Returns a copy of the array of protocols or null if none + * have been set. + * + * @return a copy of the array of protocols or null if none + * have been set. + */ + public String[] getProtocols() { + return clone(protocols); + } + + /** + * Sets the array of protocols. + * + * @param protocols the array of protocols (or null) + */ + public void setProtocols(String[] protocols) { + this.protocols = clone(protocols); + } + + /** + * Returns whether client authentication should be requested. + * + * @return whether client authentication should be requested. + */ + public boolean getWantClientAuth() { + return wantClientAuth; + } + + /** + * Sets whether client authentication should be requested. Calling + * this method clears the needClientAuth flag. + * + * @param wantClientAuth whether client authentication should be requested + */ + public void setWantClientAuth(boolean wantClientAuth) { + this.wantClientAuth = wantClientAuth; + this.needClientAuth = false; + } + + /** + * Returns whether client authentication should be required. + * + * @return whether client authentication should be required. + */ + public boolean getNeedClientAuth() { + return needClientAuth; + } + + /** + * Sets whether client authentication should be required. Calling + * this method clears the wantClientAuth flag. + * + * @param needClientAuth whether client authentication should be required + */ + public void setNeedClientAuth(boolean needClientAuth) { + this.wantClientAuth = false; + this.needClientAuth = needClientAuth; + } + +}