package com.example.patrick.myapplication.network; /** * Created by Patrizio Perna on 12/01/15. */ import org.apache.http.conn.ssl.SSLSocketFactory; import javax.net.ssl.SSLContext; import java.security.KeyStore; import java.security.NoSuchAlgorithmException; import java.security.KeyManagementException; import java.security.KeyStoreException; import java.security.UnrecoverableKeyException; import javax.net.ssl.TrustManager; import java.net.Socket; import java.io.IOException; import java.net.UnknownHostException; /** * Taken from: http://janis.peisenieks.lv/en/76/english-making-an-ssl-connection-via-android/ * */ public class CustomSSLSocketFactory extends SSLSocketFactory { SSLContext sslContext = SSLContext.getInstance("TLS"); public CustomSSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException { super(truststore); TrustManager tm = new CustomX509TrustManager(); sslContext.init(null, new TrustManager[] { tm }, null); } public CustomSSLSocketFactory(SSLContext context) throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException, UnrecoverableKeyException { super(null); sslContext = context; } @Override public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException, UnknownHostException { return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose); } @Override public Socket createSocket() throws IOException { return sslContext.getSocketFactory().createSocket(); } }