mirror of
https://github.com/oxen-io/session-android.git
synced 2025-12-30 15:46:30 +00:00
fix: compile errors and moving the references to sessionId and broken hex string function
This commit is contained in:
@@ -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())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -8,9 +8,6 @@
|
||||
#include "session/config/user_groups.hpp"
|
||||
#include <android/log.h>
|
||||
|
||||
#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");
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
)
|
||||
@@ -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(
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,4 @@ class SessionId {
|
||||
}
|
||||
|
||||
fun hexString() = prefix?.value + publicKey
|
||||
|
||||
fun bytes(): ByteArray = Hex.fromStringCondensed(prefix?.value + publicKey)
|
||||
}
|
||||
Reference in New Issue
Block a user