From f6d351f9c3c069abc3be598c040aab1688c20d3f Mon Sep 17 00:00:00 2001 From: 0x330a <92654767+0x330a@users.noreply.github.com> Date: Thu, 22 Feb 2024 13:29:57 +1100 Subject: [PATCH] fix: remove disappearing config overwrite and fix EC key pair's pubkey being group's identity pubkey --- .../org/thoughtcrime/securesms/groups/ClosedGroupManager.kt | 4 +--- .../thoughtcrime/securesms/groups/EditClosedGroupActivity.kt | 2 +- .../messaging/messages/control/ClosedGroupControlMessage.kt | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ClosedGroupManager.kt b/app/src/main/java/org/thoughtcrime/securesms/groups/ClosedGroupManager.kt index f8e64dd38..adeeeb91f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ClosedGroupManager.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ClosedGroupManager.kt @@ -8,7 +8,6 @@ import org.session.libsession.messaging.sending_receiving.pollers.ClosedGroupPol import org.session.libsession.utilities.Address import org.session.libsession.utilities.GroupRecord import org.session.libsession.utilities.GroupUtil -import org.session.libsession.utilities.recipients.Recipient import org.session.libsignal.crypto.ecc.DjbECPublicKey import org.thoughtcrime.securesms.ApplicationContext import org.thoughtcrime.securesms.dependencies.ConfigFactory @@ -41,7 +40,7 @@ object ClosedGroupManager { return groups.eraseLegacyGroup(groupPublicKey) } - fun ConfigFactory.updateLegacyGroup(groupRecipientSettings: Recipient.RecipientSettings, group: GroupRecord) { + fun ConfigFactory.updateLegacyGroup(group: GroupRecord) { val groups = userGroups ?: return if (!group.isClosedGroup) return val storage = MessagingModuleConfiguration.shared.storage @@ -53,7 +52,6 @@ object ClosedGroupManager { val toSet = legacyInfo.copy( members = latestMemberMap, name = group.title, - disappearingTimer = groupRecipientSettings.expireMessages.toLong(), priority = if (storage.isPinned(threadId)) ConfigBase.PRIORITY_PINNED else ConfigBase.PRIORITY_VISIBLE, encPubKey = (latestKeyPair.publicKey as DjbECPublicKey).publicKey, // 'serialize()' inserts an extra byte encSecKey = latestKeyPair.privateKey.serialize() diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/EditClosedGroupActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/groups/EditClosedGroupActivity.kt index b07271213..da982589c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/EditClosedGroupActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/EditClosedGroupActivity.kt @@ -336,7 +336,7 @@ class EditClosedGroupActivity : PassphraseRequiredActionBarActivity() { ?: return Log.w("Loki", "No recipient settings when trying to update group config") val latestGroup = storage.getGroup(groupID) ?: return Log.w("Loki", "No group record when trying to update group config") - groupConfigFactory.updateLegacyGroup(latestRecipient, latestGroup) + groupConfigFactory.updateLegacyGroup(latestGroup) } class GroupMembers(val members: List, val zombieMembers: List) diff --git a/libsession/src/main/java/org/session/libsession/messaging/messages/control/ClosedGroupControlMessage.kt b/libsession/src/main/java/org/session/libsession/messaging/messages/control/ClosedGroupControlMessage.kt index 71663627f..101baac2d 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/messages/control/ClosedGroupControlMessage.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/messages/control/ClosedGroupControlMessage.kt @@ -1,7 +1,6 @@ package org.session.libsession.messaging.messages.control import com.google.protobuf.ByteString -import org.session.libsession.messaging.messages.copyExpiration import org.session.libsignal.crypto.ecc.DjbECPrivateKey import org.session.libsignal.crypto.ecc.DjbECPublicKey import org.session.libsignal.crypto.ecc.ECKeyPair @@ -91,7 +90,7 @@ class ClosedGroupControlMessage() : ControlMessage() { when (type) { NEW -> takeIf { it.hasPublicKey() && it.hasEncryptionKeyPair() && it.hasName() }?.let { ECKeyPair( - DjbECPublicKey(publicKey.toByteArray()), + DjbECPublicKey(encryptionKeyPair.publicKey.toByteArray()), DjbECPrivateKey(encryptionKeyPair.privateKey.toByteArray()) ).let { Kind.New(publicKey, name, it, membersList, adminsList, expirationTimer) } }