package org.openstack.atlas.api.mgmt.helpers.LDAPTools;
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;
// Since no one wants to sign their certs we might as well forget about validating them :(
public class UncertainCertIgnoreingSSLFactory extends SocketFactory {
private static SocketFactory ignoreCertFactory = null;
static {
TrustManager[] bogusTrustMan = new TrustManager[]{new X509TrustManager() {
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkClientTrusted(X509Certificate[] c, String a) {
}
@Override
public void checkServerTrusted(X509Certificate[] c, String a) {
}
}
};
try {
SSLContext ctx = SSLContext.getInstance("SSL");
ctx.init(null, bogusTrustMan, new java.security.SecureRandom());
ignoreCertFactory = ctx.getSocketFactory();
} catch (GeneralSecurityException e) {
e.printStackTrace();
}
}
@Override
public Socket createSocket() throws IOException {
return ignoreCertFactory.createSocket();
}
@Override
public Socket createSocket(InetAddress address, int port) throws IOException {
return ignoreCertFactory.createSocket(address, port);
}
@Override
public Socket createSocket(InetAddress address, int port, InetAddress localAddress,
int localPort) throws IOException {
return ignoreCertFactory.createSocket(address, port, localAddress, localPort);
}
@Override
public Socket createSocket(String host, int port) throws IOException,
UnknownHostException {
return ignoreCertFactory.createSocket(host, port);
}
@Override
public Socket createSocket(String host, int port, InetAddress localHost, int localPort)
throws IOException, UnknownHostException {
return ignoreCertFactory.createSocket(host, port, localHost, localPort);
}
public static SocketFactory getDefault() {
return new UncertainCertIgnoreingSSLFactory();
}
}