SSLServerSocket.java revision f921579f87fa63204b4a4bef39ed27e7835aec45
1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  this work for additional information regarding copyright ownership.
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  (the "License"); you may not use this file except in compliance with
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  the License.  You may obtain a copy of the License at
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  See the License for the specific language governing permissions and
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  limitations under the License.
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage javax.net.ssl;
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.net.InetAddress;
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.net.ServerSocket;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The extension of {@code ServerSocket} which provides secure server sockets
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * based on protocols like SSL, TLS, or others.
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic abstract class SSLServerSocket extends ServerSocket {
29f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Only to be used by subclasses.
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Creates a TCP server socket with the default authentication context.
34f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if creating the socket fails.
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected SSLServerSocket() throws IOException {
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super();
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Only to be used by subclasses.
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Creates a TCP server socket on the specified port with the default
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * authentication context. The connection's default backlog size is 50
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * connections.
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param port
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the port to listen on.
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if creating the socket fails.
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected SSLServerSocket(int port) throws IOException {
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super(port);
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Only to be used by subclasses.
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Creates a TCP server socket on the specified port using the specified
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * backlog and the default authentication context.
62f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param port
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the port to listen on.
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param backlog
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the number of pending connections to queue.
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if creating the socket fails.
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected SSLServerSocket(int port, int backlog) throws IOException {
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super(port, backlog);
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Only to be used by subclasses.
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Creates a TCP server socket on the specified port, using the specified
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * backlog, listening on the specified interface, and using the default
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * authentication context.
80f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param port
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the port the listen on.
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param backlog
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the number of pending connections to queue.
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param address
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the address of the interface to accept connections on.
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if creating the socket fails.
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
90f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson    protected SSLServerSocket(int port, int backlog, InetAddress address) throws IOException {
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super(port, backlog, address);
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
93f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the names of the enabled cipher suites to be used for new
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * connections.
97f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the names of the enabled cipher suites to be used for new
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         connections.
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract String[] getEnabledCipherSuites();
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Sets the names of the cipher suites to be enabled for new connections.
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Only cipher suites returned by {@link #getSupportedCipherSuites()} are
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * allowed.
107f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param suites
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the names of the to be enabled cipher suites.
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IllegalArgumentException
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if one of the cipher suite names is not supported.
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract void setEnabledCipherSuites(String[] suites);
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the names of the supported cipher suites.
117f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the names of the supported cipher suites.
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract String[] getSupportedCipherSuites();
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the names of the supported protocols.
124f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the names of the supported protocols.
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract String[] getSupportedProtocols();
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the names of the enabled protocols to be used for new
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * connections.
132f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the names of the enabled protocols to be used for new
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         connections.
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract String[] getEnabledProtocols();
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Sets the names of the protocols to be enabled for new connections. Only
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * protocols returned by {@link #getSupportedProtocols()} are allowed.
141f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param protocols
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the names of the to be enabled protocols.
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IllegalArgumentException
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if one of the protocols is not supported.
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract void setEnabledProtocols(String[] protocols);
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Sets whether server-mode connections will be configured to require client
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * authentication. The client authentication is one of the following:
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <ul>
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <li>authentication required</li>
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <li>authentication requested</li>
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <li>no authentication needed</li>
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * </ul>
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * This method overrides the setting of {@link #setWantClientAuth(boolean)}.
158f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param need
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            {@code true} if client authentication is required,
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            {@code false} if no authentication is needed.
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract void setNeedClientAuth(boolean need);
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns whether server-mode connections will be configured to require
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * client authentication.
168f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return {@code true} if client authentication is required, {@code false}
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         if no client authentication is needed.
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract boolean getNeedClientAuth();
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Sets whether server-mode connections will be configured to request client
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * authentication. The client authentication is one of the following:
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <ul>
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <li>authentication required</li>
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <li>authentication requested</li>
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <li>no authentication needed</li>
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * </ul>
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * This method overrides the setting of {@link #setNeedClientAuth(boolean)}.
183f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param want
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            {@code true} if client authentication should be requested,
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            {@code false} if no authentication is needed.
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract void setWantClientAuth(boolean want);
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns whether server-mode connections will be configured to request
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * client authentication.
193f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return {@code true} is client authentication will be requested,
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         {@code false} if no client authentication is needed.
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract boolean getWantClientAuth();
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Sets whether new connections should act in client mode when handshaking.
201f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param mode
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            {@code true} if new connections should act in client mode,
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            {@code false} if not.
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract void setUseClientMode(boolean mode);
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns whether new connection will act in client mode when handshaking.
210f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return {@code true} if new connections will act in client mode when
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         handshaking, {@code false} if not.
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract boolean getUseClientMode();
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Sets whether new SSL sessions may be established for new connections.
218f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param flag
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            {@code true} if new SSL sessions may be established,
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            {@code false} if existing SSL sessions must be reused.
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract void setEnableSessionCreation(boolean flag);
224f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns whether new SSL sessions may be established for new connections.
227f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return {@code true} if new SSL sessions may be established,
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         {@code false} if existing SSL sessions must be reused.
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract boolean getEnableSessionCreation();
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
233