/* * 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 javax.net.ssl; import java.io.IOException; import java.net.InetAddress; import java.net.ServerSocket; /** * The extension of {@code ServerSocket} which provides secure server sockets * based on protocols like SSL, TLS, or others. */ public abstract class SSLServerSocket extends ServerSocket { /** * Only to be used by subclasses. *
* Creates a TCP server socket with the default authentication context. * * @throws IOException * if creating the socket fails. */ protected SSLServerSocket() throws IOException { } /** * Only to be used by subclasses. *
* Creates a TCP server socket on the specified port with the default * authentication context. The connection's default backlog size is 50 * connections. * @param port * the port to listen on. * @throws IOException * if creating the socket fails. */ protected SSLServerSocket(int port) throws IOException { super(port); } /** * Only to be used by subclasses. *
* Creates a TCP server socket on the specified port using the specified * backlog and the default authentication context. * * @param port * the port to listen on. * @param backlog * the number of pending connections to queue. * @throws IOException * if creating the socket fails. */ protected SSLServerSocket(int port, int backlog) throws IOException { super(port, backlog); } /** * Only to be used by subclasses. *
* Creates a TCP server socket on the specified port, using the specified * backlog, listening on the specified interface, and using the default * authentication context. * * @param port * the port the listen on. * @param backlog * the number of pending connections to queue. * @param address * the address of the interface to accept connections on. * @throws IOException * if creating the socket fails. */ protected SSLServerSocket(int port, int backlog, InetAddress address) throws IOException { super(port, backlog, address); } /** * Returns the names of the enabled cipher suites to be used for new * connections. * * @return the names of the enabled cipher suites to be used for new * connections. */ public abstract String[] getEnabledCipherSuites(); /** * Sets the names of the cipher suites to be enabled for new connections. * Only cipher suites returned by {@link #getSupportedCipherSuites()} are * allowed. * * @param suites * the names of the to be enabled cipher suites. * @throws IllegalArgumentException * if one of the cipher suite names is not supported. */ public abstract void setEnabledCipherSuites(String[] suites); /** * Returns the names of the supported cipher suites. * * @return the names of the supported cipher suites. */ public abstract String[] getSupportedCipherSuites(); /** * Returns the names of the supported protocols. * * @return the names of the supported protocols. */ public abstract String[] getSupportedProtocols(); /** * Returns the names of the enabled protocols to be used for new * connections. * * @return the names of the enabled protocols to be used for new * connections. */ public abstract String[] getEnabledProtocols(); /** * Sets the names of the protocols to be enabled for new connections. Only * protocols returned by {@link #getSupportedProtocols()} are allowed. * * @param protocols * the names of the to be enabled protocols. * @throws IllegalArgumentException * if one of the protocols is not supported. */ public abstract void setEnabledProtocols(String[] protocols); /** * Sets whether server-mode connections will be configured to require client * authentication. The client authentication is one of the following: *