1 7 package org.jboss.security.ssl; 8 9 import java.io.IOException ; 10 import java.io.Serializable ; 11 import java.net.InetAddress ; 12 import java.net.Socket ; 13 import java.net.UnknownHostException ; 14 import javax.net.SocketFactory; 15 import javax.net.ssl.HandshakeCompletedEvent; 16 import javax.net.ssl.HandshakeCompletedListener; 17 import javax.net.ssl.SSLSession; 18 import javax.net.ssl.SSLSocketFactory; 19 import javax.net.ssl.SSLSocket; 20 21 import org.jboss.logging.Logger; 22 23 29 public class ClientSocketFactory extends SocketFactory 30 implements HandshakeCompletedListener, Serializable 31 { 32 static final long serialVersionUID = -2762336418317218104L; 33 34 35 public ClientSocketFactory() 36 { 37 } 38 39 45 public Socket createSocket(String serverHost, int serverPort) 46 throws IOException , UnknownHostException 47 { 48 InetAddress serverAddr = InetAddress.getByName(serverHost); 49 return this.createSocket(serverAddr, serverPort); 50 } 51 52 public Socket createSocket(String serverHost, int serverPort, 53 InetAddress clientAddr, int clientPort) 54 throws IOException , UnknownHostException 55 { 56 InetAddress serverAddr = InetAddress.getByName(serverHost); 57 return this.createSocket(serverAddr, serverPort, clientAddr, clientPort); 58 } 59 public Socket createSocket(InetAddress serverAddr, int serverPort) 60 throws IOException 61 { 62 return this.createSocket(serverAddr, serverPort, null, 0); 63 } 64 public Socket createSocket(InetAddress serverAddr, int serverPort, 65 InetAddress clientAddr, int clientPort) 66 throws IOException 67 { 68 SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault(); 69 SSLSocket socket = (SSLSocket) factory.createSocket(serverAddr, serverPort, clientAddr, clientPort); 70 socket.addHandshakeCompletedListener(this); 71 return socket; 72 } 73 74 public boolean equals(Object obj) 75 { 76 return obj instanceof ClientSocketFactory; 77 } 78 public int hashCode() 79 { 80 return getClass().getName().hashCode(); 81 } 82 83 public void handshakeCompleted(HandshakeCompletedEvent handshakeCompletedEvent) 84 { 85 Logger log = Logger.getLogger(ClientSocketFactory.class); 86 if( log.isTraceEnabled() ) 87 { 88 String cipher = handshakeCompletedEvent.getCipherSuite(); 89 SSLSession session = handshakeCompletedEvent.getSession(); 90 String peerHost = session.getPeerHost(); 91 log.debug("SSL handshakeCompleted, cipher="+cipher 92 +", peerHost="+peerHost); 93 } 94 } 95 96 } 97 | Popular Tags |