From fce57f46a074ff2a8af1b9844428ba84fc9311ee Mon Sep 17 00:00:00 2001 From: Mikunj Date: Mon, 22 Jul 2019 12:09:34 +1000 Subject: [PATCH] More session reset. --- .../thoughtcrime/securesms/jobs/PushDecryptJob.java | 12 +++++++++--- .../securesms/loki/LokiPreKeyRecordDatabase.kt | 3 ++- .../securesms/loki/LokiThreadDatabase.kt | 8 ++++++++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java b/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java index 2d367764b6..3c15977cc5 100644 --- a/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java +++ b/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java @@ -64,6 +64,7 @@ import org.thoughtcrime.securesms.linkpreview.LinkPreviewUtil; import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.loki.LokiMessageFriendRequestDatabase; import org.thoughtcrime.securesms.loki.LokiPreKeyBundleDatabase; +import org.thoughtcrime.securesms.loki.LokiPreKeyRecordDatabase; import org.thoughtcrime.securesms.loki.LokiThreadDatabase; import org.thoughtcrime.securesms.mms.IncomingMediaMessage; import org.thoughtcrime.securesms.mms.MmsException; @@ -114,6 +115,8 @@ import org.whispersystems.signalservice.api.push.SignalServiceAddress; import org.whispersystems.signalservice.loki.crypto.LokiServiceCipher; import org.whispersystems.signalservice.loki.messaging.LokiMessageFriendRequestStatus; import org.whispersystems.signalservice.loki.messaging.LokiServiceMessage; +import org.whispersystems.signalservice.loki.messaging.LokiThreadDatabaseProtocol; +import org.whispersystems.signalservice.loki.messaging.LokiPreKeyRecordDatabaseProtocol; import org.whispersystems.signalservice.loki.messaging.LokiThreadFriendRequestStatus; import org.whispersystems.signalservice.loki.messaging.LokiThreadSessionResetState; @@ -240,8 +243,10 @@ public class PushDecryptJob extends BaseJob implements InjectableType { try { GroupDatabase groupDatabase = DatabaseFactory.getGroupDatabase(context); SignalProtocolStore axolotlStore = new SignalProtocolStoreImpl(context); + LokiThreadDatabaseProtocol lokiThreadDatabase = DatabaseFactory.getLokiThreadDatabase(context); + LokiPreKeyRecordDatabaseProtocol preKeyRecordDatabase = DatabaseFactory.getLokiPreKeyRecordDatabase(context); SignalServiceAddress localAddress = new SignalServiceAddress(TextSecurePreferences.getLocalNumber(context)); - LokiServiceCipher cipher = new LokiServiceCipher(localAddress, axolotlStore, UnidentifiedAccessUtil.getCertificateValidator()); + LokiServiceCipher cipher = new LokiServiceCipher(localAddress, axolotlStore, lokiThreadDatabase, preKeyRecordDatabase, UnidentifiedAccessUtil.getCertificateValidator()); /* Loki - Original code SignalServiceCipher cipher = new SignalServiceCipher(localAddress, axolotlStore, UnidentifiedAccessUtil.getCertificateValidator()); */ @@ -492,8 +497,9 @@ public class PushDecryptJob extends BaseJob implements InjectableType { long threadId = DatabaseFactory.getThreadDatabase(context).getThreadIdFor(recipient); if (!recipient.isGroupRecipient()) { - SessionStore sessionStore = new TextSecureSessionStore(context); - sessionStore.deleteAllSessions(recipient.getAddress().toPhoneString()); + // TODO: Handle session reset on sync messages +// SessionStore sessionStore = new TextSecureSessionStore(context); +// sessionStore.deleteAllSessions(recipient.getAddress().toPhoneString()); SecurityEvent.broadcastSecurityUpdateEvent(context); diff --git a/src/org/thoughtcrime/securesms/loki/LokiPreKeyRecordDatabase.kt b/src/org/thoughtcrime/securesms/loki/LokiPreKeyRecordDatabase.kt index bbad274387..989ae09632 100644 --- a/src/org/thoughtcrime/securesms/loki/LokiPreKeyRecordDatabase.kt +++ b/src/org/thoughtcrime/securesms/loki/LokiPreKeyRecordDatabase.kt @@ -7,8 +7,9 @@ import org.thoughtcrime.securesms.crypto.PreKeyUtil import org.thoughtcrime.securesms.database.Database import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper import org.whispersystems.libsignal.state.PreKeyRecord +import org.whispersystems.signalservice.loki.messaging.LokiPreKeyRecordDatabaseProtocol -class LokiPreKeyRecordDatabase(context: Context, helper: SQLCipherOpenHelper) : Database(context, helper) { +class LokiPreKeyRecordDatabase(context: Context, helper: SQLCipherOpenHelper) : Database(context, helper), LokiPreKeyRecordDatabaseProtocol { companion object { private val tableName = "loki_pre_key_record_database" diff --git a/src/org/thoughtcrime/securesms/loki/LokiThreadDatabase.kt b/src/org/thoughtcrime/securesms/loki/LokiThreadDatabase.kt index 988e9e1ded..670e574434 100644 --- a/src/org/thoughtcrime/securesms/loki/LokiThreadDatabase.kt +++ b/src/org/thoughtcrime/securesms/loki/LokiThreadDatabase.kt @@ -2,9 +2,11 @@ package org.thoughtcrime.securesms.loki import android.content.ContentValues import android.content.Context +import org.thoughtcrime.securesms.database.Address import org.thoughtcrime.securesms.database.Database import org.thoughtcrime.securesms.database.DatabaseFactory import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper +import org.thoughtcrime.securesms.recipients.Recipient import org.whispersystems.signalservice.loki.messaging.LokiThreadDatabaseProtocol import org.whispersystems.signalservice.loki.messaging.LokiThreadFriendRequestStatus import org.whispersystems.signalservice.loki.messaging.LokiThreadSessionResetState @@ -22,6 +24,12 @@ class LokiThreadDatabase(context: Context, helper: SQLCipherOpenHelper) : Databa @JvmStatic val createSessionResetTableCommand = "CREATE TABLE $sessionResetTableName ($threadID INTEGER PRIMARY KEY, $sessionResetState INTEGER DEFAULT 0);" } + override fun getThreadID(hexEncodePubKey: String): Long { + val address = Address.fromSerialized(hexEncodePubKey) + val recipient = Recipient.from(context, address, false) + return DatabaseFactory.getThreadDatabase(context).getThreadIdFor(recipient) + } + override fun getThreadID(messageID: Long): Long { return DatabaseFactory.getSmsDatabase(context).getThreadIdForMessage(messageID) }