summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorTom Hennen <TomHennen@users.noreply.github.com>2015-08-19 21:20:42 -0400
committerTom Hennen <TomHennen@users.noreply.github.com>2015-08-19 21:20:42 -0400
commit5bd341fd8a8c069268c60644e2498506e2d7f23d (patch)
treee4edba57902f9fc4772e1651e93c814510552bdc /core
parentb7ac013b5b45ca5c601a7d05e2b0e54e84c6779b (diff)
parent3321e8db4f51834eb9bd7de54f081fe4c14d1fca (diff)
downloadAntennaPod-5bd341fd8a8c069268c60644e2498506e2d7f23d.zip
Merge pull request #1103 from mfietz/issue/1086
Custom SSL Socket Factory for Android 4.1.x - 4.4x
Diffstat (limited to 'core')
-rw-r--r--core/build.gradle4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java80
2 files changed, 82 insertions, 2 deletions
diff --git a/core/build.gradle b/core/build.gradle
index 14667ba37..46b2e3ce9 100644
--- a/core/build.gradle
+++ b/core/build.gradle
@@ -45,8 +45,8 @@ dependencies {
compile 'org.jsoup:jsoup:1.7.3'
compile 'com.github.bumptech.glide:glide:3.6.1'
compile 'com.github.bumptech.glide:okhttp-integration:1.3.0'
- compile 'com.squareup.okhttp:okhttp:2.3.0'
- compile 'com.squareup.okhttp:okhttp-urlconnection:2.3.0'
+ compile 'com.squareup.okhttp:okhttp:2.4.0'
+ compile 'com.squareup.okhttp:okhttp-urlconnection:2.4.0'
compile 'com.squareup.okio:okio:1.2.0'
compile 'com.nineoldandroids:library:2.4.0'
compile 'de.greenrobot:eventbus:2.4.0'
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java
index ec3d3e2fe..402a7a8bd 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java
@@ -1,13 +1,22 @@
package de.danoeh.antennapod.core.service.download;
+import android.os.Build;
import android.util.Log;
import com.squareup.okhttp.OkHttpClient;
+import java.io.IOException;
import java.net.CookieManager;
import java.net.CookiePolicy;
+import java.net.InetAddress;
+import java.net.Socket;
+import java.security.GeneralSecurityException;
import java.util.concurrent.TimeUnit;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSocket;
+import javax.net.ssl.SSLSocketFactory;
+
import de.danoeh.antennapod.core.BuildConfig;
/**
@@ -50,6 +59,10 @@ public class AntennapodHttpClient {
client.setFollowRedirects(true);
client.setFollowSslRedirects(true);
+ if(16 <= Build.VERSION.SDK_INT && Build.VERSION.SDK_INT < 21) {
+ client.setSslSocketFactory(new CustomSslSocketFactory());
+ }
+
httpClient = client;
}
return httpClient;
@@ -64,4 +77,71 @@ public class AntennapodHttpClient {
// does nothing at the moment
}
}
+
+ private static class CustomSslSocketFactory extends SSLSocketFactory {
+
+ private SSLSocketFactory factory;
+
+ public CustomSslSocketFactory() {
+ try {
+ SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
+ sslContext.init(null, null, null);
+ factory= sslContext.getSocketFactory();
+ } catch(GeneralSecurityException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public String[] getDefaultCipherSuites() {
+ return factory.getDefaultCipherSuites();
+ }
+
+ @Override
+ public String[] getSupportedCipherSuites() {
+ return factory.getSupportedCipherSuites();
+ }
+
+ public Socket createSocket() throws IOException {
+ SSLSocket result = (SSLSocket) factory.createSocket();
+ configureSocket(result);
+ return result;
+ }
+
+ public Socket createSocket(String var1, int var2) throws IOException {
+ SSLSocket result = (SSLSocket) factory.createSocket(var1, var2);
+ configureSocket(result);
+ return result;
+ }
+
+ public Socket createSocket(Socket var1, String var2, int var3, boolean var4) throws IOException {
+ SSLSocket result = (SSLSocket) factory.createSocket(var1, var2, var3, var4);
+ configureSocket(result);
+ return result;
+ }
+
+ public Socket createSocket(InetAddress var1, int var2) throws IOException {
+ SSLSocket result = (SSLSocket) factory.createSocket(var1, var2);
+ configureSocket(result);
+ return result;
+ }
+
+ public Socket createSocket(String var1, int var2, InetAddress var3, int var4) throws IOException {
+ SSLSocket result = (SSLSocket) factory.createSocket(var1, var2, var3, var4);
+ configureSocket(result);
+ return result;
+ }
+
+ public Socket createSocket(InetAddress var1, int var2, InetAddress var3, int var4) throws IOException {
+ SSLSocket result = (SSLSocket) factory.createSocket(var1, var2, var3, var4);
+ configureSocket(result);
+ return result;
+ }
+
+ private void configureSocket(SSLSocket s) {
+ s.setEnabledProtocols(new String[] { "TLSv1.2", "TLSv1.1" } );
+ }
+
+ }
+
}