package com.easydroid.services;
import java.io.InputStream;
import java.security.KeyStore;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.PlainSocketFactory;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.SingleClientConnManager;
import com.easydroid.utils.EasyDroid;
import android.content.Context;
public class EasySecureHttpClient extends DefaultHttpClient {
final Context context;
private InputStream inputStream;
public EasySecureHttpClient(Context context) {
this.context = context;
this.inputStream = context.getResources().openRawResource(EasyDroid.BOUNCY_CASTLE_KEYSTORE_ID);
}
@Override protected ClientConnectionManager createClientConnectionManager() {
SchemeRegistry registry = new SchemeRegistry();
registry.register(
new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
registry.register(new Scheme("https", newSslSocketFactory(), 443));
return new SingleClientConnManager(getParams(), registry);
}
private SSLSocketFactory newSslSocketFactory() {
try {
KeyStore trusted = KeyStore.getInstance("BKS");
try {
trusted.load(inputStream, EasyDroid.BOUNCY_CASTLE_KEYSTORE_PASSWORD.toCharArray());
} finally {
inputStream.close();
}
return new SSLSocketFactory(trusted);
} catch (Exception e) {
throw new AssertionError(e);
}
}
}