|
|
@@ -3,27 +3,11 @@
|
|
|
*/
|
|
|
package kr.co.zumo.app.lifeplus.network.api;
|
|
|
|
|
|
-import android.content.Context;
|
|
|
-
|
|
|
import com.google.gson.Gson;
|
|
|
import com.google.gson.GsonBuilder;
|
|
|
|
|
|
-import java.io.BufferedInputStream;
|
|
|
-import java.io.InputStream;
|
|
|
-import java.security.KeyStore;
|
|
|
-import java.security.cert.Certificate;
|
|
|
-import java.security.cert.CertificateFactory;
|
|
|
-import java.util.Arrays;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
-import javax.net.ssl.SSLContext;
|
|
|
-import javax.net.ssl.SSLSocketFactory;
|
|
|
-import javax.net.ssl.TrustManager;
|
|
|
-import javax.net.ssl.TrustManagerFactory;
|
|
|
-import javax.net.ssl.X509TrustManager;
|
|
|
-
|
|
|
-import kr.co.zumo.app.R;
|
|
|
-import kr.co.zumo.app.lifeplus.application.App;
|
|
|
import kr.co.zumo.app.lifeplus.util.AppUtil;
|
|
|
import okhttp3.OkHttpClient;
|
|
|
import okhttp3.logging.HttpLoggingInterceptor;
|
|
|
@@ -43,9 +27,6 @@ import retrofit2.converter.gson.GsonConverterFactory;
|
|
|
*/
|
|
|
class RetrofitService {
|
|
|
|
|
|
- static X509TrustManager storedTrustManager;
|
|
|
- static SSLSocketFactory storedSslSocketFactory;
|
|
|
-
|
|
|
static <T> T retrofit(String url, Class<T> className, int timeoutMs/*, String appVer, String userId, String deviceId, String token*/) {
|
|
|
OkHttpClient.Builder builder = new OkHttpClient.Builder();
|
|
|
|
|
|
@@ -79,58 +60,7 @@ class RetrofitService {
|
|
|
builder.addInterceptor(logging);
|
|
|
}
|
|
|
|
|
|
- if (AppUtil.isProduct()) {
|
|
|
- // apply ssl cert
|
|
|
- try {
|
|
|
- X509TrustManager trustManager;
|
|
|
- SSLSocketFactory sslSocketFactory;
|
|
|
-
|
|
|
- if (null != storedTrustManager && null != storedTrustManager) {
|
|
|
- trustManager = storedTrustManager;
|
|
|
- sslSocketFactory = storedSslSocketFactory;
|
|
|
- }
|
|
|
- else {
|
|
|
- Context context = App.getInstance().getContext();
|
|
|
-
|
|
|
- // Load CAs from an InputStream
|
|
|
- // (could be from a resource or ByteArrayInputStream or ...)
|
|
|
- CertificateFactory cf = CertificateFactory.getInstance("X.509");
|
|
|
- InputStream is = context.getResources().openRawResource(R.raw.chain_rootca_bundle);
|
|
|
- InputStream caInput = new BufferedInputStream(is);
|
|
|
- Certificate ca;
|
|
|
- try {
|
|
|
- ca = cf.generateCertificate(caInput);
|
|
|
- // System.out.println("ca=" + ((X509Certificate) ca).getSubjectDN());
|
|
|
- } finally {
|
|
|
- caInput.close();
|
|
|
- }
|
|
|
-
|
|
|
- // Create a KeyStore containing our trusted CAs
|
|
|
- String keyStoreType = KeyStore.getDefaultType();
|
|
|
- KeyStore keyStore = KeyStore.getInstance(keyStoreType);
|
|
|
- keyStore.load(null, null);
|
|
|
- keyStore.setCertificateEntry("ca", ca);
|
|
|
-
|
|
|
- TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
|
|
|
- trustManagerFactory.init(keyStore);
|
|
|
- TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
|
|
|
-
|
|
|
- if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) {
|
|
|
- throw new IllegalStateException("Unexpected default trust managers:" + Arrays.toString(trustManagers));
|
|
|
- }
|
|
|
-
|
|
|
- trustManager = (X509TrustManager) trustManagers[0];
|
|
|
- SSLContext sslContext = SSLContext.getInstance("TLS");
|
|
|
- sslContext.init(null, new TrustManager[]{trustManager}, null);
|
|
|
- sslSocketFactory = sslContext.getSocketFactory();
|
|
|
- }
|
|
|
-
|
|
|
- builder.sslSocketFactory(sslSocketFactory, trustManager);
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
+ new SSLSocketFactoryAssign(builder);
|
|
|
|
|
|
Gson gson = new GsonBuilder().create();
|
|
|
Retrofit retrofit = new Retrofit.Builder()
|