From d19d1231c9a01cd85f5c7d09edbfd33b84cfb6fb Mon Sep 17 00:00:00 2001 From: 0x330a <92654767+0x330a@users.noreply.github.com> Date: Thu, 31 Aug 2023 17:32:43 +1000 Subject: [PATCH] fix: compile errors and moving the references to sessionId and broken hex string function --- .../securesms/database/Storage.kt | 31 ++++++++++++------- .../libsession_util/InstrumentedTests.kt | 8 +++-- libsession-util/src/main/cpp/user_groups.cpp | 7 +---- libsession-util/src/main/cpp/user_groups.h | 4 --- libsession-util/src/main/cpp/user_profile.cpp | 4 +-- .../loki/messenger/libsession_util/Config.kt | 10 +++--- .../messenger/libsession_util/util/Contact.kt | 2 +- .../libsession_util/util/GroupInfo.kt | 19 +++++------- .../messaging/jobs/BatchMessageReceiveJob.kt | 4 +-- .../messaging/open_groups/OpenGroupApi.kt | 6 ++-- .../sending_receiving/MessageDecrypter.kt | 6 ++-- .../sending_receiving/MessageReceiver.kt | 4 +-- .../sending_receiving/MessageSender.kt | 1 - .../ReceivedMessageHandler.kt | 6 ++-- .../session/libsession/utilities/GroupUtil.kt | 4 +-- .../session/libsignal/utilities/SessionId.kt | 2 -- 16 files changed, 56 insertions(+), 62 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt b/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt index 6d252b6ee3..a88738bd8e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt @@ -8,6 +8,9 @@ import network.loki.messenger.libsession_util.ConfigBase.Companion.PRIORITY_PINN import network.loki.messenger.libsession_util.ConfigBase.Companion.PRIORITY_VISIBLE import network.loki.messenger.libsession_util.Contacts import network.loki.messenger.libsession_util.ConversationVolatileConfig +import network.loki.messenger.libsession_util.GroupInfoConfig +import network.loki.messenger.libsession_util.GroupKeysConfig +import network.loki.messenger.libsession_util.GroupMemberConfig import network.loki.messenger.libsession_util.UserGroupsConfig import network.loki.messenger.libsession_util.UserProfile import network.loki.messenger.libsession_util.util.BaseCommunityInfo @@ -54,7 +57,6 @@ import org.session.libsession.messaging.sending_receiving.link_preview.LinkPrevi import org.session.libsession.messaging.sending_receiving.notifications.PushRegistryV1 import org.session.libsession.messaging.sending_receiving.pollers.ClosedGroupPollerV2 import org.session.libsession.messaging.sending_receiving.quotes.QuoteModel -import org.session.libsession.messaging.utilities.SessionId import org.session.libsession.messaging.utilities.SodiumUtilities import org.session.libsession.messaging.utilities.UpdateMessageData import org.session.libsession.snode.OnionRequestAPI @@ -77,6 +79,7 @@ import org.session.libsignal.utilities.Hex import org.session.libsignal.utilities.IdPrefix import org.session.libsignal.utilities.KeyHelper import org.session.libsignal.utilities.Log +import org.session.libsignal.utilities.SessionId import org.session.libsignal.utilities.guava.Optional import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper import org.thoughtcrime.securesms.database.model.MessageId @@ -118,8 +121,7 @@ open class Storage(context: Context, helper: SQLCipherOpenHelper, private val co address.isClosedGroup -> { val sessionId = address.serialize() val closedGroup = groups.getClosedGroup(sessionId) - - Log.w("Loki", "Thread created called for new closed group address, not adding any extra information") + TODO("Set the closed group's convo volatile info") } address.isOpenGroup -> { // these should be added on the group join / group info fetch @@ -149,13 +151,15 @@ open class Storage(context: Context, helper: SQLCipherOpenHelper, private val co val volatile = configFactory.convoVolatile ?: return if (address.isGroup) { val groups = configFactory.userGroups ?: return - if (address.isClosedGroup) { + if (address.isLegacyClosedGroup) { val sessionId = GroupUtil.doubleDecodeGroupId(address.serialize()) volatile.eraseLegacyClosedGroup(sessionId) groups.eraseLegacyGroup(sessionId) } else if (address.isOpenGroup) { // these should be removed in the group leave / handling new configs Log.w("Loki", "Thread delete called for open group address, expecting to be handled elsewhere") + } else if (address.isClosedGroup) { + TODO("add the thread deleted checks for new closed groups") } } else { // non-standard contact prefixes: 15, 00 etc shouldn't be stored in config @@ -456,6 +460,9 @@ open class Storage(context: Context, helper: SQLCipherOpenHelper, private val co is Contacts -> updateContacts(forConfigObject) is ConversationVolatileConfig -> updateConvoVolatile(forConfigObject) is UserGroupsConfig -> updateUserGroups(forConfigObject) + is GroupInfoConfig -> TODO() + is GroupKeysConfig -> TODO() + is GroupMemberConfig -> TODO() } } @@ -548,8 +555,8 @@ open class Storage(context: Context, helper: SQLCipherOpenHelper, private val co val toAddCommunities = communities.filter { it.community.fullUrl() !in existingCommunities.map { it.value.joinURL } } val existingJoinUrls = existingCommunities.values.map { it.joinURL } - val existingClosedGroups = getAllGroups(includeInactive = true).filter { it.isClosedGroup } - val lgcIds = lgc.map { it.sessionId } + val existingClosedGroups = getAllGroups(includeInactive = true).filter { it.isLegacyClosedGroup } + val lgcIds = lgc.map { it.sessionId.hexString() } val toDeleteClosedGroups = existingClosedGroups.filter { group -> GroupUtil.doubleDecodeGroupId(group.encodedId) !in lgcIds } @@ -583,7 +590,7 @@ open class Storage(context: Context, helper: SQLCipherOpenHelper, private val co } for (group in lgc) { - val existingGroup = existingClosedGroups.firstOrNull { GroupUtil.doubleDecodeGroupId(it.encodedId) == group.sessionId } + val existingGroup = existingClosedGroups.firstOrNull { GroupUtil.doubleDecodeGroupId(it.encodedId) == group.sessionId.hexString() } val existingThread = existingGroup?.let { getThreadId(existingGroup.encodedId) } if (existingGroup != null) { if (group.priority == PRIORITY_HIDDEN && existingThread != null) { @@ -597,28 +604,28 @@ open class Storage(context: Context, helper: SQLCipherOpenHelper, private val co } else { val members = group.members.keys.map { Address.fromSerialized(it) } val admins = group.members.filter { it.value /*admin = true*/ }.keys.map { Address.fromSerialized(it) } - val groupId = GroupUtil.doubleEncodeGroupID(group.sessionId) + val groupId = GroupUtil.doubleEncodeGroupID(group.sessionId.hexString()) val title = group.name val formationTimestamp = (group.joinedAt * 1000L) createGroup(groupId, title, admins + members, null, null, admins, formationTimestamp) setProfileSharing(Address.fromSerialized(groupId), true) // Add the group to the user's set of public keys to poll for - addClosedGroupPublicKey(group.sessionId) + addClosedGroupPublicKey(group.sessionId.hexString()) // Store the encryption key pair val keyPair = ECKeyPair(DjbECPublicKey(group.encPubKey), DjbECPrivateKey(group.encSecKey)) - addClosedGroupEncryptionKeyPair(keyPair, group.sessionId, SnodeAPI.nowWithOffset) + addClosedGroupEncryptionKeyPair(keyPair, group.sessionId.hexString(), SnodeAPI.nowWithOffset) // Set expiration timer val expireTimer = group.disappearingTimer setExpirationTimer(groupId, expireTimer.toInt()) // Notify the PN server - PushRegistryV1.subscribeGroup(group.sessionId, publicKey = localUserPublicKey) + PushRegistryV1.subscribeGroup(group.sessionId.hexString(), publicKey = localUserPublicKey) // Notify the user val threadID = getOrCreateThreadIdFor(Address.fromSerialized(groupId)) threadDb.setDate(threadID, formationTimestamp) insertOutgoingInfoMessage(context, groupId, SignalServiceGroup.Type.CREATION, title, members.map { it.serialize() }, admins.map { it.serialize() }, threadID, formationTimestamp) // Don't create config group here, it's from a config update // Start polling - ClosedGroupPollerV2.shared.startPolling(group.sessionId) + ClosedGroupPollerV2.shared.startPolling(group.sessionId.hexString()) } } } diff --git a/libsession-util/src/androidTest/java/network/loki/messenger/libsession_util/InstrumentedTests.kt b/libsession-util/src/androidTest/java/network/loki/messenger/libsession_util/InstrumentedTests.kt index aaa635c480..1b883bdc9f 100644 --- a/libsession-util/src/androidTest/java/network/loki/messenger/libsession_util/InstrumentedTests.kt +++ b/libsession-util/src/androidTest/java/network/loki/messenger/libsession_util/InstrumentedTests.kt @@ -3,6 +3,7 @@ package network.loki.messenger.libsession_util import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry import network.loki.messenger.libsession_util.util.* +import org.hamcrest.CoreMatchers.equalTo import org.hamcrest.CoreMatchers.not import org.hamcrest.CoreMatchers.notNullValue import org.hamcrest.MatcherAssert.assertThat @@ -625,10 +626,13 @@ class InstrumentedTests { val userCurve = Sodium.ed25519PkToCurve25519(userPublic) val groupConfig = UserGroupsConfig.newInstance(userSecret) val group = groupConfig.createGroup() - val groupSecret = group.adminKey!! + val groupSecret = group.adminKey val groupPublic = Hex.fromStringCondensed(group.groupSessionId.publicKey) groupConfig.set(group) - val infoConf = GroupInfoConfig.newInstance(groupPublic, group.adminKey!!) + val setGroup = groupConfig.getClosedGroup(group.groupSessionId.hexString()) + assertThat(setGroup, notNullValue()) + assertTrue(setGroup!!.adminKey.isNotEmpty()) + val infoConf = GroupInfoConfig.newInstance(groupPublic, group.adminKey) infoConf.setName("New Group") assertEquals("New Group", infoConf.getName()) infoConf.setCreated(System.currentTimeMillis()) diff --git a/libsession-util/src/main/cpp/user_groups.cpp b/libsession-util/src/main/cpp/user_groups.cpp index fb52fdaca7..64854c794a 100644 --- a/libsession-util/src/main/cpp/user_groups.cpp +++ b/libsession-util/src/main/cpp/user_groups.cpp @@ -1,6 +1,7 @@ #pragma clang diagnostic push #pragma ide diagnostic ignored "bugprone-reserved-identifier" #include "user_groups.h" +#include "oxenc/hex.h" #pragma clang diagnostic push #pragma ide diagnostic ignored "bugprone-reserved-identifier" @@ -134,14 +135,8 @@ Java_network_loki_messenger_libsession_1util_UserGroupsConfig_set__Lnetwork_loki auto deserialized = deserialize_legacy_group_info(env, group_info, conf); conf->set(deserialized); } else if (env->IsSameObject(closed_group_info, object_class)) { - LOGD("Closed group deserializing...") auto deserialized = deserialize_closed_group_info(env, group_info); - LOGD("secret key deserialized: %d", deserialized.secretkey.size()) conf->set(deserialized); - auto check_group = conf->get_group(deserialized.id); - if (check_group) { - LOGD("after set: %d", check_group->secretkey.size()); - } } } diff --git a/libsession-util/src/main/cpp/user_groups.h b/libsession-util/src/main/cpp/user_groups.h index fac5d130d3..5702a41a33 100644 --- a/libsession-util/src/main/cpp/user_groups.h +++ b/libsession-util/src/main/cpp/user_groups.h @@ -8,9 +8,6 @@ #include "session/config/user_groups.hpp" #include -#define APPNAME "libsession-jni" -#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, APPNAME, __VA_ARGS__); - inline session::config::UserGroups* ptrToUserGroups(JNIEnv *env, jobject obj) { jclass configClass = env->FindClass("network/loki/messenger/libsession_util/UserGroupsConfig"); jfieldID pointerField = env->GetFieldID(configClass, "pointer", "J"); @@ -133,7 +130,6 @@ inline jobject serialize_legacy_group_info(JNIEnv *env, session::config::legacy_ inline jobject serialize_closed_group_info(JNIEnv* env, session::config::group_info info) { auto session_id = util::serialize_session_id(env, info.id); jbyteArray admin_bytes = util::bytes_from_ustring(env, info.secretkey); - LOGD("admin byte length: %d", info.secretkey.size()); jbyteArray auth_bytes = util::bytes_from_ustring(env, info.auth_data); jclass group_info_class = env->FindClass("network/loki/messenger/libsession_util/util/GroupInfo$ClosedGroupInfo"); diff --git a/libsession-util/src/main/cpp/user_profile.cpp b/libsession-util/src/main/cpp/user_profile.cpp index 5b3980e634..e8bf04a1fb 100644 --- a/libsession-util/src/main/cpp/user_profile.cpp +++ b/libsession-util/src/main/cpp/user_profile.cpp @@ -84,13 +84,13 @@ Java_network_loki_messenger_libsession_1util_UserProfile_setPic(JNIEnv *env, job extern "C" JNIEXPORT void JNICALL Java_network_loki_messenger_libsession_1util_UserProfile_setNtsPriority(JNIEnv *env, jobject thiz, - jint priority) { + jlong priority) { std::lock_guard lock{util::util_mutex_}; auto profile = ptrToProfile(env, thiz); profile->set_nts_priority(priority); } extern "C" -JNIEXPORT jint JNICALL +JNIEXPORT jlong JNICALL Java_network_loki_messenger_libsession_1util_UserProfile_getNtsPriority(JNIEnv *env, jobject thiz) { std::lock_guard lock{util::util_mutex_}; auto profile = ptrToProfile(env, thiz); diff --git a/libsession-util/src/main/java/network/loki/messenger/libsession_util/Config.kt b/libsession-util/src/main/java/network/loki/messenger/libsession_util/Config.kt index b6c36d53b4..be2089bf24 100644 --- a/libsession-util/src/main/java/network/loki/messenger/libsession_util/Config.kt +++ b/libsession-util/src/main/java/network/loki/messenger/libsession_util/Config.kt @@ -36,9 +36,9 @@ sealed class ConfigBase(protected val /* yucky */ pointer: Long) { fun isNewConfigEnabled(forced: Boolean, currentTime: Long) = forced || currentTime >= ACTIVATE_TIME - const val PRIORITY_HIDDEN = -1 - const val PRIORITY_VISIBLE = 0 - const val PRIORITY_PINNED = 1 + const val PRIORITY_HIDDEN = -1L + const val PRIORITY_VISIBLE = 0L + const val PRIORITY_PINNED = 1L } @@ -129,8 +129,8 @@ class UserProfile(pointer: Long) : ConfigBase(pointer) { external fun getName(): String? external fun getPic(): UserPic external fun setPic(userPic: UserPic) - external fun setNtsPriority(priority: Int) - external fun getNtsPriority(): Int + external fun setNtsPriority(priority: Long) + external fun getNtsPriority(): Long external fun getCommunityMessageRequests(): Boolean external fun setCommunityMessageRequests(blocks: Boolean) external fun isBlockCommunityMessageRequestsSet(): Boolean diff --git a/libsession-util/src/main/java/network/loki/messenger/libsession_util/util/Contact.kt b/libsession-util/src/main/java/network/loki/messenger/libsession_util/util/Contact.kt index 8cc22a6afe..de2075fd19 100644 --- a/libsession-util/src/main/java/network/loki/messenger/libsession_util/util/Contact.kt +++ b/libsession-util/src/main/java/network/loki/messenger/libsession_util/util/Contact.kt @@ -8,6 +8,6 @@ data class Contact( var approvedMe: Boolean = false, var blocked: Boolean = false, var profilePicture: UserPic = UserPic.DEFAULT, - var priority: Int = 0, + var priority: Long = 0, var expiryMode: ExpiryMode, ) \ No newline at end of file diff --git a/libsession-util/src/main/java/network/loki/messenger/libsession_util/util/GroupInfo.kt b/libsession-util/src/main/java/network/loki/messenger/libsession_util/util/GroupInfo.kt index aaa73cec3b..1754cc342b 100644 --- a/libsession-util/src/main/java/network/loki/messenger/libsession_util/util/GroupInfo.kt +++ b/libsession-util/src/main/java/network/loki/messenger/libsession_util/util/GroupInfo.kt @@ -8,8 +8,8 @@ sealed class GroupInfo { data class ClosedGroupInfo( val groupSessionId: SessionId, - val adminKey: ByteArray?, - val authData: ByteArray? + val adminKey: ByteArray, + val authData: ByteArray ): GroupInfo() { override fun equals(other: Any?): Boolean { if (this === other) return true @@ -18,24 +18,19 @@ sealed class GroupInfo { other as ClosedGroupInfo if (groupSessionId != other.groupSessionId) return false - if (adminKey != null) { - if (other.adminKey == null) return false - if (!adminKey.contentEquals(other.adminKey)) return false - } else if (other.adminKey != null) return false - if (authData != null) { - if (other.authData == null) return false - if (!authData.contentEquals(other.authData)) return false - } else if (other.authData != null) return false + if (!adminKey.contentEquals(other.adminKey)) return false + if (!authData.contentEquals(other.authData)) return false return true } override fun hashCode(): Int { var result = groupSessionId.hashCode() - result = 31 * result + (adminKey?.contentHashCode() ?: 0) - result = 31 * result + (authData?.contentHashCode() ?: 0) + result = 31 * result + adminKey.contentHashCode() + result = 31 * result + authData.contentHashCode() return result } + } data class LegacyGroupInfo( diff --git a/libsession/src/main/java/org/session/libsession/messaging/jobs/BatchMessageReceiveJob.kt b/libsession/src/main/java/org/session/libsession/messaging/jobs/BatchMessageReceiveJob.kt index 41301e13b8..65300f1cf3 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/jobs/BatchMessageReceiveJob.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/jobs/BatchMessageReceiveJob.kt @@ -28,7 +28,7 @@ import org.session.libsession.messaging.sending_receiving.handleOpenGroupReactio import org.session.libsession.messaging.sending_receiving.handleUnsendRequest import org.session.libsession.messaging.sending_receiving.handleVisibleMessage import org.session.libsession.messaging.utilities.Data -import org.session.libsession.messaging.utilities.SessionId +import org.session.libsignal.utilities.SessionId import org.session.libsession.messaging.utilities.SodiumUtilities import org.session.libsession.utilities.SSKEnvironment import org.session.libsignal.protos.UtilProtos @@ -160,7 +160,7 @@ class BatchMessageReceiveJob( }?.let { SessionId( IdPrefix.BLINDED, it.publicKey.asBytes - ).hexString + ).hexString() } val sentTimestamp = message.sentTimestamp!! if (message.sender == localUserPublicKey || isUserBlindedSender) { diff --git a/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupApi.kt b/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupApi.kt index c6b6186c9c..9f010fdf17 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupApi.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupApi.kt @@ -19,7 +19,6 @@ import okhttp3.MediaType import okhttp3.RequestBody import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.sending_receiving.pollers.OpenGroupPoller.Companion.maxInactivityPeriod -import org.session.libsession.messaging.utilities.SessionId import org.session.libsession.messaging.utilities.SodiumUtilities import org.session.libsession.snode.OnionRequestAPI import org.session.libsession.snode.OnionResponse @@ -36,6 +35,7 @@ import org.session.libsignal.utilities.Hex import org.session.libsignal.utilities.IdPrefix import org.session.libsignal.utilities.JsonUtil import org.session.libsignal.utilities.Log +import org.session.libsignal.utilities.SessionId import org.session.libsignal.utilities.removingIdPrefixIfNeeded import org.whispersystems.curve25519.Curve25519 import java.util.concurrent.TimeUnit @@ -360,7 +360,7 @@ object OpenGroupApi { pubKey = SessionId( IdPrefix.BLINDED, keyPair.publicKey.asBytes - ).hexString + ).hexString() signature = SodiumUtilities.sogsSignature( messageBytes, @@ -373,7 +373,7 @@ object OpenGroupApi { pubKey = SessionId( IdPrefix.UN_BLINDED, ed25519KeyPair.publicKey.asBytes - ).hexString + ).hexString() sodium.cryptoSignDetached( signature, messageBytes, diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageDecrypter.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageDecrypter.kt index 53bf12f26e..35d02eef83 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageDecrypter.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageDecrypter.kt @@ -6,12 +6,12 @@ import com.goterl.lazysodium.interfaces.Box import com.goterl.lazysodium.interfaces.Sign import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.sending_receiving.MessageReceiver.Error -import org.session.libsession.messaging.utilities.SessionId import org.session.libsession.messaging.utilities.SodiumUtilities import org.session.libsignal.crypto.ecc.ECKeyPair import org.session.libsignal.utilities.Hex import org.session.libsignal.utilities.IdPrefix import org.session.libsignal.utilities.Log +import org.session.libsignal.utilities.SessionId import org.session.libsignal.utilities.hexEncodedPublicKey import org.session.libsignal.utilities.removingIdPrefixIfNeeded @@ -60,7 +60,7 @@ object MessageDecrypter { sodium.convertPublicKeyEd25519ToCurve25519(senderX25519PublicKey, senderED25519PublicKey) val id = SessionId(IdPrefix.STANDARD, senderX25519PublicKey) - return Pair(plaintext, id.hexString) + return Pair(plaintext, id.hexString()) } fun decryptBlinded( @@ -106,6 +106,6 @@ object MessageDecrypter { val senderX25519PublicKey = SodiumUtilities.toX25519(senderEdPublicKey) ?: throw Error.InvalidSignature val id = SessionId(IdPrefix.STANDARD, senderX25519PublicKey) - return Pair(plaintext, id.hexString) + return Pair(plaintext, id.hexString()) } } \ No newline at end of file diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiver.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiver.kt index 34022b7396..dd592c9ae7 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiver.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiver.kt @@ -13,13 +13,13 @@ import org.session.libsession.messaging.messages.control.SharedConfigurationMess import org.session.libsession.messaging.messages.control.TypingIndicator import org.session.libsession.messaging.messages.control.UnsendRequest import org.session.libsession.messaging.messages.visible.VisibleMessage -import org.session.libsession.messaging.utilities.SessionId import org.session.libsession.messaging.utilities.SodiumUtilities import org.session.libsession.snode.SnodeAPI import org.session.libsignal.crypto.PushTransportDetails import org.session.libsignal.protos.SignalServiceProtos import org.session.libsignal.utilities.IdPrefix import org.session.libsignal.utilities.Log +import org.session.libsignal.utilities.SessionId object MessageReceiver { @@ -146,7 +146,7 @@ object MessageReceiver { VisibleMessage.fromProto(proto) ?: run { throw Error.UnknownMessage } - val isUserBlindedSender = sender == openGroupPublicKey?.let { SodiumUtilities.blindedKeyPair(it, MessagingModuleConfiguration.shared.getUserED25519KeyPair()!!) }?.let { SessionId(IdPrefix.BLINDED, it.publicKey.asBytes).hexString } + val isUserBlindedSender = sender == openGroupPublicKey?.let { SodiumUtilities.blindedKeyPair(it, MessagingModuleConfiguration.shared.getUserED25519KeyPair()!!) }?.let { SessionId(IdPrefix.BLINDED, it.publicKey.asBytes).hexString() } // Ignore self send if needed if (!message.isSelfSendValid && (sender == userPublicKey || isUserBlindedSender)) { throw Error.SelfSend diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSender.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSender.kt index 3873f32edd..098abbda0e 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSender.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSender.kt @@ -22,7 +22,6 @@ import org.session.libsession.messaging.open_groups.OpenGroupApi import org.session.libsession.messaging.open_groups.OpenGroupApi.Capability import org.session.libsession.messaging.open_groups.OpenGroupMessage import org.session.libsession.messaging.utilities.MessageWrapper -import org.session.libsession.messaging.utilities.SessionId import org.session.libsession.messaging.utilities.SodiumUtilities import org.session.libsession.snode.RawResponsePromise import org.session.libsession.snode.SnodeAPI diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt index 436c961e0f..31e6993273 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt @@ -27,7 +27,6 @@ import org.session.libsession.messaging.sending_receiving.link_preview.LinkPrevi import org.session.libsession.messaging.sending_receiving.notifications.PushRegistryV1 import org.session.libsession.messaging.sending_receiving.pollers.ClosedGroupPollerV2 import org.session.libsession.messaging.sending_receiving.quotes.QuoteModel -import org.session.libsession.messaging.utilities.SessionId import org.session.libsession.messaging.utilities.SodiumUtilities import org.session.libsession.messaging.utilities.WebRtcUtils import org.session.libsession.snode.SnodeAPI @@ -47,6 +46,7 @@ import org.session.libsignal.protos.SignalServiceProtos.SharedConfigMessage import org.session.libsignal.utilities.Base64 import org.session.libsignal.utilities.IdPrefix import org.session.libsignal.utilities.Log +import org.session.libsignal.utilities.SessionId import org.session.libsignal.utilities.guava.Optional import org.session.libsignal.utilities.removingIdPrefixIfNeeded import org.session.libsignal.utilities.toHexString @@ -279,7 +279,7 @@ fun MessageReceiver.handleVisibleMessage( val blindedKey = SodiumUtilities.blindedKeyPair(openGroup.publicKey, MessagingModuleConfiguration.shared.getUserED25519KeyPair()!!) ?: return@let null SessionId( IdPrefix.BLINDED, blindedKey.publicKey.asBytes - ).hexString + ).hexString() } // Update profile if needed val recipient = Recipient.from(context, Address.fromSerialized(messageSender!!), false) @@ -424,7 +424,7 @@ fun MessageReceiver.handleOpenGroupReactions( val openGroup = storage.getOpenGroup(threadId) val blindedPublicKey = openGroup?.publicKey?.let { serverPublicKey -> SodiumUtilities.blindedKeyPair(serverPublicKey, MessagingModuleConfiguration.shared.getUserED25519KeyPair()!!) - ?.let { SessionId(IdPrefix.BLINDED, it.publicKey.asBytes).hexString } + ?.let { SessionId(IdPrefix.BLINDED, it.publicKey.asBytes).hexString() } } for ((emoji, reaction) in reactions) { val pendingUserReaction = OpenGroupApi.pendingReactions diff --git a/libsession/src/main/java/org/session/libsession/utilities/GroupUtil.kt b/libsession/src/main/java/org/session/libsession/utilities/GroupUtil.kt index 5b2a669248..7e43f11ff4 100644 --- a/libsession/src/main/java/org/session/libsession/utilities/GroupUtil.kt +++ b/libsession/src/main/java/org/session/libsession/utilities/GroupUtil.kt @@ -1,9 +1,9 @@ package org.session.libsession.utilities import org.session.libsession.messaging.open_groups.OpenGroup -import org.session.libsession.messaging.utilities.SessionId import org.session.libsignal.messages.SignalServiceGroup import org.session.libsignal.utilities.Hex +import org.session.libsignal.utilities.SessionId import java.io.IOException object GroupUtil { @@ -19,7 +19,7 @@ object GroupUtil { @JvmStatic fun getEncodedOpenGroupInboxID(openGroup: OpenGroup, sessionId: SessionId): Address { val openGroupInboxId = - "${openGroup.server}!${openGroup.publicKey}!${sessionId.hexString}".toByteArray() + "${openGroup.server}!${openGroup.publicKey}!${sessionId.hexString()}".toByteArray() return getEncodedOpenGroupInboxID(openGroupInboxId) } diff --git a/libsignal/src/main/java/org/session/libsignal/utilities/SessionId.kt b/libsignal/src/main/java/org/session/libsignal/utilities/SessionId.kt index d8bebbfb88..ede1f246b4 100644 --- a/libsignal/src/main/java/org/session/libsignal/utilities/SessionId.kt +++ b/libsignal/src/main/java/org/session/libsignal/utilities/SessionId.kt @@ -22,6 +22,4 @@ class SessionId { } fun hexString() = prefix?.value + publicKey - - fun bytes(): ByteArray = Hex.fromStringCondensed(prefix?.value + publicKey) } \ No newline at end of file