1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
|
/*
* 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.
* <p>
* 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.
* <p>
* 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.
* <p>
* 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.
* <p>
* 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:
* <ul>
* <li>authentication required</li>
* <li>authentication requested</li>
* <li>no authentication needed</li>
* </ul>
* This method overrides the setting of {@link #setWantClientAuth(boolean)}.
*
* @param need
* {@code true} if client authentication is required,
* {@code false} if no authentication is needed.
*/
public abstract void setNeedClientAuth(boolean need);
/**
* Returns whether server-mode connections will be configured to require
* client authentication.
*
* @return {@code true} if client authentication is required, {@code false}
* if no client authentication is needed.
*/
public abstract boolean getNeedClientAuth();
/**
* Sets whether server-mode connections will be configured to request client
* authentication. The client authentication is one of the following:
* <ul>
* <li>authentication required</li>
* <li>authentication requested</li>
* <li>no authentication needed</li>
* </ul>
* This method overrides the setting of {@link #setNeedClientAuth(boolean)}.
*
* @param want
* {@code true} if client authentication should be requested,
* {@code false} if no authentication is needed.
*/
public abstract void setWantClientAuth(boolean want);
/**
* Returns whether server-mode connections will be configured to request
* client authentication.
*
* @return {@code true} is client authentication will be requested,
* {@code false} if no client authentication is needed.
*/
public abstract boolean getWantClientAuth();
/**
* Sets whether new connections should act in client mode when handshaking.
*
* @param mode
* {@code true} if new connections should act in client mode,
* {@code false} if not.
*/
public abstract void setUseClientMode(boolean mode);
/**
* Returns whether new connection will act in client mode when handshaking.
*
* @return {@code true} if new connections will act in client mode when
* handshaking, {@code false} if not.
*/
public abstract boolean getUseClientMode();
/**
* Sets whether new SSL sessions may be established for new connections.
*
* @param flag
* {@code true} if new SSL sessions may be established,
* {@code false} if existing SSL sessions must be reused.
*/
public abstract void setEnableSessionCreation(boolean flag);
/**
* Returns whether new SSL sessions may be established for new connections.
*
* @return {@code true} if new SSL sessions may be established,
* {@code false} if existing SSL sessions must be reused.
*/
public abstract boolean getEnableSessionCreation();
}
|