From 8df2a8af0138f8b64cae626f97473b60827e53a1 Mon Sep 17 00:00:00 2001 From: jubb Date: Fri, 19 Feb 2021 12:04:19 +1100 Subject: [PATCH] fix: send new kp to each user individually vs target group --- .../securesms/loki/protocol/ClosedGroupsProtocolV2.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/loki/protocol/ClosedGroupsProtocolV2.kt b/app/src/main/java/org/thoughtcrime/securesms/loki/protocol/ClosedGroupsProtocolV2.kt index fff03d6b74..4c842d389c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/loki/protocol/ClosedGroupsProtocolV2.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/loki/protocol/ClosedGroupsProtocolV2.kt @@ -383,7 +383,7 @@ object ClosedGroupsProtocolV2 { pendingKeyPair[groupPublicKey] = Optional.absent() } - private fun sendEncryptionKeyPair(context: Context, groupPublicKey: String, newKeyPair: ECKeyPair, targetMembers: Collection, force: Boolean = true) { + private fun sendEncryptionKeyPair(context: Context, target: String, newKeyPair: ECKeyPair, targetMembers: Collection, force: Boolean = true) { val proto = SignalServiceProtos.KeyPair.newBuilder() proto.publicKey = ByteString.copyFrom(newKeyPair.publicKey.serialize().removing05PrefixIfNeeded()) proto.privateKey = ByteString.copyFrom(newKeyPair.privateKey.serialize()) @@ -392,7 +392,7 @@ object ClosedGroupsProtocolV2 { val ciphertext = SessionProtocolImpl(context).encrypt(plaintext, publicKey) ClosedGroupUpdateMessageSendJobV2.KeyPairWrapper(publicKey, ciphertext) } - val job = ClosedGroupUpdateMessageSendJobV2(groupPublicKey, ClosedGroupUpdateMessageSendJobV2.Kind.EncryptionKeyPair(wrappers), System.currentTimeMillis()) + val job = ClosedGroupUpdateMessageSendJobV2(target, ClosedGroupUpdateMessageSendJobV2.Kind.EncryptionKeyPair(wrappers), System.currentTimeMillis()) if (force) { job.setContext(context) job.onRun() // Run the job immediately @@ -573,7 +573,9 @@ object ClosedGroupsProtocolV2 { if (encryptionKeyPair == null) { Log.d("Loki", "Couldn't get encryption key pair for closed group.") } else { - sendEncryptionKeyPair(context, groupPublicKey, encryptionKeyPair, newMembers, false) + for (user in updateMembers) { + sendEncryptionKeyPair(context, user, encryptionKeyPair, newMembers, false) + } } } }