diff --git a/bramble-android/src/main/java/org/briarproject/bramble/account/AndroidAccountManager.java b/bramble-android/src/main/java/org/briarproject/bramble/account/AndroidAccountManager.java index 22c279ecaae41d9199928d4d8a75fa7a7639e7ad..e19f2305f25f5a31eebc9f77e37c77e1643ae11a 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/account/AndroidAccountManager.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/account/AndroidAccountManager.java @@ -35,15 +35,14 @@ class AndroidAccountManager extends AccountManagerImpl appContext = app.getApplicationContext(); } + // Locking: stateChangeLock @Override @Nullable protected String loadEncryptedDatabaseKey() { - synchronized (stateChangeLock) { - String key = getDatabaseKeyFromPreferences(); - if (key == null) key = super.loadEncryptedDatabaseKey(); - else migrateDatabaseKeyToFile(key); - return key; - } + String key = getDatabaseKeyFromPreferences(); + if (key == null) key = super.loadEncryptedDatabaseKey(); + else migrateDatabaseKeyToFile(key); + return key; } // Locking: stateChangeLock diff --git a/bramble-core/src/main/java/org/briarproject/bramble/account/AccountManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/account/AccountManagerImpl.java index 6162b3e42765189573ca222be25af18e2e509206..47ddd87f656e8e3ba7fca762b68ad6defb6d57b8 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/account/AccountManagerImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/account/AccountManagerImpl.java @@ -38,7 +38,7 @@ class AccountManagerImpl implements AccountManager { private final CryptoComponent crypto; private final File dbKeyFile, dbKeyBackupFile; - protected final Object stateChangeLock = new Object(); + final Object stateChangeLock = new Object(); @Nullable private volatile SecretKey databaseKey = null; @@ -63,20 +63,19 @@ class AccountManagerImpl implements AccountManager { return databaseKey; } + // Locking: stateChangeLock @Nullable protected String loadEncryptedDatabaseKey() { - synchronized (stateChangeLock) { - String key = readDbKeyFromFile(dbKeyFile); - if (key == null) { - LOG.info("No database key in primary file"); - key = readDbKeyFromFile(dbKeyBackupFile); - if (key == null) LOG.info("No database key in backup file"); - else LOG.warning("Found database key in backup file"); - } else { - LOG.info("Found database key in primary file"); - } - return key; + String key = readDbKeyFromFile(dbKeyFile); + if (key == null) { + LOG.info("No database key in primary file"); + key = readDbKeyFromFile(dbKeyBackupFile); + if (key == null) LOG.info("No database key in backup file"); + else LOG.warning("Found database key in backup file"); + } else { + LOG.info("Found database key in primary file"); } + return key; } // Locking: stateChangeLock diff --git a/bramble-core/src/test/java/org/briarproject/bramble/account/AccountManagerImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/account/AccountManagerImplTest.java index e0a51898df42990e6d2163491a8761a611f0b884..6e43e23f8f09d2da85333a4f6c154a2bcf88471d 100644 --- a/bramble-core/src/test/java/org/briarproject/bramble/account/AccountManagerImplTest.java +++ b/bramble-core/src/test/java/org/briarproject/bramble/account/AccountManagerImplTest.java @@ -63,7 +63,8 @@ public class AccountManagerImplTest extends BrambleMockTestCase { assertFalse(keyBackupFile.exists()); assertEquals(encryptedKeyHex, loadDatabaseKey(keyFile)); - assertEquals(encryptedKeyHex, accountManager.loadEncryptedDatabaseKey()); + assertEquals(encryptedKeyHex, + accountManager.loadEncryptedDatabaseKey()); assertTrue(keyFile.exists()); assertFalse(keyBackupFile.exists()); @@ -81,7 +82,8 @@ public class AccountManagerImplTest extends BrambleMockTestCase { assertTrue(keyBackupFile.exists()); assertEquals(encryptedKeyHex, loadDatabaseKey(keyBackupFile)); - assertEquals(encryptedKeyHex, accountManager.loadEncryptedDatabaseKey()); + assertEquals(encryptedKeyHex, + accountManager.loadEncryptedDatabaseKey()); assertFalse(keyFile.exists()); assertTrue(keyBackupFile.exists());