hu.javaforum.android.soap.ssl.AllTrustSSLSocketFactory.java Source code

Java tutorial

Introduction

Here is the source code for hu.javaforum.android.soap.ssl.AllTrustSSLSocketFactory.java

Source

/**
 * CC-LGPL 2.1
 * http://creativecommons.org/licenses/LGPL/2.1/
 */
package hu.javaforum.android.soap.ssl;

import java.io.IOException;
import java.net.Socket;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableKeyException;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import org.apache.http.conn.ssl.SSLSocketFactory;

/**
 * Factory of the trust all SSL mechanism.
 *
 * Changelog:
 * ANDROIDSOAP-7
 *
 * @author Gbor Auth <gabor.auth@javaforum.hu>
 */
public class AllTrustSSLSocketFactory extends SSLSocketFactory {

    /**
     * The SSL context.
     */
    private final SSLContext sslContext = SSLContext.getInstance("TLS");

    /**
     * Constructor for AllTrustSSLSocketFactory.
     *
     * @param trustStore The truststore
     * @throws KeyManagementException KeyManagementException
     * @throws KeyStoreException KeyStoreException
     * @throws NoSuchAlgorithmException NoSuchAlgorithmException
     * @throws UnrecoverableKeyException UnrecoverableKeyException
     */
    public AllTrustSSLSocketFactory(final KeyStore trustStore)
            throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException {
        super(trustStore);
        this.setHostnameVerifier(ALLOW_ALL_HOSTNAME_VERIFIER);

        TrustManager[] tm = new TrustManager[1];
        tm[0] = new AllTrustManager();
        sslContext.init(null, tm, null);
    }

    /**
     * Create a new socket.
     *
     * @param socket The sockeet
     * @param host The host
     * @param port The port
     * @param autoClose True when auto close socket
     *
     * @return The socket
     * @throws IOException IOException
     */
    @Override
    public final Socket createSocket(final Socket socket, final String host, final int port,
            final boolean autoClose) throws IOException {
        return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose);
    }

    /**
     * Create a new socket.
     *
     * @return The Socket
     * @throws IOException IOException
     */
    @Override
    public final Socket createSocket() throws IOException {
        return sslContext.getSocketFactory().createSocket();
    }
}