/** * Created by moses on 4/23/15. */ package org.zpcat.test; import android.app.Application; import android.util.Log; import java.security.KeyManagementException; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.UnrecoverableKeyException; import java.security.cert.X509Certificate; import javax.net.ssl.KeyManager; import javax.net.ssl.KeyManagerFactory; 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; public class TLSApplicaton extends Application { private final String TAG = "TLSdemo"; private SSLSocketFactory mDefaultSSF; private static TLSApplicaton sApplication; public static TLSApplicaton getInstance() { return sApplication; } @Override public void onCreate() { super.onCreate(); try { String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm(); Log.e(TAG, "TrustManagerFacotry default algorithm: " + tmfAlgorithm); TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm); tmf.init((KeyStore) null); TrustManager[] tms = tmf.getTrustManagers(); for (TrustManager tm : tms) { if (tm instanceof X509TrustManager) { X509Certificate[] certs = ((X509TrustManager) tm).getAcceptedIssuers(); /*for (X509Certificate cert : certs) { Log.e(TAG, "--------------"); Log.e(TAG, cert.toString()); Log.e(TAG, "--------------"); }*/ } } String kmfAlgorithm = KeyManagerFactory.getDefaultAlgorithm(); Log.e(TAG, "KeyManagerFactory default algorithm: " + kmfAlgorithm); KeyManagerFactory kmf = KeyManagerFactory.getInstance(kmfAlgorithm); kmf.init(null, null); KeyManager[] kms = kmf.getKeyManagers(); SSLContext sslContext = SSLContext.getInstance("TLS"); sslContext.init(null, tms, null); Log.e(TAG, "Keystore algorithm: " + KeyStore.getDefaultType()); mDefaultSSF = sslContext.getSocketFactory(); if (mDefaultSSF == null) { Log.e(TAG, "SSLContext getSocketFactory is null"); } } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (KeyManagementException e) { e.printStackTrace(); } catch (KeyStoreException e) { e.printStackTrace(); } catch (UnrecoverableKeyException e) { e.printStackTrace(); } sApplication = this; } public SSLSocketFactory getDefaultSSLSocketFactory() { return mDefaultSSF; } }