/*
BlindSSLSocketFactory.java
An SSL Socket Factory class that does not refuse connection if we
don't have a certificate available to validate the server.
Used during development of our gasharl ExchangeStoreTask.
This was copied from http://blog.platinumsolutions.com/files/BlindSSLSocketFactory.java.txt
*/
package arlut.csd.ganymede.gasharl;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.security.GeneralSecurityException;
import java.security.cert.X509Certificate;
import javax.net.SocketFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
/**
* Class to create an SSL Socket without checking validity of certificate signer.
*/
public class BlindSSLSocketFactory extends SocketFactory
{
private static SocketFactory blindFactory = null;
/**
* Builds an all trusting "blind" ssl socket factory.
*/
static
{
// create a trust manager that will purposefully fall down on the
// job
TrustManager[] blindTrustMan = new TrustManager[] {
new X509TrustManager()
{
public X509Certificate[] getAcceptedIssuers()
{
return null;
}
public void checkClientTrusted(X509Certificate[] c, String a)
{
}
public void checkServerTrusted(X509Certificate[] c, String a)
{
}
}
};
// create our "blind" ssl socket factory with our lazy trust manager
try
{
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, blindTrustMan, new java.security.SecureRandom());
blindFactory = sc.getSocketFactory();
}
catch (GeneralSecurityException e)
{
e.printStackTrace();
}
}
/**
* @see javax.net.SocketFactory#getDefault()
*/
public static SocketFactory getDefault()
{
return new BlindSSLSocketFactory();
}
/**
* @see javax.net.SocketFactory#createSocket(java.lang.String, int)
*/
public Socket createSocket(String arg0, int arg1) throws IOException, UnknownHostException
{
return blindFactory.createSocket(arg0, arg1);
}
/**
* @see javax.net.SocketFactory#createSocket(java.net.InetAddress, int)
*/
public Socket createSocket(InetAddress arg0, int arg1) throws IOException
{
return blindFactory.createSocket(arg0, arg1);
}
/**
* @see javax.net.SocketFactory#createSocket(java.lang.String, int,
* java.net.InetAddress, int)
*/
public Socket createSocket(String arg0, int arg1, InetAddress arg2, int arg3) throws IOException, UnknownHostException
{
return blindFactory.createSocket(arg0, arg1, arg2, arg3);
}
/**
* @see javax.net.SocketFactory#createSocket(java.net.InetAddress, int,
* java.net.InetAddress, int)
*/
public Socket createSocket(InetAddress arg0, int arg1, InetAddress arg2, int arg3) throws IOException
{
return blindFactory.createSocket(arg0, arg1, arg2, arg3);
}
}