mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-16 20:59:54 +01:00
Restore account method for account manager
This commit is contained in:
@@ -2,6 +2,7 @@ package org.briarproject.bramble.api.account;
|
|||||||
|
|
||||||
import org.briarproject.bramble.api.crypto.DecryptionException;
|
import org.briarproject.bramble.api.crypto.DecryptionException;
|
||||||
import org.briarproject.bramble.api.crypto.SecretKey;
|
import org.briarproject.bramble.api.crypto.SecretKey;
|
||||||
|
import org.briarproject.bramble.api.identity.Identity;
|
||||||
import org.briarproject.bramble.api.identity.IdentityManager;
|
import org.briarproject.bramble.api.identity.IdentityManager;
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
|
|
||||||
@@ -43,6 +44,17 @@ public interface AccountManager {
|
|||||||
*/
|
*/
|
||||||
boolean createAccount(String name, String password);
|
boolean createAccount(String name, String password);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Restores a given identity by registering it with the
|
||||||
|
* {@link IdentityManager}. Creates a database key, encrypts it with the
|
||||||
|
* given password and stores it on disk. {@link #accountExists()} will
|
||||||
|
* return true after this method returns true.
|
||||||
|
* @param identity
|
||||||
|
* @param password
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
boolean restoreAccount(Identity identity, String password);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes all account state from disk. {@link #accountExists()} will
|
* Deletes all account state from disk. {@link #accountExists()} will
|
||||||
* return false after this method returns.
|
* return false after this method returns.
|
||||||
|
|||||||
@@ -176,6 +176,18 @@ class AccountManagerImpl implements AccountManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean restoreAccount(Identity identity, String password) {
|
||||||
|
synchronized (stateChangeLock) {
|
||||||
|
if (hasDatabaseKey())
|
||||||
|
throw new AssertionError("Already have a database key");
|
||||||
|
identityManager.registerIdentity(identity);
|
||||||
|
SecretKey key = crypto.generateSecretKey();
|
||||||
|
if (!encryptAndStoreDatabaseKey(key, password)) return false;
|
||||||
|
databaseKey = key;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@GuardedBy("stateChangeLock")
|
@GuardedBy("stateChangeLock")
|
||||||
private boolean encryptAndStoreDatabaseKey(SecretKey key, String password) {
|
private boolean encryptAndStoreDatabaseKey(SecretKey key, String password) {
|
||||||
byte[] plaintext = key.getBytes();
|
byte[] plaintext = key.getBytes();
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
package org.briarproject.briar.android.socialbackup.recover;
|
||||||
|
|
||||||
|
public class RestoreAccountActivity {
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
package org.briarproject.briar.android.socialbackup.recover;
|
||||||
|
|
||||||
|
public class RestoreAccountViewModel {
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user