diff options
| -rw-r--r-- | res/layout/client_dashboard.xml | 2 | ||||
| -rw-r--r-- | res/layout/configuration_wizard_activity.xml | 4 | ||||
| -rw-r--r-- | src/se/leap/bitmaskclient/ConfigHelper.java | 1 | ||||
| -rw-r--r-- | src/se/leap/bitmaskclient/Dashboard.java | 24 | ||||
| -rw-r--r-- | src/se/leap/bitmaskclient/ProviderAPI.java | 38 | 
5 files changed, 55 insertions, 14 deletions
diff --git a/res/layout/client_dashboard.xml b/res/layout/client_dashboard.xml index 21008b45..2c9b0528 100644 --- a/res/layout/client_dashboard.xml +++ b/res/layout/client_dashboard.xml @@ -72,7 +72,7 @@              style="?android:attr/progressBarStyleHorizontal"              android:layout_width="fill_parent"              android:layout_height="wrap_content" -            android:gravity="center" +            android:max="4"              android:visibility="gone" />      </LinearLayout> diff --git a/res/layout/configuration_wizard_activity.xml b/res/layout/configuration_wizard_activity.xml index ac994c59..cecdbb57 100644 --- a/res/layout/configuration_wizard_activity.xml +++ b/res/layout/configuration_wizard_activity.xml @@ -10,11 +10,7 @@          style="?android:attr/progressBarStyleHorizontal"          android:layout_width="fill_parent"          android:layout_height="wrap_content" -        android:background="@android:color/transparent"          android:max="3" -        android:maxHeight="10dip" -        android:minHeight="10dip" -        android:progress="0"          android:progressDrawable="@android:drawable/progress_horizontal" />  </RelativeLayout>
\ No newline at end of file diff --git a/src/se/leap/bitmaskclient/ConfigHelper.java b/src/se/leap/bitmaskclient/ConfigHelper.java index 97a62bb2..a29ff301 100644 --- a/src/se/leap/bitmaskclient/ConfigHelper.java +++ b/src/se/leap/bitmaskclient/ConfigHelper.java @@ -50,6 +50,7 @@ public class ConfigHelper {      public static SharedPreferences shared_preferences;      private static KeyStore keystore_trusted; +      final public static String NG_1024 =      		"eeaf0ab9adb38dd69c33f80afa8fc5e86072618775ff3c0b9ea2314c9c256576d674df7496ea81d3383b4813d692c6e0e0d5d8e250b98be48e495c1d6089dad15dc7d7b46154d6b6ce8ef4ad69b15d4982559b297bcf1885c529f566660e57ec68edbc3c05726cc02fd4cbf4976eaa9afd5138fe8376435b9fc61d2fc0eb06e3";      final public static BigInteger G = new BigInteger("2"); diff --git a/src/se/leap/bitmaskclient/Dashboard.java b/src/se/leap/bitmaskclient/Dashboard.java index 7b47c667..0e6cb657 100644 --- a/src/se/leap/bitmaskclient/Dashboard.java +++ b/src/se/leap/bitmaskclient/Dashboard.java @@ -31,9 +31,11 @@ import android.app.Fragment;  import android.app.FragmentManager;  import android.app.FragmentTransaction;  import android.app.ProgressDialog; +import android.content.BroadcastReceiver;  import android.content.Context;  import android.content.DialogInterface;  import android.content.Intent; +import android.content.IntentFilter;  import android.content.SharedPreferences;  import android.os.Bundle;  import android.os.Handler; @@ -66,6 +68,7 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf  	private ProgressDialog mProgressDialog;  	private ProgressBar mProgressBar; +	private ProviderAPIBroadcastReceiver_Update providerAPI_broadcast_receiver_update;  	private static Context app;  	private static SharedPreferences preferences;  	private static Provider provider; @@ -85,6 +88,11 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf  		PRNGFixes.apply();  	    mProgressBar = (ProgressBar) findViewById(R.id.progressbar_dashboard); +	    providerAPI_broadcast_receiver_update = new ProviderAPIBroadcastReceiver_Update(); +	    IntentFilter update_intent_filter = new IntentFilter(ProviderAPI.UPDATE_ACTION); +	    update_intent_filter.addCategory(Intent.CATEGORY_DEFAULT); +	    registerReceiver(providerAPI_broadcast_receiver_update, update_intent_filter); +	      		ConfigHelper.setSharedPreferences(getSharedPreferences(SHARED_PREFERENCES, MODE_PRIVATE));  		preferences = ConfigHelper.shared_preferences; @@ -94,6 +102,12 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf  		else  			buildDashboard();  	} + +	@Override +	protected void onDestroy() { +		super.onDestroy(); +		unregisterReceiver(providerAPI_broadcast_receiver_update); +	}  	@Override  	protected void onActivityResult(int requestCode, int resultCode, Intent data){ @@ -375,5 +389,13 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf  	public static Context getAppContext() {  		return app;  	} -	 + +	public class ProviderAPIBroadcastReceiver_Update extends BroadcastReceiver { + +		@Override +		public void onReceive(Context context, Intent intent) { +			int update = intent.getIntExtra(ProviderAPI.UPDATE_DATA, 0); +			mProgressBar.setProgress(update); +		} +	}  } diff --git a/src/se/leap/bitmaskclient/ProviderAPI.java b/src/se/leap/bitmaskclient/ProviderAPI.java index e56c6ca9..cb2db6bf 100644 --- a/src/se/leap/bitmaskclient/ProviderAPI.java +++ b/src/se/leap/bitmaskclient/ProviderAPI.java @@ -97,7 +97,9 @@ public class ProviderAPI extends IntentService {      RECEIVER_KEY = "receiver",      SESSION_ID_COOKIE_KEY = "session_id_cookie_key",      SESSION_ID_KEY = "session_id", -    ERRORS = "errors" +    ERRORS = "errors", +    UPDATE_ACTION = "update_action", +    UPDATE_DATA = "update data"      ;      final public static int @@ -245,35 +247,42 @@ public class ProviderAPI extends IntentService {  	 */  	private Bundle authenticateBySRP(Bundle task) {  		Bundle session_id_bundle = new Bundle(); +		int progress = 0;  		String username = (String) task.get(LogInDialog.USERNAME);  		String password = (String) task.get(LogInDialog.PASSWORD);  		if(validUserLoginData(username, password)) { +		  			String authentication_server = (String) task.get(Provider.API_URL);  			SRPParameters params = new SRPParameters(new BigInteger(ConfigHelper.NG_1024, 16).toByteArray(), ConfigHelper.G.toByteArray(), BigInteger.ZERO.toByteArray(), "SHA-256");  			LeapSRPSession client = new LeapSRPSession(username, password, params);  			byte[] A = client.exponential(); +			broadcast_progress(progress++);  			try {  				JSONObject saltAndB = sendAToSRPServer(authentication_server, username, new BigInteger(1, A).toString(16));  				if(saltAndB.length() > 0) {  					String salt = saltAndB.getString(LeapSRPSession.SALT); +					broadcast_progress(progress++);  					byte[] Bbytes = new BigInteger(saltAndB.getString("B"), 16).toByteArray();  					byte[] M1 = client.response(new BigInteger(salt, 16).toByteArray(), Bbytes);  					if(M1 != null) { +					broadcast_progress(progress++);  					JSONObject session_idAndM2 = sendM1ToSRPServer(authentication_server, username, M1); -					if(session_idAndM2.has(LeapSRPSession.M2) && client.verify((byte[])session_idAndM2.get(LeapSRPSession.M2))) { -						session_id_bundle.putBoolean(RESULT_KEY, true); -					} else { -						session_id_bundle.putBoolean(RESULT_KEY, false); -						session_id_bundle.putString(getResources().getString(R.string.user_message), getResources().getString(R.string.error_bad_user_password_user_message)); -						session_id_bundle.putString(LogInDialog.USERNAME, username); -					} +					  if(session_idAndM2.has(LeapSRPSession.M2) && client.verify((byte[])session_idAndM2.get(LeapSRPSession.M2))) { +						  session_id_bundle.putBoolean(RESULT_KEY, true); +						  broadcast_progress(progress++); +					  } else { +						  session_id_bundle.putBoolean(RESULT_KEY, false); +						  session_id_bundle.putString(getResources().getString(R.string.user_message), getResources().getString(R.string.error_bad_user_password_user_message)); +						  session_id_bundle.putString(LogInDialog.USERNAME, username); +					  }  					} else {  						session_id_bundle.putBoolean(RESULT_KEY, false);  						session_id_bundle.putString(LogInDialog.USERNAME, username);  						session_id_bundle.putString(getResources().getString(R.string.user_message), getResources().getString(R.string.error_srp_math_error_user_message));  					} +					broadcast_progress(progress++);  				} else {  					session_id_bundle.putString(getResources().getString(R.string.user_message), getResources().getString(R.string.error_bad_user_password_user_message));  					session_id_bundle.putString(LogInDialog.USERNAME, username); @@ -319,6 +328,19 @@ public class ProviderAPI extends IntentService {  		return session_id_bundle;  	} +	 +	/** +	 * Sets up an intent with the progress value passed as a parameter +	 * and sends it as a broadcast. +	 * @param progress +	 */ +	private void broadcast_progress(int progress) { +		Intent intentUpdate = new Intent(); +		intentUpdate.setAction(UPDATE_ACTION); +		intentUpdate.addCategory(Intent.CATEGORY_DEFAULT); +		intentUpdate.putExtra(UPDATE_DATA, progress); +		sendBroadcast(intentUpdate); +	}  	/**  	 * Validates parameters entered by the user to log in  | 
