/*
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed 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 javax.net.ssl;
/**
* SSL handshake parameters that include protocols, cipher suites, and
* client authentication requirements.
* @since 1.6
*/
public class SSLParameters {
private String[] cipherSuites;
private String[] protocols;
private boolean needClientAuth;
private boolean wantClientAuth;
private String endpointIdentificationAlgorithm;
/**
* The default SSLParameters constructor. Cipher suites and
* protocols are initialized to null and client authentication
* options are initialized to false.
*/
public SSLParameters() {}
/**
* A SSLParameters constructor that allows the values for the
* initial cipher suites array to be provided. Other values
* default as specified in {@link #SSLParameters()}.
*
* @param cipherSuites An array of cipherSuites that is cloned for
* use within the SSLParameters, or null.
*/
public SSLParameters(String[] cipherSuites) {
setCipherSuites(cipherSuites);
}
/**
* A SSLParameters constructor that allows the values for initial
* cipher suites and protocols arrays to be provided. Other values
* default as specified in {@link #SSLParameters()}.
*
* @param cipherSuites An array of cipher names that is cloned for
* use within the SSLParameters, or null.
* @param protocols An array of protocol names that is cloned for
* use within the SSLParameters, or null.
*/
public SSLParameters(String[] cipherSuites,
String[] protocols) {
setCipherSuites(cipherSuites);
setProtocols(protocols);
}
/**
* Returns a copy of the cipher suites, or null if none have been
* specified.
*/
public String[] getCipherSuites() {
if (cipherSuites == null) {
return null;
}
return cipherSuites.clone();
}
/**
* Sets the cipher suites to a copy of the input, or null
*/
public void setCipherSuites(String[] cipherSuites) {
this.cipherSuites = ((cipherSuites == null)
? null
: cipherSuites.clone());
}
/**
* Returns a copy of the protocols, or null if none have been
* specified.
*/
public String[] getProtocols() {
if (protocols == null) {
return null;
}
return protocols.clone();
}
/**
* Sets the protocols to a copy of the input, or null
*/
public void setProtocols(String[] protocols) {
this.protocols = ((protocols == null)
? null
: protocols.clone());
}
/**
* Returns true if a server requires authentication from a client
* during handshaking. If this returns true, {@link
* #getWantClientAuth} will return false.
*/
public boolean getNeedClientAuth () {
return needClientAuth;
}
/**
* Sets whether or not to a server needs client authentication.
* After calling this, #getWantClientAuth() will return false.
*/
public void setNeedClientAuth (boolean needClientAuth) {
this.needClientAuth = needClientAuth;
this.wantClientAuth = false;
}
/**
* Returns true if a server optionally wants to authenticate a
* client during handshaking. If this returns true, {@link
* #getNeedClientAuth} will return false.
*/
public boolean getWantClientAuth () {
return wantClientAuth;
}
/**
* Sets whether or not to a server wants client authentication.
* After calling this, #getNeedClientAuth() will return false.
*/
public void setWantClientAuth (boolean wantClientAuth) {
this.wantClientAuth = wantClientAuth;
this.needClientAuth = false;
}
}