diff --git a/briar-android/src/main/java/org/briarproject/briar/android/activity/ActivityModule.java b/briar-android/src/main/java/org/briarproject/briar/android/activity/ActivityModule.java index 2651833f194b065326a5e063c17e2f0bc3ac2285..b21d072321464b72d3e20d4123f46b12235651d3 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/activity/ActivityModule.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/activity/ActivityModule.java @@ -4,8 +4,6 @@ import android.app.Activity; import org.briarproject.briar.android.controller.BriarController; import org.briarproject.briar.android.controller.BriarControllerImpl; -import org.briarproject.briar.android.controller.ConfigController; -import org.briarproject.briar.android.controller.ConfigControllerImpl; import org.briarproject.briar.android.controller.DbController; import org.briarproject.briar.android.controller.DbControllerImpl; import org.briarproject.briar.android.login.PasswordController; @@ -48,13 +46,6 @@ public class ActivityModule { return setupController; } - @ActivityScope - @Provides - ConfigController provideConfigController( - ConfigControllerImpl configController) { - return configController; - } - @ActivityScope @Provides PasswordController providePasswordController( diff --git a/briar-android/src/main/java/org/briarproject/briar/android/controller/ConfigController.java b/briar-android/src/main/java/org/briarproject/briar/android/controller/ConfigController.java deleted file mode 100644 index decc39a035ad4c2e16a5bb1671a8784538a74c21..0000000000000000000000000000000000000000 --- a/briar-android/src/main/java/org/briarproject/briar/android/controller/ConfigController.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.briarproject.briar.android.controller; - -import org.briarproject.bramble.api.nullsafety.NotNullByDefault; - -import javax.annotation.Nullable; - -@NotNullByDefault -public interface ConfigController { - - @Nullable - String getEncryptedDatabaseKey(); - - boolean storeEncryptedDatabaseKey(String hex); - - void deleteAccount(); - - boolean accountExists(); - - boolean accountSignedIn(); - -} diff --git a/briar-android/src/main/java/org/briarproject/briar/android/controller/ConfigControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/controller/ConfigControllerImpl.java deleted file mode 100644 index bd76c558c6ba4439c787ed7f00f5afd3b6ccce1c..0000000000000000000000000000000000000000 --- a/briar-android/src/main/java/org/briarproject/briar/android/controller/ConfigControllerImpl.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.briarproject.briar.android.controller; - -import android.util.Log; - -import org.briarproject.bramble.api.account.AccountManager; -import org.briarproject.bramble.api.nullsafety.NotNullByDefault; - -import javax.annotation.Nullable; -import javax.inject.Inject; - -// TODO: Remove this class, which just delegates to AccountManager - -@NotNullByDefault -public class ConfigControllerImpl implements ConfigController { - - protected final AccountManager accountManager; - - @Inject - public ConfigControllerImpl(AccountManager accountManager) { - // TODO: Remove - Log.i(getClass().getName(), "Using account manager " - + accountManager.getClass().getName()); - this.accountManager = accountManager; - } - - @Override - @Nullable - public String getEncryptedDatabaseKey() { - return accountManager.getEncryptedDatabaseKey(); - } - - @Override - public boolean storeEncryptedDatabaseKey(String hex) { - return accountManager.storeEncryptedDatabaseKey(hex); - } - - @Override - public void deleteAccount() { - accountManager.deleteAccount(); - } - - @Override - public boolean accountExists() { - return accountManager.hasDatabaseKey(); - } - - @Override - public boolean accountSignedIn() { - return accountManager.hasDatabaseKey(); - } -} diff --git a/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordActivity.java index 6de30bf7fc34e2798a0c31443a574dd3e362d116..537d00d08edc2b3ff10a88ee1b7fc57a42351a6a 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordActivity.java @@ -12,6 +12,7 @@ import android.widget.Button; import android.widget.EditText; import android.widget.ProgressBar; +import org.briarproject.bramble.api.account.AccountManager; import org.briarproject.briar.R; import org.briarproject.briar.android.Localizer; import org.briarproject.briar.android.activity.ActivityComponent; @@ -31,6 +32,9 @@ import static android.view.View.VISIBLE; public class PasswordActivity extends BaseActivity { + @Inject + AccountManager accountManager; + @Inject PasswordController passwordController; @@ -48,7 +52,7 @@ public class PasswordActivity extends BaseActivity { // fade-in after splash screen instead of default animation overridePendingTransition(R.anim.fade_in, R.anim.fade_out); - if (!passwordController.accountExists()) { + if (!accountManager.accountExists()) { deleteAccount(); return; } @@ -105,7 +109,7 @@ public class PasswordActivity extends BaseActivity { } private void deleteAccount() { - passwordController.deleteAccount(); + accountManager.deleteAccount(); Localizer.reinitialize(); UiUtils.setTheme(this, getString(R.string.pref_theme_light_value)); setResult(RESULT_CANCELED); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordController.java b/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordController.java index ec3cb7ed7ff0dc198b3c295ee2bec54e282533b9..6ad1d26b51b2b919d696853c5401a43f28dfe763 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordController.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordController.java @@ -1,11 +1,10 @@ package org.briarproject.briar.android.login; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; -import org.briarproject.briar.android.controller.ConfigController; import org.briarproject.briar.android.controller.handler.ResultHandler; @NotNullByDefault -public interface PasswordController extends ConfigController { +public interface PasswordController { float estimatePasswordStrength(String password); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordControllerImpl.java index 23f47945051d6542c116e1f84fff0710cd48ea7f..53cc1b3bd7e1d41c9915ef18430ca07a1f384224 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordControllerImpl.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordControllerImpl.java @@ -7,7 +7,6 @@ import org.briarproject.bramble.api.crypto.PasswordStrengthEstimator; import org.briarproject.bramble.api.crypto.SecretKey; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.util.StringUtils; -import org.briarproject.briar.android.controller.ConfigControllerImpl; import org.briarproject.briar.android.controller.handler.ResultHandler; import java.util.concurrent.Executor; @@ -19,12 +18,12 @@ import static org.briarproject.bramble.util.LogUtils.logDuration; import static org.briarproject.bramble.util.LogUtils.now; @NotNullByDefault -public class PasswordControllerImpl extends ConfigControllerImpl - implements PasswordController { +public class PasswordControllerImpl implements PasswordController { private static final Logger LOG = Logger.getLogger(PasswordControllerImpl.class.getName()); + protected final AccountManager accountManager; protected final Executor cryptoExecutor; protected final CryptoComponent crypto; private final PasswordStrengthEstimator strengthEstimator; @@ -33,7 +32,7 @@ public class PasswordControllerImpl extends ConfigControllerImpl PasswordControllerImpl(AccountManager accountManager, @CryptoExecutor Executor cryptoExecutor, CryptoComponent crypto, PasswordStrengthEstimator strengthEstimator) { - super(accountManager); + this.accountManager = accountManager; this.cryptoExecutor = cryptoExecutor; this.crypto = crypto; this.strengthEstimator = strengthEstimator; @@ -70,13 +69,14 @@ public class PasswordControllerImpl extends ConfigControllerImpl } else { String hex = encryptDatabaseKey(new SecretKey(key), newPassword); - resultHandler.onResult(storeEncryptedDatabaseKey(hex)); + boolean stored = accountManager.storeEncryptedDatabaseKey(hex); + resultHandler.onResult(stored); } }); } private byte[] getEncryptedKey() { - String hex = getEncryptedDatabaseKey(); + String hex = accountManager.getEncryptedDatabaseKey(); if (hex == null) throw new IllegalStateException("Encrypted database key is null"); return StringUtils.fromHexString(hex); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/login/SetupActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/login/SetupActivity.java index f91c57512f1c02e9a53d591d17f7dbdfbc68154e..e38cfeb0c9e2acda08155cc9be2be824f19dd768 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/login/SetupActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/login/SetupActivity.java @@ -4,6 +4,7 @@ import android.annotation.TargetApi; import android.content.Intent; import android.os.Bundle; +import org.briarproject.bramble.api.account.AccountManager; import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.briar.R; @@ -25,6 +26,9 @@ public class SetupActivity extends BaseActivity private static final String STATE_KEY_AUTHOR_NAME = "authorName"; private static final String STATE_KEY_PASSWORD = "password"; + @Inject + AccountManager accountManager; + @Inject SetupController setupController; @@ -39,8 +43,7 @@ public class SetupActivity extends BaseActivity setContentView(R.layout.activity_fragment_container); if (state == null) { - if (setupController.accountExists()) - throw new AssertionError(); + if (accountManager.accountExists()) throw new AssertionError(); showInitialFragment(AuthorNameFragment.newInstance()); } else { authorName = state.getString(STATE_KEY_AUTHOR_NAME); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/login/SetupControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/login/SetupControllerImpl.java index c4ce4ae2c964f37466ed1a09a5faac6c123c74c2..a29d2bc76cd3dd86f575232194bb1f600a7be032 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/login/SetupControllerImpl.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/login/SetupControllerImpl.java @@ -110,7 +110,7 @@ public class SetupControllerImpl extends PasswordControllerImpl identityManager.registerLocalAuthor(localAuthor); SecretKey key = crypto.generateSecretKey(); String hex = encryptDatabaseKey(key, password); - storeEncryptedDatabaseKey(hex); + accountManager.storeEncryptedDatabaseKey(hex); accountManager.setDatabaseKey(key); resultHandler.onResult(null); }); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/panic/PanicResponderActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/panic/PanicResponderActivity.java index fb2cd920ff2b874bb8db4798ef0e6732eebb59ef..9d64d15000e00ef02b7cbfb4e4b1d6f10200e723 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/panic/PanicResponderActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/panic/PanicResponderActivity.java @@ -7,10 +7,10 @@ import android.os.Build; import android.os.Bundle; import android.support.v7.preference.PreferenceManager; +import org.briarproject.bramble.api.account.AccountManager; import org.briarproject.bramble.api.system.AndroidExecutor; import org.briarproject.briar.android.activity.ActivityComponent; import org.briarproject.briar.android.activity.BriarActivity; -import org.briarproject.briar.android.controller.ConfigController; import org.iilab.IilabEngineeringRSA2048Pin; import java.util.logging.Logger; @@ -33,7 +33,7 @@ public class PanicResponderActivity extends BriarActivity { Logger.getLogger(PanicResponderActivity.class.getName()); @Inject - protected ConfigController configController; + protected AccountManager accountManager; @Inject protected AndroidExecutor androidExecutor; @@ -94,7 +94,7 @@ public class PanicResponderActivity extends BriarActivity { private void deleteAllData() { androidExecutor.runOnBackgroundThread(() -> { - configController.deleteAccount(); + accountManager.deleteAccount(); // TODO somehow delete/shred the database more thoroughly PanicResponder.deleteAllAppData(PanicResponderActivity.this); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/splash/SplashScreenActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/splash/SplashScreenActivity.java index 8f3dd28828ca4330a2b69a1c34c3b879fa4a9613..e878d2376278c4ce83352f55bb9ef07301505d25 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/splash/SplashScreenActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/splash/SplashScreenActivity.java @@ -7,11 +7,11 @@ import android.os.Handler; import android.support.v7.preference.PreferenceManager; import android.transition.Fade; +import org.briarproject.bramble.api.account.AccountManager; import org.briarproject.bramble.api.system.AndroidExecutor; import org.briarproject.briar.R; import org.briarproject.briar.android.activity.ActivityComponent; import org.briarproject.briar.android.activity.BaseActivity; -import org.briarproject.briar.android.controller.ConfigController; import org.briarproject.briar.android.login.OpenDatabaseActivity; import org.briarproject.briar.android.login.SetupActivity; @@ -27,7 +27,7 @@ public class SplashScreenActivity extends BaseActivity { Logger.getLogger(SplashScreenActivity.class.getName()); @Inject - protected ConfigController configController; + protected AccountManager accountManager; @Inject protected AndroidExecutor androidExecutor; @@ -43,7 +43,7 @@ public class SplashScreenActivity extends BaseActivity { setContentView(R.layout.splash); - if (configController.accountSignedIn()) { + if (accountManager.hasDatabaseKey()) { startActivity(new Intent(this, OpenDatabaseActivity.class)); finish(); } else { @@ -64,12 +64,12 @@ public class SplashScreenActivity extends BaseActivity { LOG.info("Expired"); startActivity(new Intent(this, ExpiredActivity.class)); } else { - if (configController.accountExists()) { + if (accountManager.accountExists()) { LOG.info("Account exists"); startActivity(new Intent(this, OpenDatabaseActivity.class)); } else { LOG.info("Account does not exist"); - configController.deleteAccount(); + accountManager.deleteAccount(); startActivity(new Intent(this, SetupActivity.class)); } }