Preserve backupCredentialRequest across rereg
This commit is contained in:
parent
6fcb2ab5dd
commit
075a08884b
|
@ -304,6 +304,11 @@ public class Accounts extends AbstractDynamoDbStore {
|
|||
|
||||
accountToCreate.setVersion(existingAccount.getVersion());
|
||||
|
||||
// Carry over the old backup id commitment. If the new account claimer cannot does not have the secret used to
|
||||
// generate their backup-id, this credential is useless, however if they can produce the same credential they
|
||||
// won't be rate-limited for setting their backup-id.
|
||||
accountToCreate.setBackupCredentialRequest(existingAccount.getBackupCredentialRequest());
|
||||
|
||||
final List<TransactWriteItem> writeItems = new ArrayList<>();
|
||||
|
||||
// If we're reclaiming an account that already has a username, we'd like to give the re-registering client
|
||||
|
|
|
@ -416,6 +416,23 @@ class AccountsTest {
|
|||
Collections.emptyList()).toCompletableFuture().join());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testReclaimAccountPreservesBcr() {
|
||||
final String e164 = "+14151112222";
|
||||
final UUID existingUuid = UUID.randomUUID();
|
||||
final Account existingAccount =
|
||||
generateAccount(e164, existingUuid, UUID.randomUUID(), List.of(generateDevice(DEVICE_ID_1)));
|
||||
existingAccount.setBackupCredentialRequest(TestRandomUtil.nextBytes(32));
|
||||
createAccount(existingAccount);
|
||||
final Account secondAccount =
|
||||
generateAccount(e164, UUID.randomUUID(), UUID.randomUUID(), List.of(generateDevice(DEVICE_ID_1)));
|
||||
|
||||
reclaimAccount(secondAccount);
|
||||
|
||||
final Account reclaimed = accounts.getByAccountIdentifier(existingUuid).get();
|
||||
assertThat(reclaimed.getBackupCredentialRequest()).isEqualTo(existingAccount.getBackupCredentialRequest());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testReclaimAccount() {
|
||||
final String e164 = "+14151112222";
|
||||
|
|
Loading…
Reference in New Issue