import java.io.*;
import java.net.*;
import java.security.*;
import java.security.cert.*;
import javax.net.*;
import javax.net.ssl.*;
public class CustomSocketFactory extends SSLSocketFactory {
private static class AllTrustManager
implements X509TrustManager {
private static X509Certificate[] ISSUERS =
new X509Certificate[]{};
public X509Certificate[] getAcceptedIssuers() {
return ISSUERS;
}
public void checkClientTrusted(
X509Certificate[] x509CertificateArray,
String string) throws CertificateException {
}
public void checkServerTrusted(
X509Certificate[] x509CertificateArray,
String string) throws CertificateException {
}
}
private static final TrustManager[] _trustManagers =
new TrustManager[]{ new AllTrustManager() };
private static SocketFactory _instance =
new CustomSocketFactory();
private SSLContext _context;
private SocketFactory _defaultFactory;
private SSLSocketFactory _factory;
protected CustomSocketFactory() {
try {
_defaultFactory = SocketFactory.getDefault();
_context = SSLContext.getInstance(getProtocol());
_context.init(null, _trustManagers, new SecureRandom());
_factory = _context.getSocketFactory();
}
catch(GeneralSecurityException gse) {
throw new Error(gse);
}
}
protected String getProtocol() { return "TLS"; }
public Socket createSocket() throws IOException {
return _defaultFactory.createSocket();
}
public Socket createSocket(InetAddress host, int port)
throws IOException {
return _defaultFactory.createSocket(host, port);
}
public Socket createSocket(
InetAddress address,
int port,
InetAddress localAddress,
int localPort) throws IOException {
return _defaultFactory.createSocket(
address, port, localAddress, localPort);
}
public Socket createSocket(String host, int port)
throws IOException {
return _factory.createSocket(host, port);
}
public Socket createSocket(
String host,
int port,
InetAddress localAddress,
int localPort) throws IOException {
return _defaultFactory.createSocket(
host, port, localAddress, localPort);
}
public Socket createSocket(
Socket s, String host, int port, boolean autoClose)
throws IOException {
return _factory.createSocket(s, host, port, autoClose);
}
public String[] getDefaultCipherSuites() {
return _factory.getDefaultCipherSuites();
}
public String[] getSupportedCipherSuites() {
return _factory.getSupportedCipherSuites();
}
public static SocketFactory getDefault() {
return _instance;
}
}
|