From 8f4b4aa160abf8e57a66bf080674c5cc253a8dd2 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Fri, 10 Jul 2026 10:50:54 -0400 Subject: [PATCH] Improve check for self. --- .../messages/protocol/BufferedIdentityKeyStore.kt | 11 +++++++---- .../protocol/BufferedSignalServiceAccountDataStore.kt | 4 ++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/protocol/BufferedIdentityKeyStore.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/protocol/BufferedIdentityKeyStore.kt index 5ba8d1bb48..573807bd63 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/protocol/BufferedIdentityKeyStore.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/protocol/BufferedIdentityKeyStore.kt @@ -1,19 +1,18 @@ package org.thoughtcrime.securesms.messages.protocol -import org.signal.core.models.ServiceId import org.signal.libsignal.protocol.IdentityKey import org.signal.libsignal.protocol.IdentityKeyPair import org.signal.libsignal.protocol.SignalProtocolAddress import org.signal.libsignal.protocol.state.IdentityKeyStore import org.signal.libsignal.protocol.state.IdentityKeyStore.IdentityChange import org.thoughtcrime.securesms.database.SignalDatabase +import org.thoughtcrime.securesms.keyvalue.SignalStore import org.whispersystems.signalservice.api.SignalServiceAccountDataStore /** * An in-memory identity key store that is intended to be used temporarily while decrypting messages. */ class BufferedIdentityKeyStore( - private val selfServiceId: ServiceId, private val selfIdentityKeyPair: IdentityKeyPair, private val selfRegistrationId: Int ) : IdentityKeyStore { @@ -45,8 +44,12 @@ class BufferedIdentityKeyStore( } override fun isTrustedIdentity(address: SignalProtocolAddress, identityKey: IdentityKey, direction: IdentityKeyStore.Direction): Boolean { - if (address.name == selfServiceId.toString()) { - return identityKey == selfIdentityKeyPair.publicKey + val isSelf = address.name == SignalStore.account.aci?.toString() || + address.name == SignalStore.account.pni?.toString() || + address.name == SignalStore.account.e164 + + if (isSelf) { + return identityKey == SignalStore.account.aciIdentityKey.publicKey } return when (direction) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/protocol/BufferedSignalServiceAccountDataStore.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/protocol/BufferedSignalServiceAccountDataStore.kt index 7745b6a6a2..b0d44efcca 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/protocol/BufferedSignalServiceAccountDataStore.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/protocol/BufferedSignalServiceAccountDataStore.kt @@ -26,9 +26,9 @@ import java.util.UUID class BufferedSignalServiceAccountDataStore(selfServiceId: ServiceId) : SignalServiceAccountDataStore { private val identityStore: BufferedIdentityKeyStore = if (selfServiceId == SignalStore.account.pni) { - BufferedIdentityKeyStore(selfServiceId, SignalStore.account.pniIdentityKey, SignalStore.account.pniRegistrationId) + BufferedIdentityKeyStore(SignalStore.account.pniIdentityKey, SignalStore.account.pniRegistrationId) } else { - BufferedIdentityKeyStore(selfServiceId, SignalStore.account.aciIdentityKey, SignalStore.account.registrationId) + BufferedIdentityKeyStore(SignalStore.account.aciIdentityKey, SignalStore.account.registrationId) } private val oneTimePreKeyStore: BufferedOneTimePreKeyStore = BufferedOneTimePreKeyStore(selfServiceId)