Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/javax/rmi/ssl/SSLSocketParametersTest.java
41149 views
1
/*
2
* Copyright (c) 2004, 2007, 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.IOException;
25
import java.io.File;
26
import java.io.Serializable;
27
import java.net.ServerSocket;
28
import java.net.Socket;
29
import java.rmi.Remote;
30
import java.rmi.RemoteException;
31
import java.rmi.server.RMIClientSocketFactory;
32
import java.rmi.server.RMIServerSocketFactory;
33
import java.rmi.server.UnicastRemoteObject;
34
import javax.net.ssl.SSLContext;
35
import javax.rmi.ssl.SslRMIClientSocketFactory;
36
import javax.rmi.ssl.SslRMIServerSocketFactory;
37
38
public class SSLSocketParametersTest implements Serializable {
39
40
public interface Hello extends Remote {
41
public String sayHello() throws RemoteException;
42
}
43
44
public class HelloImpl extends UnicastRemoteObject implements Hello {
45
46
public HelloImpl(int port,
47
RMIClientSocketFactory csf,
48
RMIServerSocketFactory ssf)
49
throws RemoteException {
50
super(port, csf, ssf);
51
}
52
53
public String sayHello() {
54
return "Hello World!";
55
}
56
57
public Remote runServer() throws IOException {
58
System.out.println("Inside HelloImpl::runServer");
59
// Get a remote stub for this RMI object
60
//
61
Remote stub = toStub(this);
62
System.out.println("Stub = " + stub);
63
return stub;
64
}
65
}
66
67
public class HelloClient {
68
69
public void runClient(Remote stub) throws IOException {
70
System.out.println("Inside HelloClient::runClient");
71
// "obj" is the identifier that we'll use to refer
72
// to the remote object that implements the "Hello"
73
// interface
74
Hello obj = (Hello) stub;
75
String message = obj.sayHello();
76
System.out.println(message);
77
}
78
}
79
80
public class ClientFactory extends SslRMIClientSocketFactory {
81
82
public ClientFactory() {
83
super();
84
}
85
86
public Socket createSocket(String host, int port) throws IOException {
87
System.out.println("ClientFactory::Calling createSocket(" +
88
host + "," + port + ")");
89
return super.createSocket(host, port);
90
}
91
}
92
93
public class ServerFactory extends SslRMIServerSocketFactory {
94
95
public ServerFactory() {
96
super();
97
}
98
99
public ServerFactory(String[] ciphers,
100
String[] protocols,
101
boolean need) {
102
super(ciphers, protocols, need);
103
}
104
105
public ServerFactory(SSLContext context,
106
String[] ciphers,
107
String[] protocols,
108
boolean need) {
109
super(context, ciphers, protocols, need);
110
}
111
112
public ServerSocket createServerSocket(int port) throws IOException {
113
System.out.println("ServerFactory::Calling createServerSocket(" +
114
port + ")");
115
return super.createServerSocket(port);
116
}
117
}
118
119
public void runTest(String[] args) {
120
121
int test = Integer.parseInt(args[0]);
122
123
String msg1 = "Running SSLSocketParametersTest [" + test + "]";
124
String msg2 = "SSLSocketParametersTest [" + test + "] PASSED!";
125
String msg3 = "SSLSocketParametersTest [" + test + "] FAILED!";
126
127
switch (test) {
128
case 1: /* default constructor - default config */
129
System.out.println(msg1);
130
try {
131
HelloImpl server = new HelloImpl(
132
0,
133
new ClientFactory(),
134
new ServerFactory());
135
Remote stub = server.runServer();
136
HelloClient client = new HelloClient();
137
client.runClient(stub);
138
System.out.println(msg2);
139
} catch (Exception e) {
140
System.out.println(msg3 + " Exception: " + e.toString());
141
e.printStackTrace(System.out);
142
System.exit(1);
143
}
144
break;
145
case 2: /* non-default constructor - default config */
146
System.out.println(msg1);
147
try {
148
HelloImpl server = new HelloImpl(
149
0,
150
new ClientFactory(),
151
new ServerFactory(null,
152
null,
153
false));
154
Remote stub = server.runServer();
155
HelloClient client = new HelloClient();
156
client.runClient(stub);
157
System.out.println(msg2);
158
} catch (Exception e) {
159
System.out.println(msg3 + " Exception: " + e.toString());
160
e.printStackTrace(System.out);
161
System.exit(1);
162
}
163
break;
164
case 3: /* needClientAuth=true */
165
System.out.println(msg1);
166
try {
167
HelloImpl server = new HelloImpl(
168
0,
169
new ClientFactory(),
170
new ServerFactory(null,
171
null,
172
null,
173
true));
174
Remote stub = server.runServer();
175
HelloClient client = new HelloClient();
176
client.runClient(stub);
177
System.out.println(msg2);
178
} catch (Exception e) {
179
System.out.println(msg3 + " Exception: " + e.toString());
180
e.printStackTrace(System.out);
181
System.exit(1);
182
}
183
break;
184
case 4: /* server side dummy_ciphersuite */
185
System.out.println(msg1);
186
try {
187
HelloImpl server = new HelloImpl(
188
0,
189
new ClientFactory(),
190
new ServerFactory(SSLContext.getDefault(),
191
new String[] {"dummy_ciphersuite"},
192
null,
193
false));
194
Remote stub = server.runServer();
195
HelloClient client = new HelloClient();
196
client.runClient(stub);
197
System.out.println(msg3);
198
System.exit(1);
199
} catch (Exception e) {
200
System.out.println(msg2 + " Exception: " + e.toString());
201
System.exit(0);
202
}
203
break;
204
case 5: /* server side dummy_protocol */
205
System.out.println(msg1);
206
try {
207
HelloImpl server = new HelloImpl(
208
0,
209
new ClientFactory(),
210
new ServerFactory(null,
211
new String[] {"dummy_protocol"},
212
false));
213
Remote stub = server.runServer();
214
HelloClient client = new HelloClient();
215
client.runClient(stub);
216
System.out.println(msg3);
217
System.exit(1);
218
} catch (Exception e) {
219
System.out.println(msg2 + " Exception: " + e.toString());
220
System.exit(0);
221
}
222
break;
223
case 6: /* client side dummy_ciphersuite */
224
System.out.println(msg1);
225
try {
226
System.setProperty("javax.rmi.ssl.client.enabledCipherSuites",
227
"dummy_ciphersuite");
228
HelloImpl server = new HelloImpl(
229
0,
230
new ClientFactory(),
231
new ServerFactory());
232
Remote stub = server.runServer();
233
HelloClient client = new HelloClient();
234
client.runClient(stub);
235
System.out.println(msg3);
236
System.exit(1);
237
} catch (Exception e) {
238
System.out.println(msg2 + " Exception: " + e.toString());
239
System.exit(0);
240
}
241
break;
242
case 7: /* client side dummy_protocol */
243
System.out.println(msg1);
244
try {
245
System.setProperty("javax.rmi.ssl.client.enabledProtocols",
246
"dummy_protocol");
247
HelloImpl server = new HelloImpl(
248
0,
249
new ClientFactory(),
250
new ServerFactory());
251
Remote stub = server.runServer();
252
HelloClient client = new HelloClient();
253
client.runClient(stub);
254
System.out.println(msg3);
255
System.exit(1);
256
} catch (Exception e) {
257
System.out.println(msg2 + " Exception: " + e.toString());
258
System.exit(0);
259
}
260
break;
261
default:
262
throw new IllegalArgumentException("invalid test number");
263
}
264
}
265
266
public static void main(String[] args) {
267
// Set keystore properties (server-side)
268
//
269
final String keystore = System.getProperty("test.src") +
270
File.separator + "keystore";
271
System.out.println("KeyStore = " + keystore);
272
System.setProperty("javax.net.ssl.keyStore", keystore);
273
System.setProperty("javax.net.ssl.keyStorePassword", "password");
274
275
// Set truststore properties (client-side)
276
//
277
final String truststore = System.getProperty("test.src") +
278
File.separator + "truststore";
279
System.out.println("TrustStore = " + truststore);
280
System.setProperty("javax.net.ssl.trustStore", truststore);
281
System.setProperty("javax.net.ssl.trustStorePassword", "trustword");
282
283
// Run test
284
//
285
SSLSocketParametersTest test = new SSLSocketParametersTest();
286
test.runTest(args);
287
System.exit(0);
288
}
289
}
290
291