FileDocCategorySizeDatePackage
SSLHelloImpl.javaAPI DocExample2137Wed Apr 19 11:20:18 BST 2000None

SSLHelloImpl.java

/****************************************************************
 *  Copyright (c) 1996, 1997, 1998, 1999 Phaos Technology Corp. All 
 *  rights reserved.
 ****************************************************************/

import java.rmi.*;
import java.rmi.server.*;
import java.util.*;
import java.io.*;
import java.rmi.registry.*;

// Import Phaos SSLava Toolkit APIs
import crysec.*;
import crysec.SSL.*;

// Extend to use SSL
public class SSLHelloImpl extends UnicastRemoteObject implements Hello {
  private String name;

  public SSLHelloImpl(SSLServerSocketFactory ssf, String s) 
      throws RemoteException {

      /* pass a client ssl socketfactory and a server ssl socket
       * factory to allow secure rmi communication.  
       *
       * SSLClientSocketFactory is downloaded to client transparently.  
       */
      super(0, new SSLClientSocketFactory(), ssf);
      
      name = s;
  }

  public String sayHello() throws RemoteException {
    return "SSL Hello World!";
  }

  public static void main(String args[]) {
    try {
	// initialize server certificate
	SSLCertificate cert = new SSLCertificate();
	cert.certificateList = new Vector();
	cert.certificateList.addElement(new X509(new File("server-cert.der")));
	cert.certificateList.addElement(new X509(new File("ca-cert.der")));

	// initialize SSL context object
	SSLParams params = new SSLParams();
	params.setServerCert(cert);

	// require client authentication
	params.setRequestClientCert(true);

	System.setSecurityManager(new RMISecurityManager());
	
	// secure server socket factory to use in remote objects
	SSLServerSocketFactory ssf = new SSLServerSocketFactory(params);

	// create a secure rmiregistry
	Registry registry = LocateRegistry.createRegistry(1099,
			   new SSLClientSocketFactory(), ssf);

	// create a remote object that will use a secure client/server socket pair
	SSLHelloImpl o = new 
	    SSLHelloImpl(ssf, "HelloServer");

	registry.rebind("/HelloServer", o);
	System.out.println("HelloServer bound in registry");

      } catch (Exception e) {
	  System.err.println(e.getMessage());
	  e.printStackTrace();
      }
  }
}