| /* |
| * 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; |
| } |
| |
| /** |
| * Returns a string indicating the endpoint identification algorithm to be |
| * used to identify the remote endpoint. |
| * |
| * @see #setEndpointIdentificationAlgorithm(String) |
| * @since 1.7 |
| * @hide |
| */ |
| public String getEndpointIdentificationAlgorithm() { |
| return endpointIdentificationAlgorithm; |
| } |
| |
| /** |
| * Sets the endpoint identification algorithm to be used to identify the |
| * remote endpoint. |
| * |
| * @see #getEndpointIdentificationAlgorithm() |
| * @since 1.7 |
| * @hide |
| */ |
| public void setEndpointIdentificationAlgorithm(String endpointIdentificationAlgorithm) { |
| this.endpointIdentificationAlgorithm = endpointIdentificationAlgorithm; |
| } |
| } |