package org.jacorb.orb.listener; import java.io.IOException; import java.security.cert.Certificate; import java.util.EventObject; /** * <code>SSLSessionEvent</code> defines an event state object for a * SSL Session. * * @author Nick Cross */ public class SSLSessionEvent extends EventObject { /** * <code>remoteIP</code> is the remote IP the socket is connecting to. */ private final String remoteIP; /** * <code>remotePort</code> is the remote port the socket is connecting to. */ private final int remotePort; /** * <code>localPort</code> is the local port the socket is using. */ private final int localPort; /** * <code>localIP</code> is the local IP address the socket is using. */ private final String localIP; /** * <code>remoteDN</code> is the distinguished name from the certificate of * the remote connection. */ private String remoteDN = null; /** * <code>peerCerts</code> is an array of X509Certificates for the remote * connection */ private final Certificate [] peerCerts; /** * <code>ex</code> the Exception that caused this event to be created */ private final IOException ex; /** * Creates a new <code>SSLSessionEvent</code> instance passing in the * source of the event and relevant connection data. * * @param source an <code>Object</code> value * @param remoteIP a <code>String</code> value, maybe blank if a Socket has * just been created and not connected. * @param remotePort an <code>int</code> value, maybe -1 if a Socket has * just been created and not connected. * @param certs a <code>Certificate</code>[] value * @param localPort an <code>int</code> value * @param localIP a <code>String</code> value */ public SSLSessionEvent (Object source, String remoteIP, int remotePort, Certificate [] certs, int localPort, String localIP, IOException ex) { super (source); this.remoteIP = remoteIP; this.remotePort = remotePort; this.peerCerts = certs; this.localPort = localPort; this.localIP = localIP; this.ex = ex; } /** * <code>getRemoteIP</code> is an accessor for the remote IP. * * @return a <code>String</code> value */ public String getRemoteIP() { return remoteIP; } /** * <code>getRemotePort</code> is an accessor for the remote port. * * @return a <code>int</code> value */ public int getRemotePort() { return remotePort; } /** * <code>getRemoteDN</code> is an accessor for the remote distinguished name * * @return a <code>String</code> value * @deprecated use getPeerCertificateChain */ public String getRemoteDN() { StringBuffer sb; if (remoteDN == null && peerCerts != null) { sb = new StringBuffer(); for (int i = 0; i < peerCerts.length; i++) { sb.append(peerCerts[i].toString()); sb.append("\n\n"); } remoteDN = sb.toString(); } if (remoteDN == null || remoteDN.length() == 0) { remoteDN = "[Unable to verify peer certificates]"; } return remoteDN; } /** * <code>getLocalPort</code> is an accessor for the local port. * * @return a <code>int</code> value */ public int getLocalPort() { return localPort; } /** * <code>getLocalIP</code> is an accessor for the local IP address. * * @return a <code>String</code> value */ public String getLocalIP() { return localIP; } /** * Returns the <code>Certificate</code> chain for the remote object. * This may return null if the certificates were not available when * this event was created * * @return An array of <code>Certificate</code> objects. */ public Certificate [] getPeerCertificateChain () { return peerCerts; } /** * Returns a String representation of this EventObject. * * @return A String representation of this EventObject. */ public String toString() { String exMsg = ""; if (ex != null) { exMsg = " and exception " + ex; } return ( super.toString() + " with local port " + localPort + " and local IP " + localIP + " and remote port " + remotePort + " and remote IP " + remoteIP + " and certificates " + getRemoteDN() + exMsg ); } /** * Returns the exception that caused this event to be created * @return <code>IOException</code> this can be null */ public IOException getCause() { return ex; } }