Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/sun/security/ssl/GenSSLConfigs/ServerThread.java
41152 views
1
/*
2
* Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
import java.io.*;
25
import javax.net.ssl.*;
26
27
class ServerThread extends TestThread
28
implements HandshakeCompletedListener
29
{
30
// Basic server identity info
31
private int port;
32
private SSLServerSocketFactory factory;
33
34
private int backlog = 50;
35
private SSLServerSocket ss;
36
37
// Crypto options ... start with basic ciphers, renegotiation
38
// can use a different set.
39
private String renegotiateSuites [];
40
41
// Flags controlling testing -- passed to handler
42
private boolean needClientAuth;
43
44
// Flags controlling testing -- main server thread only
45
private boolean useMT;
46
47
ServerThread (int port, int backlog, SSLContext ctx)
48
{
49
super ("Server");
50
setDaemon (true);
51
52
this.port = port;
53
this.backlog = backlog;
54
factory = ctx.getServerSocketFactory();
55
}
56
57
58
// NEGOTIATION OPTIONS
59
60
public void setRenegotiateSuites (String suites [])
61
{ renegotiateSuites = suites; }
62
63
64
// DEFINE WHAT IS BEING TESTED
65
66
public void setNeedClientAuth (boolean flag)
67
{ needClientAuth = flag; }
68
public boolean getNeedClientAuth ()
69
{ return needClientAuth; }
70
71
public void setUseMT (boolean flag)
72
{ useMT = flag; }
73
public boolean getUseMT ()
74
{ return useMT; }
75
76
public int getServerPort() {
77
return port;
78
}
79
80
81
public void waitTillReady ()
82
{
83
synchronized (this) {
84
while (ss == null)
85
try { wait (); }
86
catch (InterruptedException e) { }
87
}
88
}
89
90
91
public void run ()
92
{
93
// NOT TESTING:
94
// - connection backlog
95
// - binding to IP address
96
// - base class methods
97
98
try {
99
synchronized (this) {
100
ss = (SSLServerSocket)
101
factory.createServerSocket(port, backlog);
102
port = ss.getLocalPort();
103
notify ();
104
}
105
106
if (needClientAuth)
107
ss.setNeedClientAuth (true);
108
if (basicCipherSuites != null)
109
ss.setEnabledCipherSuites (basicCipherSuites);
110
111
out.println ("%% Starting " + getName ());
112
113
} catch (Throwable t) {
114
synchronized (out) {
115
out.println ("%% Error in " + getName ());
116
t.printStackTrace (out);
117
}
118
119
return;
120
}
121
122
// XXX for N connections ...
123
124
while (true) {
125
try {
126
SSLSocket s = (SSLSocket) ss.accept ();
127
128
if (listenHandshake)
129
s.addHandshakeCompletedListener (this);
130
131
if (verbosity >= 1)
132
out.println ("%% " + getName () + " accepted from "
133
+ s.getInetAddress ().getHostName ()
134
+ ":" + s.getPort ());
135
136
ServerHandler handler = new ServerHandler (s);
137
138
handler.setVerbosity (verbosity);
139
handler.setOutput (out);
140
141
handler.setDoRenegotiate (doRenegotiate);
142
handler.setInitiateHandshake (initiateHandshake);
143
handler.setListenHandshake (listenHandshake);
144
handler.setReverseRole (reverseRole);
145
handler.setNeedClientAuth (needClientAuth);
146
147
if (prng != null)
148
handler.setPRNG (prng);
149
150
if (useMT)
151
handler.start ();
152
else
153
handler.run ();
154
155
} catch (Throwable t) {
156
synchronized (out) {
157
out.println ("%% Error in " + getName ());
158
t.printStackTrace (out);
159
}
160
161
162
return;
163
}
164
}
165
}
166
167
168
public void handshakeCompleted (HandshakeCompletedEvent event)
169
{
170
if (verbosity >= 2) {
171
out.println ("%% Handshook: " + event.getSource ());
172
173
// if more verbosity, give cert chain
174
}
175
}
176
}
177
178