From ed0c4b8de53a5832066424e616a2295472537cc9 Mon Sep 17 00:00:00 2001 From: Alan Evans Date: Fri, 31 Jan 2020 13:01:18 -0500 Subject: [PATCH] Remove KBS feature flag. --- .../lock/RegistrationLockDialog.java | 43 ++++++++----------- .../RegistrationPinV2MigrationJob.java | 6 --- .../service/CodeVerificationRequest.java | 7 +-- .../securesms/util/FeatureFlags.java | 13 +----- .../securesms/util/TextSecurePreferences.java | 10 +---- .../api/SignalServiceAccountManager.java | 8 ---- .../internal/push/PushServiceSocket.java | 5 --- 7 files changed, 23 insertions(+), 69 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 7bcce494f..662133f27 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/lock/RegistrationLockDialog.java +++ b/app/src/main/java/org/thoughtcrime/securesms/lock/RegistrationLockDialog.java @@ -212,10 +212,8 @@ public final class RegistrationLockDialog { dialog.dismiss(); RegistrationLockReminders.scheduleReminder(context, true); - if (FeatureFlags.kbs()) { - Log.i(TAG, "Pin V1 successfully remembered, scheduling a migration to V2"); - ApplicationDependencies.getJobManager().add(new RegistrationPinV2MigrationJob()); - } + Log.i(TAG, "Pin V1 successfully remembered, scheduling a migration to V2"); + ApplicationDependencies.getJobManager().add(new RegistrationPinV2MigrationJob()); } }); } @@ -285,32 +283,25 @@ public final class RegistrationLockDialog { @Override protected Boolean doInBackground(Void... voids) { try { - if (FeatureFlags.kbs()) { - Log.i(TAG, "Setting pin on KBS"); + Log.i(TAG, "Setting pin on KBS"); - KbsValues kbsValues = SignalStore.kbsValues(); - MasterKey masterKey = kbsValues.getOrCreateMasterKey(); - KeyBackupService keyBackupService = ApplicationDependencies.getKeyBackupService(); - 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); + KbsValues kbsValues = SignalStore.kbsValues(); + MasterKey masterKey = kbsValues.getOrCreateMasterKey(); + KeyBackupService keyBackupService = ApplicationDependencies.getKeyBackupService(); + 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)); - TextSecurePreferences.clearOldRegistrationLockPin(context); + if (!restoredData.getMasterKey().equals(masterKey)) { + throw new AssertionError("Failed to set the pin correctly"); } else { - Log.i(TAG, "Setting V1 pin"); - SignalServiceAccountManager accountManager = ApplicationDependencies.getSignalServiceAccountManager(); - accountManager.setPin(pinValue); - TextSecurePreferences.setDeprecatedRegistrationLockPin(context, pinValue); + Log.i(TAG, "Set and retrieved pin on KBS successfully"); } + + kbsValues.setRegistrationLockMasterKey(restoredData, PinHashing.localPinHash(pinValue)); + TextSecurePreferences.clearOldRegistrationLockPin(context); TextSecurePreferences.setRegistrationLockLastReminderTime(context, System.currentTimeMillis()); TextSecurePreferences.setRegistrationLockNextReminderInterval(context, RegistrationLockReminders.INITIAL_INTERVAL); return true; 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 b8ea358a5..1003e81b5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/RegistrationPinV2MigrationJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/RegistrationPinV2MigrationJob.java @@ -13,7 +13,6 @@ import org.thoughtcrime.securesms.keyvalue.KbsValues; import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.lock.PinHashing; import org.thoughtcrime.securesms.logging.Log; -import org.thoughtcrime.securesms.util.FeatureFlags; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.whispersystems.signalservice.api.KeyBackupService; import org.whispersystems.signalservice.api.KeyBackupServicePinException; @@ -57,11 +56,6 @@ public final class RegistrationPinV2MigrationJob extends BaseJob { @Override protected void onRun() throws IOException, UnauthenticatedResponseException, KeyBackupServicePinException { - if (!FeatureFlags.kbs()) { - Log.i(TAG, "Not migrating pin to KBS"); - return; - } - if (!TextSecurePreferences.isV1RegistrationLockEnabled(context)) { Log.i(TAG, "Registration lock disabled"); return; diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/service/CodeVerificationRequest.java b/app/src/main/java/org/thoughtcrime/securesms/registration/service/CodeVerificationRequest.java index e266c51a3..a2968f292 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/service/CodeVerificationRequest.java +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/service/CodeVerificationRequest.java @@ -27,7 +27,6 @@ import org.thoughtcrime.securesms.push.AccountManagerFactory; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.service.DirectoryRefreshListener; import org.thoughtcrime.securesms.service.RotateSignedPreKeyListener; -import org.thoughtcrime.securesms.util.FeatureFlags; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.whispersystems.libsignal.IdentityKeyPair; import org.whispersystems.libsignal.state.PreKeyRecord; @@ -248,10 +247,8 @@ public final class CodeVerificationRequest { //noinspection deprecation Only acceptable place to write the old pin enabled state. TextSecurePreferences.setV1RegistrationLockEnabled(context, pin != null); if (pin != null) { - if (FeatureFlags.kbs()) { - Log.i(TAG, "Pin V1 successfully entered during registration, scheduling a migration to Pin V2"); - ApplicationDependencies.getJobManager().add(new RegistrationPinV2MigrationJob()); - } + Log.i(TAG, "Pin V1 successfully entered during registration, scheduling a migration to Pin V2"); + ApplicationDependencies.getJobManager().add(new RegistrationPinV2MigrationJob()); } } else { SignalStore.kbsValues().setRegistrationLockMasterKey(kbsData, PinHashing.localPinHash(pin)); diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/FeatureFlags.java b/app/src/main/java/org/thoughtcrime/securesms/util/FeatureFlags.java index fe3bfbab0..9b9f73260 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/FeatureFlags.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/FeatureFlags.java @@ -50,7 +50,6 @@ public final class FeatureFlags { private static final String PROFILE_DISPLAY = generateKey("profileDisplay"); private static final String MESSAGE_REQUESTS = generateKey("messageRequests"); private static final String USERNAMES = generateKey("usernames"); - private static final String KBS = generateKey("kbs"); private static final String STORAGE_SERVICE = generateKey("storageService"); private static final String PINS_FOR_ALL = generateKey("beta.pinsForAll"); // TODO [alex] remove beta prefix private static final String PINS_MEGAPHONE_KILL_SWITCH = generateKey("pinsMegaphoneKillSwitch"); @@ -76,7 +75,6 @@ public final class FeatureFlags { * more burden on the reader to ensure that the app experience remains consistent. */ private static final Set HOT_SWAPPABLE = Sets.newHashSet( - KBS, PINS_MEGAPHONE_KILL_SWITCH ); @@ -144,16 +142,9 @@ public final class FeatureFlags { return value; } - /** Set or migrate PIN to KBS */ - public static boolean kbs() { - return getValue(KBS, false); - } - - /** Storage service. Requires {@link #kbs()}. */ + /** Storage service. */ public static boolean storageService() { - boolean value = getValue(STORAGE_SERVICE, false); - if (value && !kbs()) throw new MissingFlagRequirementError(); - return value; + return getValue(STORAGE_SERVICE, false); } /** Enables new KBS UI and notices but does not require user to set a pin */ diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/TextSecurePreferences.java b/app/src/main/java/org/thoughtcrime/securesms/util/TextSecurePreferences.java index 57b3395c8..111ad68e6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/TextSecurePreferences.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/TextSecurePreferences.java @@ -160,7 +160,6 @@ public class TextSecurePreferences { @Deprecated private static final String REGISTRATION_LOCK_PIN_PREF_V1 = "pref_registration_lock_pin"; - private static final String REGISTRATION_LOCK_LAST_REMINDER_TIME = "pref_registration_lock_last_reminder_time"; private static final String REGISTRATION_LOCK_LAST_REMINDER_TIME_POST_KBS = "pref_registration_lock_last_reminder_time_post_kbs"; private static final String REGISTRATION_LOCK_NEXT_REMINDER_INTERVAL = "pref_registration_lock_next_reminder_interval"; @@ -272,16 +271,11 @@ public class TextSecurePreferences { } public static long getRegistrationLockLastReminderTime(@NonNull Context context) { - return getLongPreference(context, getAppropriateReminderKey(), 0); + return getLongPreference(context, REGISTRATION_LOCK_LAST_REMINDER_TIME_POST_KBS, 0); } public static void setRegistrationLockLastReminderTime(@NonNull Context context, long time) { - setLongPreference(context, getAppropriateReminderKey(), time); - } - - private static String getAppropriateReminderKey() { - return FeatureFlags.kbs() ? REGISTRATION_LOCK_LAST_REMINDER_TIME_POST_KBS - : REGISTRATION_LOCK_LAST_REMINDER_TIME; + setLongPreference(context, REGISTRATION_LOCK_LAST_REMINDER_TIME_POST_KBS, time); } public static long getRegistrationLockNextReminderInterval(@NonNull Context context) { diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/SignalServiceAccountManager.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/SignalServiceAccountManager.java index f91433db6..55d6fd245 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/SignalServiceAccountManager.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/SignalServiceAccountManager.java @@ -121,14 +121,6 @@ public class SignalServiceAccountManager { return this.pushServiceSocket.getSenderCertificateLegacy(); } - /** - * @deprecated Remove this method once KBS is live. - */ - @Deprecated - public void setPin(String pin) throws IOException { - this.pushServiceSocket.setPin(pin); - } - /** * V1 Pin setting has been replaced by KeyBackupService. * Now you can only remove the old pin but there is no need to remove the old pin if setting a KBS Pin. diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java index 221985913..baeaac3c4 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java @@ -297,11 +297,6 @@ public class PushServiceSocket { makeServiceRequest(String.format(Locale.US, REQUEST_PUSH_CHALLENGE, gcmRegistrationId, e164number), "GET", null); } - public void setPin(String pin) throws IOException { - RegistrationLock accountLock = new RegistrationLock(pin); - makeServiceRequest(PIN_PATH, "PUT", JsonUtil.toJson(accountLock)); - } - /** Note: Setting a KBS Pin will clear this */ public void removePin() throws IOException { makeServiceRequest(PIN_PATH, "DELETE", null);