From 7f867a6185b3b471c90c1f4b5112eb648bc3baa0 Mon Sep 17 00:00:00 2001 From: Alan Evans Date: Wed, 12 Feb 2020 17:30:51 -0400 Subject: [PATCH] Remove KBS restore after set check. --- .../securesms/lock/RegistrationLockDialog.java | 16 +++++----------- .../lock/v2/ConfirmKbsPinRepository.java | 13 +++---------- .../RegistrationPinV2MigrationJob.java | 10 +--------- .../signalservice/api/KeyBackupService.java | 11 ----------- 4 files changed, 9 insertions(+), 41 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/lock/RegistrationLockDialog.java b/app/src/main/java/org/thoughtcrime/securesms/lock/RegistrationLockDialog.java index eca62cffb..13827da44 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/lock/RegistrationLockDialog.java +++ b/app/src/main/java/org/thoughtcrime/securesms/lock/RegistrationLockDialog.java @@ -209,7 +209,7 @@ public final class RegistrationLockDialog { @Override protected Boolean doInBackground(Void... voids) { try { - Log.i(TAG, "Setting pin on KBS"); + Log.i(TAG, "Setting pin on KBS - dialog"); KbsValues kbsValues = SignalStore.kbsValues(); MasterKey masterKey = kbsValues.getOrCreateMasterKey(); @@ -217,21 +217,15 @@ public final class RegistrationLockDialog { KeyBackupService.PinChangeSession pinChangeSession = keyBackupService.newPinChangeSession(); HashedPin hashedPin = PinHashing.hashPin(pinValue, pinChangeSession); RegistrationLockData kbsData = pinChangeSession.setPin(hashedPin, masterKey); - RegistrationLockData restoredData = keyBackupService.newRestoreSession(kbsData.getTokenResponse()) - .restorePin(hashedPin); - if (!restoredData.getMasterKey().equals(masterKey)) { - throw new AssertionError("Failed to set the pin correctly"); - } else { - Log.i(TAG, "Set and retrieved pin on KBS successfully"); - } - - kbsValues.setRegistrationLockMasterKey(restoredData, PinHashing.localPinHash(pinValue)); + kbsValues.setRegistrationLockMasterKey(kbsData, PinHashing.localPinHash(pinValue)); TextSecurePreferences.clearOldRegistrationLockPin(context); TextSecurePreferences.setRegistrationLockLastReminderTime(context, System.currentTimeMillis()); TextSecurePreferences.setRegistrationLockNextReminderInterval(context, RegistrationLockReminders.INITIAL_INTERVAL); + + Log.i(TAG, "Pin set on KBS"); return true; - } catch (IOException | UnauthenticatedResponseException | KeyBackupServicePinException | KeyBackupSystemNoDataException e) { + } catch (IOException | UnauthenticatedResponseException e) { Log.w(TAG, e); return false; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/lock/v2/ConfirmKbsPinRepository.java b/app/src/main/java/org/thoughtcrime/securesms/lock/v2/ConfirmKbsPinRepository.java index 2e9168df6..433231bd1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/lock/v2/ConfirmKbsPinRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/lock/v2/ConfirmKbsPinRepository.java @@ -43,24 +43,17 @@ final class ConfirmKbsPinRepository { KeyBackupService.PinChangeSession pinChangeSession = keyBackupService.newPinChangeSession(); HashedPin hashedPin = PinHashing.hashPin(pinValue, pinChangeSession); RegistrationLockData kbsData = pinChangeSession.setPin(hashedPin, masterKey); - RegistrationLockData restoredData = keyBackupService.newRestoreSession(kbsData.getTokenResponse()) - .restorePin(hashedPin); - if (!restoredData.getMasterKey().equals(masterKey)) { - throw new AssertionError("Failed to set the pin correctly"); - } else { - Log.i(TAG, "Set and retrieved pin on KBS successfully"); - } - - kbsValues.setRegistrationLockMasterKey(restoredData, PinHashing.localPinHash(pinValue)); + kbsValues.setRegistrationLockMasterKey(kbsData, PinHashing.localPinHash(pinValue)); TextSecurePreferences.clearOldRegistrationLockPin(context); TextSecurePreferences.setRegistrationLockLastReminderTime(context, System.currentTimeMillis()); TextSecurePreferences.setRegistrationLockNextReminderInterval(context, RegistrationLockReminders.INITIAL_INTERVAL); SignalStore.kbsValues().setKeyboardType(keyboard); ApplicationDependencies.getMegaphoneRepository().markFinished(Megaphones.Event.PINS_FOR_ALL); + Log.i(TAG, "Pin set on KBS"); return PinSetResult.SUCCESS; - } catch (IOException | UnauthenticatedResponseException | KeyBackupServicePinException | KeyBackupSystemNoDataException e) { + } catch (IOException | UnauthenticatedResponseException e) { Log.w(TAG, e); return PinSetResult.FAILURE; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/migrations/RegistrationPinV2MigrationJob.java b/app/src/main/java/org/thoughtcrime/securesms/migrations/RegistrationPinV2MigrationJob.java index ca72416e3..e6b6ff994 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/RegistrationPinV2MigrationJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/RegistrationPinV2MigrationJob.java @@ -78,16 +78,8 @@ public final class RegistrationPinV2MigrationJob extends BaseJob { KeyBackupService.PinChangeSession pinChangeSession = keyBackupService.newPinChangeSession(); HashedPin hashedPin = PinHashing.hashPin(pinValue, pinChangeSession); RegistrationLockData kbsData = pinChangeSession.setPin(hashedPin, masterKey); - RegistrationLockData restoredData = keyBackupService.newRestoreSession(kbsData.getTokenResponse()) - .restorePin(hashedPin); - if (!restoredData.getMasterKey().equals(masterKey)) { - throw new RuntimeException("Failed to migrate the pin correctly"); - } else { - Log.i(TAG, "Set and retrieved pin on KBS successfully"); - } - - kbsValues.setRegistrationLockMasterKey(restoredData, PinHashing.localPinHash(pinValue)); + kbsValues.setRegistrationLockMasterKey(kbsData, PinHashing.localPinHash(pinValue)); TextSecurePreferences.clearOldRegistrationLockPin(context); Log.i(TAG, "Pin migrated to Key Backup Service"); diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/KeyBackupService.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/KeyBackupService.java index a3366f712..0187c2aa5 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/KeyBackupService.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/KeyBackupService.java @@ -17,7 +17,6 @@ import org.whispersystems.signalservice.internal.keybackup.protos.BackupResponse import org.whispersystems.signalservice.internal.keybackup.protos.RestoreResponse; import org.whispersystems.signalservice.internal.push.PushServiceSocket; import org.whispersystems.signalservice.internal.push.RemoteAttestationUtil; -import org.whispersystems.signalservice.internal.storage.protos.SignalStorage; import org.whispersystems.signalservice.internal.util.Hex; import org.whispersystems.signalservice.internal.util.Util; @@ -69,16 +68,6 @@ public final class KeyBackupService { return newSession(pushServiceSocket.getKeyBackupServiceAuthorization(), currentToken); } - /** - * Use this to validate that the pin is still set on the server with the current token. - * Additionally this validates that no one has used any tries. - */ - public RestoreSession newRestoreSession(TokenResponse currentToken) - throws IOException - { - return newSession(pushServiceSocket.getKeyBackupServiceAuthorization(), currentToken); - } - /** * Only call before registration, to see how many tries are left. *