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    }
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Only to be used by subclasses.
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Creates a TCP server socket on the specified port with the default
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * authentication context. The connection's default backlog size is 50
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * connections.
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param port
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the port to listen on.
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if creating the socket fails.
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected SSLServerSocket(int port) throws IOException {
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super(port);
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Only to be used by subclasses.
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Creates a TCP server socket on the specified port using the specified
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * backlog and the default authentication context.
61f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param port
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the port to listen on.
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param backlog
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the number of pending connections to queue.
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if creating the socket fails.
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected SSLServerSocket(int port, int backlog) throws IOException {
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super(port, backlog);
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Only to be used by subclasses.
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Creates a TCP server socket on the specified port, using the specified
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * backlog, listening on the specified interface, and using the default
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * authentication context.
79f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param port
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the port the listen on.
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param backlog
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the number of pending connections to queue.
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param address
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the address of the interface to accept connections on.
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if creating the socket fails.
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
89f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson    protected SSLServerSocket(int port, int backlog, InetAddress address) throws IOException {
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super(port, backlog, address);
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
92f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the names of the enabled cipher suites to be used for new
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * connections.
96f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the names of the enabled cipher suites to be used for new
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         connections.
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract String[] getEnabledCipherSuites();
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Sets the names of the cipher suites to be enabled for new connections.
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Only cipher suites returned by {@link #getSupportedCipherSuites()} are
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * allowed.
106f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param suites
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the names of the to be enabled cipher suites.
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IllegalArgumentException
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if one of the cipher suite names is not supported.
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract void setEnabledCipherSuites(String[] suites);
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the names of the supported cipher suites.
116f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the names of the supported cipher suites.
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract String[] getSupportedCipherSuites();
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the names of the supported protocols.
123f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the names of the supported protocols.
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract String[] getSupportedProtocols();
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the names of the enabled protocols to be used for new
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * connections.
131f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the names of the enabled protocols to be used for new
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         connections.
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract String[] getEnabledProtocols();
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Sets the names of the protocols to be enabled for new connections. Only
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * protocols returned by {@link #getSupportedProtocols()} are allowed.
140f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param protocols
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the names of the to be enabled protocols.
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IllegalArgumentException
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if one of the protocols is not supported.
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract void setEnabledProtocols(String[] protocols);
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Sets whether server-mode connections will be configured to require client
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * authentication. The client authentication is one of the following:
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <ul>
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <li>authentication required</li>
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <li>authentication requested</li>
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <li>no authentication needed</li>
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * </ul>
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * This method overrides the setting of {@link #setWantClientAuth(boolean)}.
157f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param need
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            {@code true} if client authentication is required,
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            {@code false} if no authentication is needed.
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract void setNeedClientAuth(boolean need);
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns whether server-mode connections will be configured to require
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * client authentication.
167f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return {@code true} if client authentication is required, {@code false}
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         if no client authentication is needed.
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract boolean getNeedClientAuth();
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Sets whether server-mode connections will be configured to request client
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * authentication. The client authentication is one of the following:
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <ul>
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <li>authentication required</li>
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <li>authentication requested</li>
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <li>no authentication needed</li>
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * </ul>
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * This method overrides the setting of {@link #setNeedClientAuth(boolean)}.
182f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param want
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            {@code true} if client authentication should be requested,
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            {@code false} if no authentication is needed.
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract void setWantClientAuth(boolean want);
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns whether server-mode connections will be configured to request
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * client authentication.
192f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return {@code true} is client authentication will be requested,
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         {@code false} if no client authentication is needed.
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract boolean getWantClientAuth();
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Sets whether new connections should act in client mode when handshaking.
200f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param mode
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            {@code true} if new connections should act in client mode,
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            {@code false} if not.
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract void setUseClientMode(boolean mode);
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns whether new connection will act in client mode when handshaking.
209f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return {@code true} if new connections will act in client mode when
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         handshaking, {@code false} if not.
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract boolean getUseClientMode();
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Sets whether new SSL sessions may be established for new connections.
217f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param flag
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            {@code true} if new SSL sessions may be established,
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            {@code false} if existing SSL sessions must be reused.
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract void setEnableSessionCreation(boolean flag);
223f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns whether new SSL sessions may be established for new connections.
226f921579f87fa63204b4a4bef39ed27e7835aec45Jesse Wilson     *
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return {@code true} if new SSL sessions may be established,
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         {@code false} if existing SSL sessions must be reused.
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract boolean getEnableSessionCreation();
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
232