Quelle SSLSocketParametersTest.java
Sprache: JAVA
/*
* Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
import java.io.IOException;
import java.io.File;
import java.io.Serializable;
import java.net.ServerSocket;
import java.net.Socket;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.rmi.server.RMIClientSocketFactory;
import java.rmi.server.RMIServerSocketFactory;
import java.rmi.server.UnicastRemoteObject;
import javax.net.ssl.SSLContext;
import javax.rmi.ssl.SslRMIClientSocketFactory;
import javax.rmi.ssl.SslRMIServerSocketFactory;
public class SSLSocketParametersTest implements Serializable {
public interface Hello extends Remote {
public String sayHello() throws RemoteException;
}
public class HelloImpl extends UnicastRemoteObject implements Hello {
public HelloImpl(int port,
RMIClientSocketFactory csf,
RMIServerSocketFactory ssf)
throws RemoteException {
super (port, csf, ssf);
}
public String sayHello() {
return "Hello World!" ;
}
public Remote runServer() throws IOException {
System.out.println("Inside HelloImpl::runServer" );
// Get a remote stub for this RMI object
//
Remote stub = toStub(this );
System.out.println("Stub = " + stub);
return stub;
}
}
public class HelloClient {
public void runClient(Remote stub) throws IOException {
System.out.println("Inside HelloClient::runClient" );
// "obj" is the identifier that we'll use to refer
// to the remote object that implements the "Hello"
// interface
Hello obj = (Hello) stub;
String message = obj.sayHello();
System.out.println(message);
}
}
public class ClientFactory extends SslRMIClientSocketFactory {
public ClientFactory() {
super ();
}
public Socket createSocket(String host, int port) throws IOException {
System.out.println("ClientFactory::Calling createSocket(" +
host + "," + port + ")" );
return super .createSocket(host, port);
}
}
public class ServerFactory extends SslRMIServerSocketFactory {
public ServerFactory() {
super ();
}
public ServerFactory(String[] ciphers,
String[] protocols,
boolean need) {
super (ciphers, protocols, need);
}
public ServerFactory(SSLContext context,
String[] ciphers,
String[] protocols,
boolean need) {
super (context, ciphers, protocols, need);
}
public ServerSocket createServerSocket(int port) throws IOException {
System.out.println("ServerFactory::Calling createServerSocket(" +
port + ")" );
return super .createServerSocket(port);
}
}
public void runTest(String[] args) {
int test = Integer.parseInt(args[0]);
String msg1 = "Running SSLSocketParametersTest [" + test + "]" ;
String msg2 = "SSLSocketParametersTest [" + test + "] PASSED!" ;
String msg3 = "SSLSocketParametersTest [" + test + "] FAILED!" ;
switch (test) {
case 1: /* default constructor - default config */
System.out.println(msg1);
try {
HelloImpl server = new HelloImpl(
0,
new ClientFactory(),
new ServerFactory());
Remote stub = server.runServer();
HelloClient client = new HelloClient();
client.runClient(stub);
System.out.println(msg2);
} catch (Exception e) {
System.out.println(msg3 + " Exception: " + e.toString());
e.printStackTrace(System.out);
System.exit(1);
}
break ;
case 2: /* non-default constructor - default config */
System.out.println(msg1);
try {
HelloImpl server = new HelloImpl(
0,
new ClientFactory(),
new ServerFactory(null ,
null ,
false ));
Remote stub = server.runServer();
HelloClient client = new HelloClient();
client.runClient(stub);
System.out.println(msg2);
} catch (Exception e) {
System.out.println(msg3 + " Exception: " + e.toString());
e.printStackTrace(System.out);
System.exit(1);
}
break ;
case 3: /* needClientAuth=true */
System.out.println(msg1);
try {
HelloImpl server = new HelloImpl(
0,
new ClientFactory(),
new ServerFactory(null ,
null ,
null ,
true ));
Remote stub = server.runServer();
HelloClient client = new HelloClient();
client.runClient(stub);
System.out.println(msg2);
} catch (Exception e) {
System.out.println(msg3 + " Exception: " + e.toString());
e.printStackTrace(System.out);
System.exit(1);
}
break ;
case 4: /* server side dummy_ciphersuite */
System.out.println(msg1);
try {
HelloImpl server = new HelloImpl(
0,
new ClientFactory(),
new ServerFactory(SSLContext.getDefault(),
new String[] {"dummy_ciphersuite" },
null ,
false ));
Remote stub = server.runServer();
HelloClient client = new HelloClient();
client.runClient(stub);
System.out.println(msg3);
System.exit(1);
} catch (Exception e) {
System.out.println(msg2 + " Exception: " + e.toString());
System.exit(0);
}
break ;
case 5: /* server side dummy_protocol */
System.out.println(msg1);
try {
HelloImpl server = new HelloImpl(
0,
new ClientFactory(),
new ServerFactory(null ,
new String[] {"dummy_protocol" },
false ));
Remote stub = server.runServer();
HelloClient client = new HelloClient();
client.runClient(stub);
System.out.println(msg3);
System.exit(1);
} catch (Exception e) {
System.out.println(msg2 + " Exception: " + e.toString());
System.exit(0);
}
break ;
case 6: /* client side dummy_ciphersuite */
System.out.println(msg1);
try {
System.setProperty("javax.rmi.ssl.client.enabledCipherSuites" ,
"dummy_ciphersuite" );
HelloImpl server = new HelloImpl(
0,
new ClientFactory(),
new ServerFactory());
Remote stub = server.runServer();
HelloClient client = new HelloClient();
client.runClient(stub);
System.out.println(msg3);
System.exit(1);
} catch (Exception e) {
System.out.println(msg2 + " Exception: " + e.toString());
System.exit(0);
}
break ;
case 7: /* client side dummy_protocol */
System.out.println(msg1);
try {
System.setProperty("javax.rmi.ssl.client.enabledProtocols" ,
"dummy_protocol" );
HelloImpl server = new HelloImpl(
0,
new ClientFactory(),
new ServerFactory());
Remote stub = server.runServer();
HelloClient client = new HelloClient();
client.runClient(stub);
System.out.println(msg3);
System.exit(1);
} catch (Exception e) {
System.out.println(msg2 + " Exception: " + e.toString());
System.exit(0);
}
break ;
default :
throw new IllegalArgumentException("invalid test number" );
}
}
public static void main(String[] args) {
// Set keystore properties (server-side)
//
final String keystore = System.getProperty("test.src" ) +
File.separator + "keystore" ;
System.out.println("KeyStore = " + keystore);
System.setProperty("javax.net.ssl.keyStore" , keystore);
System.setProperty("javax.net.ssl.keyStorePassword" , "password" );
// Set truststore properties (client-side)
//
final String truststore = System.getProperty("test.src" ) +
File.separator + "truststore" ;
System.out.println("TrustStore = " + truststore);
System.setProperty("javax.net.ssl.trustStore" , truststore);
System.setProperty("javax.net.ssl.trustStorePassword" , "trustword" );
// Run test
//
SSLSocketParametersTest test = new SSLSocketParametersTest();
test.runTest(args);
System.exit(0);
}
}
Messung V0.5 C=96 H=89 G=92
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland
2026-04-02