From a0de2577e8df5a44a862cddfc8840e76d8f7d098 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Mon, 4 Dec 2023 10:18:52 -0500 Subject: [PATCH] Add extra data to the provisioning proto. --- .../main/java/org/thoughtcrime/securesms/DeviceActivity.java | 2 +- .../signalservice/api/SignalServiceAccountManager.java | 4 +++- libsignal-service/src/main/protowire/Provisioning.proto | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/DeviceActivity.java b/app/src/main/java/org/thoughtcrime/securesms/DeviceActivity.java index 0d033a8cc8..b4f6825031 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/DeviceActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/DeviceActivity.java @@ -195,7 +195,7 @@ public class DeviceActivity extends PassphraseRequiredActivity ProfileKey profileKey = ProfileKeyUtil.getSelfProfileKey(); TextSecurePreferences.setMultiDevice(DeviceActivity.this, true); - accountManager.addDevice(ephemeralId, publicKey, aciIdentityKeyPair, pniIdentityKeyPair, profileKey, verificationCode); + accountManager.addDevice(ephemeralId, publicKey, aciIdentityKeyPair, pniIdentityKeyPair, profileKey, SignalStore.svr().getOrCreateMasterKey(), verificationCode); return SUCCESS; } catch (NotFoundException e) { 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 c546a13311..b68d5f483a 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 @@ -639,6 +639,7 @@ public class SignalServiceAccountManager { IdentityKeyPair aciIdentityKeyPair, IdentityKeyPair pniIdentityKeyPair, ProfileKey profileKey, + MasterKey masterKey, String code) throws InvalidKeyException, IOException { @@ -661,7 +662,8 @@ public class SignalServiceAccountManager { .number(e164) .profileKey(ByteString.of(profileKey.serialize())) .provisioningCode(code) - .provisioningVersion(ProvisioningVersion.CURRENT.getValue()); + .provisioningVersion(ProvisioningVersion.CURRENT.getValue()) + .masterKey(ByteString.of(masterKey.serialize())); byte[] ciphertext = cipher.encrypt(message.build()); this.pushServiceSocket.sendProvisioningMessage(deviceIdentifier, ciphertext); diff --git a/libsignal-service/src/main/protowire/Provisioning.proto b/libsignal-service/src/main/protowire/Provisioning.proto index 61b97019e9..2b9bef426e 100644 --- a/libsignal-service/src/main/protowire/Provisioning.proto +++ b/libsignal-service/src/main/protowire/Provisioning.proto @@ -32,7 +32,8 @@ message ProvisionMessage { optional bytes profileKey = 6; optional bool readReceipts = 7; optional uint32 provisioningVersion = 9; - // NEXT ID: 13 + optional bytes masterKey = 13; + // NEXT ID: 14 } enum ProvisioningVersion {