Fixed socket factory not working on android 4.0.3. Can be reimplemented when fixing #4
parent
68ac5a17b0
commit
e34ebd2f0a
|
@ -26,12 +26,12 @@ import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.security.KeyStore;
|
//import java.security.KeyStore;
|
||||||
import java.util.Arrays;
|
//import java.util.Arrays;
|
||||||
|
|
||||||
import javax.net.ssl.TrustManager;
|
//import javax.net.ssl.TrustManager;
|
||||||
import javax.net.ssl.TrustManagerFactory;
|
//import javax.net.ssl.TrustManagerFactory;
|
||||||
import javax.net.ssl.X509TrustManager;
|
//import javax.net.ssl.X509TrustManager;
|
||||||
|
|
||||||
import okhttp3.Call;
|
import okhttp3.Call;
|
||||||
import okhttp3.FormBody;
|
import okhttp3.FormBody;
|
||||||
|
@ -176,18 +176,18 @@ public class LoginActivity extends AppCompatActivity implements
|
||||||
|
|
||||||
private void authenticateWithTracmanServer(final Request request) throws Exception {
|
private void authenticateWithTracmanServer(final Request request) throws Exception {
|
||||||
// Needed to support TLS 1.1 and 1.2
|
// Needed to support TLS 1.1 and 1.2
|
||||||
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(
|
// TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(
|
||||||
TrustManagerFactory.getDefaultAlgorithm());
|
// TrustManagerFactory.getDefaultAlgorithm());
|
||||||
trustManagerFactory.init((KeyStore) null);
|
// trustManagerFactory.init((KeyStore) null);
|
||||||
TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
|
// TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
|
||||||
if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) {
|
// if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) {
|
||||||
throw new IllegalStateException("Unexpected default trust managers:"
|
// throw new IllegalStateException("Unexpected default trust managers:"
|
||||||
+ Arrays.toString(trustManagers));
|
// + Arrays.toString(trustManagers));
|
||||||
}
|
// }
|
||||||
X509TrustManager trustManager = (X509TrustManager) trustManagers[0];
|
// X509TrustManager trustManager = (X509TrustManager) trustManagers[0];
|
||||||
|
|
||||||
OkHttpClient client = new OkHttpClient.Builder()
|
OkHttpClient client = new OkHttpClient.Builder()
|
||||||
.sslSocketFactory(new TLSSocketFactory(), trustManager)
|
// .sslSocketFactory(new TLSSocketFactory(), trustManager)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
client.newCall(request).enqueue(new Callback() {
|
client.newCall(request).enqueue(new Callback() {
|
||||||
|
|
|
@ -1,75 +1,75 @@
|
||||||
package us.keithirwin.tracman;
|
//package us.keithirwin.tracman;
|
||||||
|
//
|
||||||
import java.io.IOException;
|
//import java.io.IOException;
|
||||||
import java.net.InetAddress;
|
//import java.net.InetAddress;
|
||||||
import java.net.Socket;
|
//import java.net.Socket;
|
||||||
import java.net.UnknownHostException;
|
//import java.net.UnknownHostException;
|
||||||
import java.security.KeyManagementException;
|
//import java.security.KeyManagementException;
|
||||||
import java.security.NoSuchAlgorithmException;
|
//import java.security.NoSuchAlgorithmException;
|
||||||
|
//
|
||||||
import javax.net.ssl.SSLContext;
|
//import javax.net.ssl.SSLContext;
|
||||||
import javax.net.ssl.SSLSocket;
|
//import javax.net.ssl.SSLSocket;
|
||||||
import javax.net.ssl.SSLSocketFactory;
|
//import javax.net.ssl.SSLSocketFactory;
|
||||||
|
//
|
||||||
/**
|
///**
|
||||||
* @author fkrauthan
|
// * @author fkrauthan
|
||||||
* From: https://blog.dev-area.net/2015/08/13/android-4-1-enable-tls-1-1-and-tls-1-2/
|
// * From: https://blog.dev-area.net/2015/08/13/android-4-1-enable-tls-1-1-and-tls-1-2/
|
||||||
*/
|
// */
|
||||||
public class TLSSocketFactory extends SSLSocketFactory {
|
//public class TLSSocketFactory extends SSLSocketFactory {
|
||||||
|
//
|
||||||
private SSLSocketFactory internalSSLSocketFactory;
|
// private SSLSocketFactory internalSSLSocketFactory;
|
||||||
|
//
|
||||||
public TLSSocketFactory() throws KeyManagementException, NoSuchAlgorithmException {
|
// public TLSSocketFactory() throws KeyManagementException, NoSuchAlgorithmException {
|
||||||
SSLContext context = SSLContext.getInstance("TLS");
|
// SSLContext context = SSLContext.getInstance("TLS");
|
||||||
context.init(null, null, null);
|
// context.init(null, null, null);
|
||||||
internalSSLSocketFactory = context.getSocketFactory();
|
// internalSSLSocketFactory = context.getSocketFactory();
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public String[] getDefaultCipherSuites() {
|
// public String[] getDefaultCipherSuites() {
|
||||||
return internalSSLSocketFactory.getDefaultCipherSuites();
|
// return internalSSLSocketFactory.getDefaultCipherSuites();
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public String[] getSupportedCipherSuites() {
|
// public String[] getSupportedCipherSuites() {
|
||||||
return internalSSLSocketFactory.getSupportedCipherSuites();
|
// return internalSSLSocketFactory.getSupportedCipherSuites();
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public Socket createSocket() throws IOException {
|
// public Socket createSocket() throws IOException {
|
||||||
return enableTLSOnSocket(internalSSLSocketFactory.createSocket());
|
// return enableTLSOnSocket(internalSSLSocketFactory.createSocket());
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public Socket createSocket(Socket s, String host, int port, boolean autoClose) throws IOException {
|
// public Socket createSocket(Socket s, String host, int port, boolean autoClose) throws IOException {
|
||||||
return enableTLSOnSocket(internalSSLSocketFactory.createSocket(s, host, port, autoClose));
|
// return enableTLSOnSocket(internalSSLSocketFactory.createSocket(s, host, port, autoClose));
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public Socket createSocket(String host, int port) throws IOException, UnknownHostException {
|
// public Socket createSocket(String host, int port) throws IOException, UnknownHostException {
|
||||||
return enableTLSOnSocket(internalSSLSocketFactory.createSocket(host, port));
|
// return enableTLSOnSocket(internalSSLSocketFactory.createSocket(host, port));
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public Socket createSocket(String host, int port, InetAddress localHost, int localPort) throws IOException, UnknownHostException {
|
// public Socket createSocket(String host, int port, InetAddress localHost, int localPort) throws IOException, UnknownHostException {
|
||||||
return enableTLSOnSocket(internalSSLSocketFactory.createSocket(host, port, localHost, localPort));
|
// return enableTLSOnSocket(internalSSLSocketFactory.createSocket(host, port, localHost, localPort));
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public Socket createSocket(InetAddress host, int port) throws IOException {
|
// public Socket createSocket(InetAddress host, int port) throws IOException {
|
||||||
return enableTLSOnSocket(internalSSLSocketFactory.createSocket(host, port));
|
// return enableTLSOnSocket(internalSSLSocketFactory.createSocket(host, port));
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public Socket createSocket(InetAddress address, int port, InetAddress localAddress, int localPort) throws IOException {
|
// public Socket createSocket(InetAddress address, int port, InetAddress localAddress, int localPort) throws IOException {
|
||||||
return enableTLSOnSocket(internalSSLSocketFactory.createSocket(address, port, localAddress, localPort));
|
// return enableTLSOnSocket(internalSSLSocketFactory.createSocket(address, port, localAddress, localPort));
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
private Socket enableTLSOnSocket(Socket socket) {
|
// private Socket enableTLSOnSocket(Socket socket) {
|
||||||
if(socket != null && (socket instanceof SSLSocket)) {
|
// if(socket != null && (socket instanceof SSLSocket)) {
|
||||||
((SSLSocket)socket).setEnabledProtocols(new String[] {"TLSv1.1", "TLSv1.2"});
|
// ((SSLSocket)socket).setEnabledProtocols(new String[] {"TLSv1.1", "TLSv1.2"});
|
||||||
}
|
// }
|
||||||
return socket;
|
// return socket;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
}
|
//}
|
Loading…
Reference in New Issue