com.sun.mail.util
Class MailSSLSocketFactory

java.lang.Object
  extended by javax.net.SocketFactory
      extended by javax.net.ssl.SSLSocketFactory
          extended by com.sun.mail.util.MailSSLSocketFactory

public class MailSSLSocketFactory
extends javax.net.ssl.SSLSocketFactory

An SSL socket factory that makes it easier to specify trust. This socket factory can be configured to trust all hosts or trust a specific set of hosts, in which case the server's certificate isn't verified. Alternatively, a custom TrustManager can be supplied.

An instance of this factory can be set as the value of the mail.<protocol>.ssl.socketFactory property.

Since:
JavaMail 1.4.2

Constructor Summary
MailSSLSocketFactory()
          Initializes a new MailSSLSocketFactory.
MailSSLSocketFactory(java.lang.String protocol)
          Initializes a new MailSSLSocketFactory with a given protocol.
 
Method Summary
 java.net.Socket createSocket()
           
 java.net.Socket createSocket(java.net.InetAddress inetaddress, int i)
           
 java.net.Socket createSocket(java.net.InetAddress inetaddress, int i, java.net.InetAddress inetaddress1, int j)
           
 java.net.Socket createSocket(java.net.Socket socket, java.lang.String s, int i, boolean flag)
           
 java.net.Socket createSocket(java.lang.String s, int i)
           
 java.net.Socket createSocket(java.lang.String s, int i, java.net.InetAddress inetaddress, int j)
           
 java.lang.String[] getDefaultCipherSuites()
           
 javax.net.ssl.KeyManager[] getKeyManagers()
           
 java.security.SecureRandom getSecureRandom()
           
 java.lang.String[] getSupportedCipherSuites()
           
 java.lang.String[] getTrustedHosts()
           
 javax.net.ssl.TrustManager[] getTrustManagers()
           
 boolean isServerTrusted(java.lang.String server, javax.net.ssl.SSLSocket sslSocket)
          After a successful conection to the server, this method is called to ensure that the server should be trusted.
 boolean isTrustAllHosts()
           
 void setKeyManagers(javax.net.ssl.KeyManager[] keyManagers)
           
 void setSecureRandom(java.security.SecureRandom secureRandom)
           
 void setTrustAllHosts(boolean trustAllHosts)
           
 void setTrustedHosts(java.lang.String[] trustedHosts)
           
 void setTrustManagers(javax.net.ssl.TrustManager[] trustManagers)
           
 
Methods inherited from class javax.net.ssl.SSLSocketFactory
getDefault
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MailSSLSocketFactory

public MailSSLSocketFactory()
                     throws java.security.GeneralSecurityException
Initializes a new MailSSLSocketFactory.

Throws:
java.security.GeneralSecurityException

MailSSLSocketFactory

public MailSSLSocketFactory(java.lang.String protocol)
                     throws java.security.GeneralSecurityException
Initializes a new MailSSLSocketFactory with a given protocol. Normally the protocol will be specified as "TLS".

Parameters:
protocol - The protocol to use
Throws:
java.security.NoSuchAlgorithmException - if given protocol is not supported
java.security.GeneralSecurityException
Method Detail

getKeyManagers

public javax.net.ssl.KeyManager[] getKeyManagers()
Returns:
the keyManagers

setKeyManagers

public void setKeyManagers(javax.net.ssl.KeyManager[] keyManagers)
                    throws java.security.GeneralSecurityException
Parameters:
keyManagers - the keyManagers to set
Throws:
java.security.GeneralSecurityException

getSecureRandom

public java.security.SecureRandom getSecureRandom()
Returns:
the secureRandom

setSecureRandom

public void setSecureRandom(java.security.SecureRandom secureRandom)
                     throws java.security.GeneralSecurityException
Parameters:
secureRandom - the secureRandom to set
Throws:
java.security.GeneralSecurityException

getTrustManagers

public javax.net.ssl.TrustManager[] getTrustManagers()
Returns:
the trustManagers

setTrustManagers

public void setTrustManagers(javax.net.ssl.TrustManager[] trustManagers)
                      throws java.security.GeneralSecurityException
Parameters:
trustManagers - the trustManagers to set
Throws:
java.security.GeneralSecurityException

isTrustAllHosts

public boolean isTrustAllHosts()
Returns:
true if all hosts should be trusted

setTrustAllHosts

public void setTrustAllHosts(boolean trustAllHosts)
Parameters:
trustAllHosts - should all hosts be trusted?

getTrustedHosts

public java.lang.String[] getTrustedHosts()
Returns:
the trusted hosts

setTrustedHosts

public void setTrustedHosts(java.lang.String[] trustedHosts)
Parameters:
trustedHosts - the hosts to trust

isServerTrusted

public boolean isServerTrusted(java.lang.String server,
                               javax.net.ssl.SSLSocket sslSocket)
After a successful conection to the server, this method is called to ensure that the server should be trusted.

Parameters:
server - name of the server we connected to
sslSocket - SSLSocket connected to the server
Returns:
true if "trustAllHosts" is set to true OR the server is contained in the "trustedHosts" array;

createSocket

public java.net.Socket createSocket(java.net.Socket socket,
                                    java.lang.String s,
                                    int i,
                                    boolean flag)
                             throws java.io.IOException
Specified by:
createSocket in class javax.net.ssl.SSLSocketFactory
Throws:
java.io.IOException

getDefaultCipherSuites

public java.lang.String[] getDefaultCipherSuites()
Specified by:
getDefaultCipherSuites in class javax.net.ssl.SSLSocketFactory

getSupportedCipherSuites

public java.lang.String[] getSupportedCipherSuites()
Specified by:
getSupportedCipherSuites in class javax.net.ssl.SSLSocketFactory

createSocket

public java.net.Socket createSocket()
                             throws java.io.IOException
Overrides:
createSocket in class javax.net.SocketFactory
Throws:
java.io.IOException

createSocket

public java.net.Socket createSocket(java.net.InetAddress inetaddress,
                                    int i,
                                    java.net.InetAddress inetaddress1,
                                    int j)
                             throws java.io.IOException
Specified by:
createSocket in class javax.net.SocketFactory
Throws:
java.io.IOException

createSocket

public java.net.Socket createSocket(java.net.InetAddress inetaddress,
                                    int i)
                             throws java.io.IOException
Specified by:
createSocket in class javax.net.SocketFactory
Throws:
java.io.IOException

createSocket

public java.net.Socket createSocket(java.lang.String s,
                                    int i,
                                    java.net.InetAddress inetaddress,
                                    int j)
                             throws java.io.IOException,
                                    java.net.UnknownHostException
Specified by:
createSocket in class javax.net.SocketFactory
Throws:
java.io.IOException
java.net.UnknownHostException

createSocket

public java.net.Socket createSocket(java.lang.String s,
                                    int i)
                             throws java.io.IOException,
                                    java.net.UnknownHostException
Specified by:
createSocket in class javax.net.SocketFactory
Throws:
java.io.IOException
java.net.UnknownHostException