diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/configuration/dynamic/DynamicConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/dynamic/DynamicConfiguration.java index 20829ee08..c9e3af9d0 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/configuration/dynamic/DynamicConfiguration.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/dynamic/DynamicConfiguration.java @@ -57,7 +57,7 @@ public class DynamicConfiguration { @JsonProperty @Valid - DynamicECPreKeyMigrationConfiguration ecPreKeyMigration = new DynamicECPreKeyMigrationConfiguration(false); + DynamicECPreKeyMigrationConfiguration ecPreKeyMigration = new DynamicECPreKeyMigrationConfiguration(true, false); public Optional getExperimentEnrollmentConfiguration( final String experimentName) { diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/configuration/dynamic/DynamicECPreKeyMigrationConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/dynamic/DynamicECPreKeyMigrationConfiguration.java index 2836d2397..fedc87ca7 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/configuration/dynamic/DynamicECPreKeyMigrationConfiguration.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/dynamic/DynamicECPreKeyMigrationConfiguration.java @@ -5,5 +5,5 @@ package org.whispersystems.textsecuregcm.configuration.dynamic; -public record DynamicECPreKeyMigrationConfiguration(boolean storeEcSignedPreKeys) { +public record DynamicECPreKeyMigrationConfiguration(boolean deleteEcSignedPreKeys, boolean storeEcSignedPreKeys) { } diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/storage/KeysManager.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/KeysManager.java index b9e68a86d..419281656 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/storage/KeysManager.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/storage/KeysManager.java @@ -124,7 +124,9 @@ public class KeysManager { CompletableFuture.allOf( ecPreKeys.delete(accountUuid), pqPreKeys.delete(accountUuid), - ecSignedPreKeys.delete(accountUuid), + dynamicConfigurationManager.getConfiguration().getEcPreKeyMigrationConfiguration().deleteEcSignedPreKeys() + ? ecSignedPreKeys.delete(accountUuid) + : CompletableFuture.completedFuture(null), pqLastResortKeys.delete(accountUuid)) .join(); } @@ -133,7 +135,9 @@ public class KeysManager { CompletableFuture.allOf( ecPreKeys.delete(accountUuid, deviceId), pqPreKeys.delete(accountUuid, deviceId), - ecSignedPreKeys.delete(accountUuid, deviceId), + dynamicConfigurationManager.getConfiguration().getEcPreKeyMigrationConfiguration().deleteEcSignedPreKeys() + ? ecSignedPreKeys.delete(accountUuid, deviceId) + : CompletableFuture.completedFuture(null), pqLastResortKeys.delete(accountUuid, deviceId)) .join(); } diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/storage/KeysManagerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/storage/KeysManagerTest.java index cb848e97c..f2b0b6a4b 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/storage/KeysManagerTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/storage/KeysManagerTest.java @@ -53,6 +53,7 @@ class KeysManagerTest { when(dynamicConfigurationManager.getConfiguration()).thenReturn(dynamicConfiguration); when(dynamicConfiguration.getEcPreKeyMigrationConfiguration()).thenReturn(ecPreKeyMigrationConfiguration); when(ecPreKeyMigrationConfiguration.storeEcSignedPreKeys()).thenReturn(true); + when(ecPreKeyMigrationConfiguration.deleteEcSignedPreKeys()).thenReturn(true); keysManager = new KeysManager( DYNAMO_DB_EXTENSION.getDynamoDbAsyncClient(),