From 5ae51f844e2dc78ef9b4941fb79e48cf259817f8 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 25 Mar 2026 16:59:18 -0400 Subject: [PATCH] Drop legacy field from provisioning and sync messages. --- .../thoughtcrime/securesms/jobs/MultiDeviceKeysUpdateJob.kt | 1 - .../securesms/registration/data/RegistrationRepository.kt | 4 +++- .../signalservice/api/SignalServiceMessageSender.java | 4 ---- .../whispersystems/signalservice/api/link/LinkDeviceApi.kt | 1 - .../signalservice/api/messages/multidevice/KeysMessage.kt | 2 -- lib/libsignal-service/src/main/protowire/Provisioning.proto | 2 +- lib/libsignal-service/src/main/protowire/SignalService.proto | 2 +- 7 files changed, 5 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceKeysUpdateJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceKeysUpdateJob.kt index 6984447715..10a809515f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceKeysUpdateJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceKeysUpdateJob.kt @@ -56,7 +56,6 @@ class MultiDeviceKeysUpdateJob private constructor(parameters: Parameters) : Bas val syncMessage = SignalServiceSyncMessage.forKeys( KeysMessage( storageService = SignalStore.storageService.storageKey, - master = SignalStore.svr.masterKey, accountEntropyPool = SignalStore.account.accountEntropyPool, mediaRootBackupKey = SignalStore.backup.mediaRootBackupKey ) diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/data/RegistrationRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/registration/data/RegistrationRepository.kt index 78c7fc66ae..953cca95f5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/data/RegistrationRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/data/RegistrationRepository.kt @@ -515,6 +515,8 @@ object RegistrationRepository { .registrationApi .registerAsSecondaryDevice(message.provisioningCode!!, accountAttributes, aciPreKeys, pniPreKeys, registrationData.fcmToken) .map { respone -> + val aep = AccountEntropyPool(message.accountEntropyPool!!) + RegisterAsLinkedDeviceResponse( deviceId = respone.deviceId.toInt(), accountRegistrationResult = AccountRegistrationResult( @@ -522,7 +524,7 @@ object RegistrationRepository { pni = pni.toString(), storageCapable = false, number = message.number!!, - masterKey = MasterKey(message.masterKey!!.toByteArray()), + masterKey = aep.deriveMasterKey(), pin = null, aciPreKeyCollection = aciPreKeys, pniPreKeyCollection = pniPreKeys, diff --git a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageSender.java b/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageSender.java index f28d7ebbc2..1385f57841 100644 --- a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageSender.java +++ b/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageSender.java @@ -1749,10 +1749,6 @@ public class SignalServiceMessageSender { SyncMessage.Builder syncMessage = createSyncMessageBuilder(); SyncMessage.Keys.Builder builder = new SyncMessage.Keys.Builder(); - if (keysMessage.getMaster() != null) { - builder.master(ByteString.of(keysMessage.getMaster().serialize())); - } - if (keysMessage.getAccountEntropyPool() != null) { builder.accountEntropyPool(keysMessage.getAccountEntropyPool().getValue()); } diff --git a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/link/LinkDeviceApi.kt b/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/link/LinkDeviceApi.kt index f268389cae..85c3d16eca 100644 --- a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/link/LinkDeviceApi.kt +++ b/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/link/LinkDeviceApi.kt @@ -120,7 +120,6 @@ class LinkDeviceApi( userAgent = null, profileKey = profileKey.serialize().toByteString(), provisioningVersion = ProvisioningVersion.CURRENT.value, - masterKey = masterKey.serialize().toByteString(), ephemeralBackupKey = ephemeralMessageBackupKey?.value?.toByteString(), accountEntropyPool = accountEntropyPool.value, mediaRootBackupKey = mediaRootBackupKey.value.toByteString(), diff --git a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/messages/multidevice/KeysMessage.kt b/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/messages/multidevice/KeysMessage.kt index c58f146fd9..9d11ca6754 100644 --- a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/messages/multidevice/KeysMessage.kt +++ b/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/messages/multidevice/KeysMessage.kt @@ -1,13 +1,11 @@ package org.whispersystems.signalservice.api.messages.multidevice import org.signal.core.models.AccountEntropyPool -import org.signal.core.models.MasterKey import org.signal.core.models.backup.MediaRootBackupKey import org.signal.core.models.storageservice.StorageKey data class KeysMessage( val storageService: StorageKey?, - val master: MasterKey?, val accountEntropyPool: AccountEntropyPool?, val mediaRootBackupKey: MediaRootBackupKey? ) diff --git a/lib/libsignal-service/src/main/protowire/Provisioning.proto b/lib/libsignal-service/src/main/protowire/Provisioning.proto index 2fde938e19..b5eeaf6295 100644 --- a/lib/libsignal-service/src/main/protowire/Provisioning.proto +++ b/lib/libsignal-service/src/main/protowire/Provisioning.proto @@ -38,7 +38,7 @@ message ProvisionMessage { optional bytes profileKey = 6; optional bool readReceipts = 7; optional uint32 provisioningVersion = 9; - optional bytes masterKey = 13; // Deprecated, but required by linked devices + reserved /*masterKey*/ 13; // Deprecated in favor of accountEntropyPool optional bytes ephemeralBackupKey = 14; // 32 bytes optional string accountEntropyPool = 15; optional bytes mediaRootBackupKey = 16; // 32-bytes diff --git a/lib/libsignal-service/src/main/protowire/SignalService.proto b/lib/libsignal-service/src/main/protowire/SignalService.proto index aa0bc151aa..dfffccfe92 100644 --- a/lib/libsignal-service/src/main/protowire/SignalService.proto +++ b/lib/libsignal-service/src/main/protowire/SignalService.proto @@ -588,7 +588,7 @@ message SyncMessage { message Keys { reserved /* storageService */ 1; - optional bytes master = 2; // deprecated: this field will be removed in a future release. + reserved /* master */ 2; optional string accountEntropyPool = 3; optional bytes mediaRootBackupKey = 4; }