From 77cb9bc174a383ed82368e0bdff79423331d5d62 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Mon, 4 Oct 2021 13:52:32 -0400 Subject: [PATCH] Update SQLCipher to 4.4.3-S8 This reverts commit e01381379cfea8204d10adef0e1b1ce5f4c10fd5. --- .../database/FlipperSqlCipherAdapter.java | 6 +- .../securesms/backup/FullBackupExporter.java | 2 +- .../securesms/backup/FullBackupImporter.java | 2 +- .../securesms/database/DatabaseFactory.java | 6 +- .../securesms/database/JobDatabase.java | 22 ++----- .../securesms/database/KeyValueDatabase.java | 22 ++----- .../database/LocalMetricsDatabase.kt | 18 +++--- .../securesms/database/LogDatabase.kt | 18 +++--- .../securesms/database/MegaphoneDatabase.java | 20 ++---- .../securesms/database/MessageDatabase.java | 2 +- .../securesms/database/MmsDatabase.java | 2 +- .../securesms/database/MmsSmsDatabase.java | 2 +- .../database/PendingRetryReceiptDatabase.java | 2 +- .../securesms/database/RecipientDatabase.java | 2 +- .../securesms/database/SQLiteDatabase.java | 18 +++--- .../securesms/database/SessionDatabase.java | 2 +- .../securesms/database/SignalDatabase.java | 4 +- .../securesms/database/SmsDatabase.java | 2 +- .../securesms/database/SmsMigrator.java | 2 +- .../database/SqlCipherDatabaseHook.java | 21 +++---- .../SqlCipherDeletingErrorHandler.java | 5 +- .../database/SqlCipherErrorHandler.java | 4 +- .../helpers/PreKeyMigrationHelper.java | 2 +- .../helpers/RecipientIdCleanupHelper.java | 2 +- .../helpers/RecipientIdMigrationHelper.java | 2 +- .../helpers/SQLCipherMigrationHelper.java | 2 +- .../database/helpers/SQLCipherOpenHelper.java | 61 +++++++++---------- .../helpers/SessionStoreMigrationHelper.java | 2 +- .../newdevice/NewDeviceServerTask.java | 2 +- .../securesms/jobs/StorageSyncJob.java | 2 +- .../recipients/LiveRecipientCache.java | 2 +- .../fragments/RestoreBackupFragment.java | 2 +- .../thoughtcrime/securesms/util/SqlUtil.java | 2 +- .../securesms/MockAppDataInitializer.java | 2 +- .../testing/ProxySQLCipherOpenHelper.kt | 6 +- .../testing/ProxySignalSQLiteDatabase.kt | 10 +-- app/witness-verifications.gradle | 6 +- dependencies.gradle | 2 +- 38 files changed, 127 insertions(+), 164 deletions(-) diff --git a/app/src/flipper/java/org/thoughtcrime/securesms/database/FlipperSqlCipherAdapter.java b/app/src/flipper/java/org/thoughtcrime/securesms/database/FlipperSqlCipherAdapter.java index 43a6bc8e4b..df7819053a 100644 --- a/app/src/flipper/java/org/thoughtcrime/securesms/database/FlipperSqlCipherAdapter.java +++ b/app/src/flipper/java/org/thoughtcrime/securesms/database/FlipperSqlCipherAdapter.java @@ -11,9 +11,9 @@ import androidx.annotation.Nullable; import com.facebook.flipper.plugins.databases.DatabaseDescriptor; import com.facebook.flipper.plugins.databases.DatabaseDriver; -import net.sqlcipher.DatabaseUtils; -import net.sqlcipher.database.SQLiteDatabase; -import net.sqlcipher.database.SQLiteStatement; +import net.zetetic.database.DatabaseUtils; +import net.zetetic.database.sqlcipher.SQLiteDatabase; +import net.zetetic.database.sqlcipher.SQLiteStatement; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper; diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/FullBackupExporter.java b/app/src/main/java/org/thoughtcrime/securesms/backup/FullBackupExporter.java index 81ad11f5ce..a7fec0f3e4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/FullBackupExporter.java +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/FullBackupExporter.java @@ -13,7 +13,7 @@ import androidx.documentfile.provider.DocumentFile; import com.annimon.stream.function.Predicate; import com.google.protobuf.ByteString; -import net.sqlcipher.database.SQLiteDatabase; +import net.zetetic.database.sqlcipher.SQLiteDatabase; import org.greenrobot.eventbus.EventBus; import org.signal.core.util.Conversions; diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/FullBackupImporter.java b/app/src/main/java/org/thoughtcrime/securesms/backup/FullBackupImporter.java index f3230fea35..c07cb1a9e6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/FullBackupImporter.java +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/FullBackupImporter.java @@ -11,7 +11,7 @@ import android.util.Pair; import androidx.annotation.NonNull; -import net.sqlcipher.database.SQLiteDatabase; +import net.zetetic.database.sqlcipher.SQLiteDatabase; import org.greenrobot.eventbus.EventBus; import org.signal.core.util.Conversions; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/DatabaseFactory.java b/app/src/main/java/org/thoughtcrime/securesms/database/DatabaseFactory.java index b65025a707..c9f940641d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/DatabaseFactory.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/DatabaseFactory.java @@ -20,7 +20,7 @@ import android.content.Context; import androidx.annotation.NonNull; -import net.sqlcipher.database.SQLiteDatabase; +import net.zetetic.database.sqlcipher.SQLiteDatabase; import org.thoughtcrime.securesms.contacts.ContactsDatabase; import org.thoughtcrime.securesms.crypto.AttachmentSecret; @@ -214,7 +214,7 @@ public class DatabaseFactory { return getInstance(context).groupCallRingDatabase; } - public static net.sqlcipher.database.SQLiteDatabase getBackupDatabase(Context context) { + public static net.zetetic.database.sqlcipher.SQLiteDatabase getBackupDatabase(Context context) { return getInstance(context).databaseHelper.getRawReadableDatabase(); } @@ -304,7 +304,7 @@ public class DatabaseFactory { databaseHelper.getSignalWritableDatabase(); } - public net.sqlcipher.database.SQLiteDatabase getRawDatabase() { + public net.zetetic.database.sqlcipher.SQLiteDatabase getRawDatabase() { return databaseHelper.getRawWritableDatabase(); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/JobDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/JobDatabase.java index 3e6542b02c..f62975816b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/JobDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/JobDatabase.java @@ -9,9 +9,9 @@ import androidx.annotation.NonNull; import com.annimon.stream.Stream; -import net.sqlcipher.database.SQLiteDatabaseHook; -import net.sqlcipher.database.SQLiteOpenHelper; -import net.sqlcipher.database.SQLiteDatabase; +import net.zetetic.database.sqlcipher.SQLiteDatabaseHook; +import net.zetetic.database.sqlcipher.SQLiteOpenHelper; +import net.zetetic.database.sqlcipher.SQLiteDatabase; import org.signal.core.util.concurrent.SignalExecutors; import org.signal.core.util.logging.Log; @@ -89,8 +89,7 @@ public class JobDatabase extends SQLiteOpenHelper implements SignalDatabase { private static volatile JobDatabase instance; - private final Application application; - private final DatabaseSecret databaseSecret; + private final Application application; public static @NonNull JobDatabase getInstance(@NonNull Application context) { if (instance == null) { @@ -105,10 +104,9 @@ public class JobDatabase extends SQLiteOpenHelper implements SignalDatabase { } public JobDatabase(@NonNull Application application, @NonNull DatabaseSecret databaseSecret) { - super(application, DATABASE_NAME, null, DATABASE_VERSION, new SqlCipherDatabaseHook(), new SqlCipherErrorHandler(DATABASE_NAME)); + super(application, DATABASE_NAME, databaseSecret.asString(), null, DATABASE_VERSION, 0, new SqlCipherErrorHandler(DATABASE_NAME), new SqlCipherDatabaseHook()); - this.application = application; - this.databaseSecret = databaseSecret; + this.application = application; } @Override @@ -430,12 +428,4 @@ public class JobDatabase extends SQLiteOpenHelper implements SignalDatabase { } } } - - private SQLiteDatabase getReadableDatabase() { - return super.getReadableDatabase(databaseSecret.asString()); - } - - private SQLiteDatabase getWritableDatabase() { - return super.getWritableDatabase(databaseSecret.asString()); - } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/KeyValueDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/KeyValueDatabase.java index 2828c1e1ae..0d55a604ea 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/KeyValueDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/KeyValueDatabase.java @@ -6,9 +6,9 @@ import android.database.Cursor; import androidx.annotation.NonNull; -import net.sqlcipher.database.SQLiteDatabase; -import net.sqlcipher.database.SQLiteDatabaseHook; -import net.sqlcipher.database.SQLiteOpenHelper; +import net.zetetic.database.sqlcipher.SQLiteDatabase; +import net.zetetic.database.sqlcipher.SQLiteDatabaseHook; +import net.zetetic.database.sqlcipher.SQLiteOpenHelper; import org.signal.core.util.concurrent.SignalExecutors; import org.signal.core.util.logging.Log; @@ -47,8 +47,7 @@ public class KeyValueDatabase extends SQLiteOpenHelper implements SignalDatabase private static volatile KeyValueDatabase instance; - private final Application application; - private final DatabaseSecret databaseSecret; + private final Application application; public static @NonNull KeyValueDatabase getInstance(@NonNull Application context) { if (instance == null) { @@ -63,10 +62,9 @@ public class KeyValueDatabase extends SQLiteOpenHelper implements SignalDatabase } private KeyValueDatabase(@NonNull Application application, @NonNull DatabaseSecret databaseSecret) { - super(application, DATABASE_NAME, null, DATABASE_VERSION, new SqlCipherDatabaseHook(), new SqlCipherErrorHandler(DATABASE_NAME)); + super(application, DATABASE_NAME, databaseSecret.asString(), null, DATABASE_VERSION, 0,new SqlCipherErrorHandler(DATABASE_NAME), new SqlCipherDatabaseHook()); - this.application = application; - this.databaseSecret = databaseSecret; + this.application = application; } @Override @@ -223,14 +221,6 @@ public class KeyValueDatabase extends SQLiteOpenHelper implements SignalDatabase } } - private SQLiteDatabase getReadableDatabase() { - return super.getReadableDatabase(databaseSecret.asString()); - } - - private SQLiteDatabase getWritableDatabase() { - return super.getWritableDatabase(databaseSecret.asString()); - } - private enum Type { BLOB(0), BOOLEAN(1), FLOAT(2), INTEGER(3), LONG(4), STRING(5); diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/LocalMetricsDatabase.kt b/app/src/main/java/org/thoughtcrime/securesms/database/LocalMetricsDatabase.kt index 3dc5ec0b86..d223c76328 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/LocalMetricsDatabase.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/LocalMetricsDatabase.kt @@ -3,8 +3,8 @@ package org.thoughtcrime.securesms.database import android.annotation.SuppressLint import android.app.Application import android.content.ContentValues -import net.sqlcipher.database.SQLiteDatabase -import net.sqlcipher.database.SQLiteOpenHelper +import net.zetetic.database.sqlcipher.SQLiteDatabase +import net.zetetic.database.sqlcipher.SQLiteOpenHelper import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.crypto.DatabaseSecret import org.thoughtcrime.securesms.crypto.DatabaseSecretProvider @@ -25,14 +25,16 @@ import java.util.concurrent.TimeUnit */ class LocalMetricsDatabase private constructor( application: Application, - private val databaseSecret: DatabaseSecret + databaseSecret: DatabaseSecret ) : SQLiteOpenHelper( application, DATABASE_NAME, + databaseSecret.asString(), null, DATABASE_VERSION, - SqlCipherDatabaseHook(), - SqlCipherErrorHandler(DATABASE_NAME) + 0, + SqlCipherDeletingErrorHandler(DATABASE_NAME), + SqlCipherDatabaseHook() ), SignalDatabase { @@ -238,12 +240,6 @@ class LocalMetricsDatabase private constructor( } } - private val readableDatabase: SQLiteDatabase - get() = getReadableDatabase(databaseSecret.asString()) - - private val writableDatabase: SQLiteDatabase - get() = getWritableDatabase(databaseSecret.asString()) - data class EventMetrics( val name: String, val count: Long, diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/LogDatabase.kt b/app/src/main/java/org/thoughtcrime/securesms/database/LogDatabase.kt index 91af78f35b..a08273e02d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/LogDatabase.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/LogDatabase.kt @@ -4,8 +4,8 @@ import android.annotation.SuppressLint import android.app.Application import android.content.ContentValues import android.database.Cursor -import net.sqlcipher.database.SQLiteDatabase -import net.sqlcipher.database.SQLiteOpenHelper +import net.zetetic.database.sqlcipher.SQLiteDatabase +import net.zetetic.database.sqlcipher.SQLiteOpenHelper import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.crypto.DatabaseSecret import org.thoughtcrime.securesms.crypto.DatabaseSecretProvider @@ -27,14 +27,16 @@ import java.util.concurrent.TimeUnit */ class LogDatabase private constructor( application: Application, - private val databaseSecret: DatabaseSecret + databaseSecret: DatabaseSecret ) : SQLiteOpenHelper( application, DATABASE_NAME, + databaseSecret.asString(), null, DATABASE_VERSION, - SqlCipherDatabaseHook(), - SqlCipherErrorHandler(DATABASE_NAME) + 0, + SqlCipherDeletingErrorHandler(DATABASE_NAME), + SqlCipherDatabaseHook() ), SignalDatabase { @@ -226,12 +228,6 @@ class LogDatabase private constructor( } } - private val readableDatabase: SQLiteDatabase - get() = getReadableDatabase(databaseSecret.asString()) - - private val writableDatabase: SQLiteDatabase - get() = getWritableDatabase(databaseSecret.asString()) - interface Reader : Iterator, Closeable class CursorReader(private val cursor: Cursor) : Reader { diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MegaphoneDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/MegaphoneDatabase.java index 3aa2ed3fbf..1a3c240003 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MegaphoneDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MegaphoneDatabase.java @@ -6,8 +6,8 @@ import android.database.Cursor; import androidx.annotation.NonNull; -import net.sqlcipher.database.SQLiteDatabase; -import net.sqlcipher.database.SQLiteOpenHelper; +import net.zetetic.database.sqlcipher.SQLiteDatabase; +import net.zetetic.database.sqlcipher.SQLiteOpenHelper; import org.signal.core.util.concurrent.SignalExecutors; import org.signal.core.util.logging.Log; @@ -50,8 +50,7 @@ public class MegaphoneDatabase extends SQLiteOpenHelper implements SignalDatabas private static volatile MegaphoneDatabase instance; - private final Application application; - private final DatabaseSecret databaseSecret; + private final Application application; public static @NonNull MegaphoneDatabase getInstance(@NonNull Application context) { if (instance == null) { @@ -66,10 +65,9 @@ public class MegaphoneDatabase extends SQLiteOpenHelper implements SignalDatabas } public MegaphoneDatabase(@NonNull Application application, @NonNull DatabaseSecret databaseSecret) { - super(application, DATABASE_NAME, null, DATABASE_VERSION, new SqlCipherDatabaseHook(), new SqlCipherErrorHandler(DATABASE_NAME)); + super(application, DATABASE_NAME, databaseSecret.asString(), null, DATABASE_VERSION, 0, new SqlCipherErrorHandler(DATABASE_NAME), new SqlCipherDatabaseHook()); - this.application = application; - this.databaseSecret = databaseSecret; + this.application = application; } @Override @@ -220,12 +218,4 @@ public class MegaphoneDatabase extends SQLiteOpenHelper implements SignalDatabas } } } - - private SQLiteDatabase getReadableDatabase() { - return super.getReadableDatabase(databaseSecret.asString()); - } - - private SQLiteDatabase getWritableDatabase() { - return super.getWritableDatabase(databaseSecret.asString()); - } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MessageDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/MessageDatabase.java index 680ed0b7f5..e0d63fe910 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MessageDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MessageDatabase.java @@ -12,7 +12,7 @@ import com.annimon.stream.Stream; import com.google.android.mms.pdu_alt.NotificationInd; import com.google.protobuf.InvalidProtocolBufferException; -import net.sqlcipher.database.SQLiteStatement; +import net.zetetic.database.sqlcipher.SQLiteStatement; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.database.documents.Document; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MmsDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/MmsDatabase.java index 964c914737..10193292c4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MmsDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MmsDatabase.java @@ -29,7 +29,7 @@ import com.annimon.stream.Stream; import com.google.android.mms.pdu_alt.NotificationInd; import com.google.android.mms.pdu_alt.PduHeaders; -import net.sqlcipher.database.SQLiteStatement; +import net.zetetic.database.sqlcipher.SQLiteStatement; import org.json.JSONArray; import org.json.JSONException; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MmsSmsDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/MmsSmsDatabase.java index c302a75554..da8b6d5c2b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MmsSmsDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MmsSmsDatabase.java @@ -25,7 +25,7 @@ import androidx.annotation.VisibleForTesting; import com.annimon.stream.Stream; -import net.sqlcipher.database.SQLiteQueryBuilder; +import net.zetetic.database.sqlcipher.SQLiteQueryBuilder; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.database.MessageDatabase.SyncMessageId; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/PendingRetryReceiptDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/PendingRetryReceiptDatabase.java index 4a04d6abcb..7ecbf14142 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/PendingRetryReceiptDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/PendingRetryReceiptDatabase.java @@ -6,7 +6,7 @@ import android.database.Cursor; import androidx.annotation.NonNull; -import net.sqlcipher.database.SQLiteDatabase; +import net.zetetic.database.sqlcipher.SQLiteDatabase; import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper; import org.thoughtcrime.securesms.database.model.PendingRetryReceiptModel; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.java index 0dd80fe9e0..149f926f3f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.java @@ -14,7 +14,7 @@ import com.annimon.stream.Stream; import com.google.protobuf.ByteString; import com.google.protobuf.InvalidProtocolBufferException; -import net.sqlcipher.database.SQLiteConstraintException; +import net.zetetic.database.sqlcipher.SQLiteConstraintException; import org.jetbrains.annotations.NotNull; import org.signal.core.util.logging.Log; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SQLiteDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/SQLiteDatabase.java index 5a6719b1ac..943e1f5105 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SQLiteDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SQLiteDatabase.java @@ -4,9 +4,9 @@ package org.thoughtcrime.securesms.database; import android.content.ContentValues; import android.database.Cursor; -import net.sqlcipher.SQLException; -import net.sqlcipher.database.SQLiteStatement; -import net.sqlcipher.database.SQLiteTransactionListener; +import net.zetetic.database.SQLException; +import net.zetetic.database.sqlcipher.SQLiteStatement; +import net.zetetic.database.sqlcipher.SQLiteTransactionListener; import org.signal.core.util.tracing.Tracer; @@ -15,7 +15,7 @@ import java.util.Locale; import java.util.Map; /** - * This is a wrapper around {@link net.sqlcipher.database.SQLiteDatabase}. There's difficulties + * This is a wrapper around {@link net.zetetic.database.sqlcipher.SQLiteDatabase}. There's difficulties * making a subclass, so instead we just match the interface. Callers should just need to change * their import statements. */ @@ -34,10 +34,10 @@ public class SQLiteDatabase { private static final String NAME_LOCK = "LOCK"; - private final net.sqlcipher.database.SQLiteDatabase wrapped; + private final net.zetetic.database.sqlcipher.SQLiteDatabase wrapped; private final Tracer tracer; - public SQLiteDatabase(net.sqlcipher.database.SQLiteDatabase wrapped) { + public SQLiteDatabase(net.zetetic.database.sqlcipher.SQLiteDatabase wrapped) { this.wrapped = wrapped; this.tracer = Tracer.getInstance(); } @@ -98,7 +98,7 @@ public class SQLiteDatabase { return result; } - public net.sqlcipher.database.SQLiteDatabase getSqlCipherDatabase() { + public net.zetetic.database.sqlcipher.SQLiteDatabase getSqlCipherDatabase() { return wrapped; } @@ -129,7 +129,7 @@ public class SQLiteDatabase { return traceSql("query(9)", table, selection, false, () -> wrapped.query(distinct, table, columns, selection, selectionArgs, groupBy, having, orderBy, limit)); } - public Cursor queryWithFactory(net.sqlcipher.database.SQLiteDatabase.CursorFactory cursorFactory, boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) { + public Cursor queryWithFactory(net.zetetic.database.sqlcipher.SQLiteDatabase.CursorFactory cursorFactory, boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) { return traceSql("queryWithFactory()", table, selection, false, () -> wrapped.queryWithFactory(cursorFactory, distinct, table, columns, selection, selectionArgs, groupBy, having, orderBy, limit)); } @@ -149,7 +149,7 @@ public class SQLiteDatabase { return traceSql("rawQuery(2b)", sql, false,() -> wrapped.rawQuery(sql, args)); } - public Cursor rawQueryWithFactory(net.sqlcipher.database.SQLiteDatabase.CursorFactory cursorFactory, String sql, String[] selectionArgs, String editTable) { + public Cursor rawQueryWithFactory(net.zetetic.database.sqlcipher.SQLiteDatabase.CursorFactory cursorFactory, String sql, String[] selectionArgs, String editTable) { return traceSql("rawQueryWithFactory()", sql, false, () -> wrapped.rawQueryWithFactory(cursorFactory, sql, selectionArgs, editTable)); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SessionDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/SessionDatabase.java index 6d9f530d71..9395e2052c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SessionDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SessionDatabase.java @@ -7,7 +7,7 @@ import android.database.Cursor; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import net.sqlcipher.database.SQLiteStatement; +import net.zetetic.database.sqlcipher.SQLiteStatement; import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SignalDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/SignalDatabase.java index cdddadc1cd..ed278cbba4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SignalDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SignalDatabase.java @@ -1,10 +1,10 @@ package org.thoughtcrime.securesms.database; -import net.sqlcipher.database.SQLiteDatabase; +import net.zetetic.database.sqlcipher.SQLiteDatabase; /** * Simple interface for common methods across our various - * {@link net.sqlcipher.database.SQLiteOpenHelper}s. + * {@link net.zetetic.database.sqlcipher.SQLiteOpenHelper}s. */ public interface SignalDatabase { SQLiteDatabase getSqlCipherDatabase(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java index 45eb66b0d8..f1ad60b0e1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java @@ -29,7 +29,7 @@ import androidx.annotation.VisibleForTesting; import com.annimon.stream.Stream; import com.google.android.mms.pdu_alt.NotificationInd; -import net.sqlcipher.database.SQLiteStatement; +import net.zetetic.database.sqlcipher.SQLiteStatement; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.database.documents.IdentityKeyMismatch; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SmsMigrator.java b/app/src/main/java/org/thoughtcrime/securesms/database/SmsMigrator.java index 0c2665601f..49f48f8186 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SmsMigrator.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SmsMigrator.java @@ -25,7 +25,7 @@ import androidx.annotation.Nullable; import com.annimon.stream.Stream; -import net.sqlcipher.database.SQLiteStatement; +import net.zetetic.database.sqlcipher.SQLiteStatement; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.groups.GroupId; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherDatabaseHook.java b/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherDatabaseHook.java index a60319e845..a80c42a92b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherDatabaseHook.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherDatabaseHook.java @@ -1,7 +1,7 @@ package org.thoughtcrime.securesms.database; -import net.sqlcipher.database.SQLiteDatabase; -import net.sqlcipher.database.SQLiteDatabaseHook; +import net.zetetic.database.sqlcipher.SQLiteConnection; +import net.zetetic.database.sqlcipher.SQLiteDatabaseHook; /** * Standard hook for setting common SQLCipher PRAGMAs. @@ -9,18 +9,15 @@ import net.sqlcipher.database.SQLiteDatabaseHook; public class SqlCipherDatabaseHook implements SQLiteDatabaseHook { @Override - public void preKey(SQLiteDatabase db) { - db.rawExecSQL("PRAGMA cipher_default_kdf_iter = 1;"); - db.rawExecSQL("PRAGMA cipher_default_page_size = 4096;"); + public void preKey(SQLiteConnection connection) { + connection.execute("PRAGMA cipher_default_kdf_iter = 1;", null, null); + connection.execute("PRAGMA cipher_default_page_size = 4096;", null, null); } @Override - public void postKey(SQLiteDatabase db) { - db.rawExecSQL("PRAGMA cipher_compatibility = 3;"); - db.rawExecSQL("PRAGMA cipher_memory_security = OFF;"); - db.rawExecSQL("PRAGMA kdf_iter = '1';"); - db.rawExecSQL("PRAGMA cipher_page_size = 4096;"); - db.enableWriteAheadLogging(); - db.setForeignKeyConstraintsEnabled(true); + public void postKey(SQLiteConnection connection) { + connection.execute("PRAGMA cipher_compatibility = 3;", null, null); + connection.execute("PRAGMA kdf_iter = '1';", null, null); + connection.execute("PRAGMA cipher_page_size = 4096;", null, null); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherDeletingErrorHandler.java b/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherDeletingErrorHandler.java index 285ee5d1f4..4c392a4cff 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherDeletingErrorHandler.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherDeletingErrorHandler.java @@ -4,7 +4,8 @@ import android.database.Cursor; import androidx.annotation.NonNull; -import net.sqlcipher.DatabaseErrorHandler; +import net.zetetic.database.DatabaseErrorHandler; +import net.zetetic.database.sqlcipher.SQLiteDatabase; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; @@ -26,7 +27,7 @@ public final class SqlCipherDeletingErrorHandler implements DatabaseErrorHandler } @Override - public void onCorruption(net.sqlcipher.database.SQLiteDatabase db) { + public void onCorruption(SQLiteDatabase db) { Log.e(TAG, "Database '" + databaseName + "' corrupted! Going to try to run some diagnostics."); Log.w(TAG, " ===== PRAGMA integrity_check ====="); diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherErrorHandler.java b/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherErrorHandler.java index de285ba0a5..6fa02aeab7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherErrorHandler.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherErrorHandler.java @@ -4,8 +4,8 @@ import android.database.Cursor; import androidx.annotation.NonNull; -import net.sqlcipher.DatabaseErrorHandler; -import net.sqlcipher.database.SQLiteDatabase; +import net.zetetic.database.DatabaseErrorHandler; +import net.zetetic.database.sqlcipher.SQLiteDatabase; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.util.CursorUtil; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/PreKeyMigrationHelper.java b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/PreKeyMigrationHelper.java index 9e01aa77a0..cbe125e5be 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/PreKeyMigrationHelper.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/PreKeyMigrationHelper.java @@ -8,7 +8,7 @@ import androidx.annotation.NonNull; import com.fasterxml.jackson.annotation.JsonProperty; -import net.sqlcipher.database.SQLiteDatabase; +import net.zetetic.database.sqlcipher.SQLiteDatabase; import org.signal.core.util.Conversions; import org.signal.core.util.logging.Log; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/RecipientIdCleanupHelper.java b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/RecipientIdCleanupHelper.java index a3efc678dd..f70c41879e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/RecipientIdCleanupHelper.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/RecipientIdCleanupHelper.java @@ -5,7 +5,7 @@ import android.text.TextUtils; import androidx.annotation.NonNull; -import net.sqlcipher.database.SQLiteDatabase; +import net.zetetic.database.sqlcipher.SQLiteDatabase; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.util.DelimiterUtil; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/RecipientIdMigrationHelper.java b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/RecipientIdMigrationHelper.java index f1bf305e56..339ac045d6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/RecipientIdMigrationHelper.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/RecipientIdMigrationHelper.java @@ -7,7 +7,7 @@ import android.text.TextUtils; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import net.sqlcipher.database.SQLiteDatabase; +import net.zetetic.database.sqlcipher.SQLiteDatabase; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.groups.GroupId; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SQLCipherMigrationHelper.java b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SQLCipherMigrationHelper.java index 7ee5dee176..b74d0505ab 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SQLCipherMigrationHelper.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SQLCipherMigrationHelper.java @@ -12,7 +12,7 @@ import androidx.annotation.Nullable; import com.annimon.stream.function.BiFunction; -import net.sqlcipher.database.SQLiteDatabase; +import net.zetetic.database.sqlcipher.SQLiteDatabase; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.R; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java index 95e31ee05d..0e3501cfeb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java @@ -18,8 +18,8 @@ import com.annimon.stream.Stream; import com.bumptech.glide.Glide; import com.google.protobuf.InvalidProtocolBufferException; -import net.sqlcipher.database.SQLiteDatabase; -import net.sqlcipher.database.SQLiteOpenHelper; +import net.zetetic.database.sqlcipher.SQLiteDatabase; +import net.zetetic.database.sqlcipher.SQLiteOpenHelper; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.color.MaterialColor; @@ -31,7 +31,6 @@ import org.thoughtcrime.securesms.crypto.DatabaseSecret; import org.thoughtcrime.securesms.crypto.MasterSecret; import org.thoughtcrime.securesms.database.AttachmentDatabase; import org.thoughtcrime.securesms.database.ChatColorsDatabase; -import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.DraftDatabase; import org.thoughtcrime.securesms.database.EmojiSearchDatabase; import org.thoughtcrime.securesms.database.GroupCallRingDatabase; @@ -222,14 +221,12 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper implements SignalDatab private static final int DATABASE_VERSION = 118; private static final String DATABASE_NAME = "signal.db"; - private final Context context; - private final DatabaseSecret databaseSecret; + private final Context context; public SQLCipherOpenHelper(@NonNull Context context, @NonNull DatabaseSecret databaseSecret) { - super(context, DATABASE_NAME, null, DATABASE_VERSION, new SqlCipherDatabaseHook(), new SqlCipherErrorHandler(DATABASE_NAME)); + super(context, DATABASE_NAME, databaseSecret.asString(), null, DATABASE_VERSION, 0, new SqlCipherErrorHandler(DATABASE_NAME), new SqlCipherDatabaseHook()); - this.context = context.getApplicationContext(); - this.databaseSecret = databaseSecret; + this.context = context.getApplicationContext(); } @Override @@ -2063,33 +2060,35 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper implements SignalDatab Log.i(TAG, "Upgrade complete. Took " + (System.currentTimeMillis() - startTime) + " ms."); } - public net.sqlcipher.database.SQLiteDatabase getReadableDatabase() { + @Override + public net.zetetic.database.sqlcipher.SQLiteDatabase getReadableDatabase() { throw new UnsupportedOperationException("Call getSignalReadableDatabase() instead!"); } - public net.sqlcipher.database.SQLiteDatabase getWritableDatabase() { - throw new UnsupportedOperationException("Call getSignalReadableDatabase() instead!"); - } - - public net.sqlcipher.database.SQLiteDatabase getRawReadableDatabase() { - return super.getReadableDatabase(databaseSecret.asString()); - } - - public net.sqlcipher.database.SQLiteDatabase getRawWritableDatabase() { - return super.getWritableDatabase(databaseSecret.asString()); - } - - public org.thoughtcrime.securesms.database.SQLiteDatabase getSignalReadableDatabase() { - return new org.thoughtcrime.securesms.database.SQLiteDatabase(super.getReadableDatabase(databaseSecret.asString())); - } - - public org.thoughtcrime.securesms.database.SQLiteDatabase getSignalWritableDatabase() { - return new org.thoughtcrime.securesms.database.SQLiteDatabase(super.getWritableDatabase(databaseSecret.asString())); - } - @Override - public @NonNull net.sqlcipher.database.SQLiteDatabase getSqlCipherDatabase() { - return super.getWritableDatabase(databaseSecret.asString()); + public net.zetetic.database.sqlcipher.SQLiteDatabase getWritableDatabase() { + throw new UnsupportedOperationException("Call getSignalReadableDatabase() instead!"); + } + + public net.zetetic.database.sqlcipher.SQLiteDatabase getRawReadableDatabase() { + return super.getReadableDatabase(); + } + + public net.zetetic.database.sqlcipher.SQLiteDatabase getRawWritableDatabase() { + return super.getWritableDatabase(); + } + + public org.thoughtcrime.securesms.database.SQLiteDatabase getSignalReadableDatabase() { + return new org.thoughtcrime.securesms.database.SQLiteDatabase(super.getReadableDatabase()); + } + + public org.thoughtcrime.securesms.database.SQLiteDatabase getSignalWritableDatabase() { + return new org.thoughtcrime.securesms.database.SQLiteDatabase(super.getWritableDatabase()); + } + + @Override + public @NonNull net.zetetic.database.sqlcipher.SQLiteDatabase getSqlCipherDatabase() { + return super.getWritableDatabase(); } public void markCurrent(SQLiteDatabase db) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SessionStoreMigrationHelper.java b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SessionStoreMigrationHelper.java index 09b4db3890..ca91f9b599 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SessionStoreMigrationHelper.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SessionStoreMigrationHelper.java @@ -4,7 +4,7 @@ package org.thoughtcrime.securesms.database.helpers; import android.content.ContentValues; import android.content.Context; -import net.sqlcipher.database.SQLiteDatabase; +import net.zetetic.database.sqlcipher.SQLiteDatabase; import org.signal.core.util.Conversions; import org.signal.core.util.logging.Log; diff --git a/app/src/main/java/org/thoughtcrime/securesms/devicetransfer/newdevice/NewDeviceServerTask.java b/app/src/main/java/org/thoughtcrime/securesms/devicetransfer/newdevice/NewDeviceServerTask.java index bfb882954d..4220cc87da 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/devicetransfer/newdevice/NewDeviceServerTask.java +++ b/app/src/main/java/org/thoughtcrime/securesms/devicetransfer/newdevice/NewDeviceServerTask.java @@ -4,7 +4,7 @@ import android.content.Context; import androidx.annotation.NonNull; -import net.sqlcipher.database.SQLiteDatabase; +import net.zetetic.database.sqlcipher.SQLiteDatabase; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.java index a3ee3e62c2..2b09adfae1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.java @@ -6,7 +6,7 @@ import androidx.annotation.NonNull; import com.annimon.stream.Stream; -import net.sqlcipher.database.SQLiteDatabase; +import net.zetetic.database.sqlcipher.SQLiteDatabase; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.database.DatabaseFactory; diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipientCache.java b/app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipientCache.java index 50618ff77b..a934a48abd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipientCache.java +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipientCache.java @@ -7,7 +7,7 @@ import android.database.Cursor; import androidx.annotation.AnyThread; import androidx.annotation.NonNull; -import net.sqlcipher.database.SQLiteDatabase; +import net.zetetic.database.sqlcipher.SQLiteDatabase; import org.signal.core.util.concurrent.SignalExecutors; import org.signal.core.util.logging.Log; diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RestoreBackupFragment.java b/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RestoreBackupFragment.java index 527a40a2f0..12b364655d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RestoreBackupFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RestoreBackupFragment.java @@ -32,7 +32,7 @@ import androidx.navigation.Navigation; import com.dd.CircularProgressButton; -import net.sqlcipher.database.SQLiteDatabase; +import net.zetetic.database.sqlcipher.SQLiteDatabase; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/SqlUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/SqlUtil.java index f08d0f0ae3..3c9ec9b93e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/SqlUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/SqlUtil.java @@ -8,7 +8,7 @@ import androidx.annotation.VisibleForTesting; import com.annimon.stream.Stream; -import net.sqlcipher.database.SQLiteDatabase; +import net.zetetic.database.sqlcipher.SQLiteDatabase; import org.thoughtcrime.securesms.recipients.RecipientId; import org.whispersystems.libsignal.util.guava.Preconditions; diff --git a/app/src/mock/java/org/thoughtcrime/securesms/MockAppDataInitializer.java b/app/src/mock/java/org/thoughtcrime/securesms/MockAppDataInitializer.java index 7efe7fc9c3..e253cbbce1 100644 --- a/app/src/mock/java/org/thoughtcrime/securesms/MockAppDataInitializer.java +++ b/app/src/mock/java/org/thoughtcrime/securesms/MockAppDataInitializer.java @@ -5,7 +5,7 @@ import android.content.Context; import androidx.annotation.NonNull; -import net.sqlcipher.database.SQLiteDatabase; +import net.zetetic.database.sqlcipher.SQLiteDatabase; import org.signal.core.util.StreamUtil; import org.thoughtcrime.securesms.crypto.IdentityKeyUtil; diff --git a/app/src/test/java/org/thoughtcrime/securesms/testing/ProxySQLCipherOpenHelper.kt b/app/src/test/java/org/thoughtcrime/securesms/testing/ProxySQLCipherOpenHelper.kt index 05b74b1126..8541f6d92c 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/testing/ProxySQLCipherOpenHelper.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/testing/ProxySQLCipherOpenHelper.kt @@ -5,7 +5,7 @@ import org.thoughtcrime.securesms.crypto.DatabaseSecret import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper import java.security.SecureRandom import android.database.sqlite.SQLiteDatabase as AndroidSQLiteDatabase -import net.sqlcipher.database.SQLiteDatabase as SQLCipherSQLiteDatabase +import net.zetetic.database.sqlcipher.SQLiteDatabase as SQLCipherSQLiteDatabase import org.thoughtcrime.securesms.database.SQLiteDatabase as SignalSQLiteDatabase /** @@ -35,6 +35,10 @@ class ProxySQLCipherOpenHelper( throw UnsupportedOperationException() } + override fun onBeforeDelete(db: SQLCipherSQLiteDatabase?) { + throw UnsupportedOperationException() + } + override fun onDowngrade(db: SQLCipherSQLiteDatabase?, oldVersion: Int, newVersion: Int) { throw UnsupportedOperationException() } diff --git a/app/src/test/java/org/thoughtcrime/securesms/testing/ProxySignalSQLiteDatabase.kt b/app/src/test/java/org/thoughtcrime/securesms/testing/ProxySignalSQLiteDatabase.kt index 98fed3fee0..99d8fd4aa5 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/testing/ProxySignalSQLiteDatabase.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/testing/ProxySignalSQLiteDatabase.kt @@ -5,8 +5,8 @@ import android.database.Cursor import java.util.Locale import android.database.sqlite.SQLiteDatabase as AndroidSQLiteDatabase import android.database.sqlite.SQLiteTransactionListener as AndroidSQLiteTransactionListener -import net.sqlcipher.database.SQLiteStatement as SQLCipherSQLiteStatement -import net.sqlcipher.database.SQLiteTransactionListener as SQLCipherSQLiteTransactionListener +import net.zetetic.database.sqlcipher.SQLiteStatement as SQLCipherSQLiteStatement +import net.zetetic.database.sqlcipher.SQLiteTransactionListener as SQLCipherSQLiteTransactionListener import org.thoughtcrime.securesms.database.SQLiteDatabase as SignalSQLiteDatabase /** @@ -14,7 +14,7 @@ import org.thoughtcrime.securesms.database.SQLiteDatabase as SignalSQLiteDatabas * of SQLCipher. */ class ProxySignalSQLiteDatabase(private val database: AndroidSQLiteDatabase) : SignalSQLiteDatabase(null) { - override fun getSqlCipherDatabase(): net.sqlcipher.database.SQLiteDatabase { + override fun getSqlCipherDatabase(): net.zetetic.database.sqlcipher.SQLiteDatabase { throw UnsupportedOperationException() } @@ -35,7 +35,7 @@ class ProxySignalSQLiteDatabase(private val database: AndroidSQLiteDatabase) : S } override fun queryWithFactory( - cursorFactory: net.sqlcipher.database.SQLiteDatabase.CursorFactory?, + cursorFactory: net.zetetic.database.sqlcipher.SQLiteDatabase.CursorFactory?, distinct: Boolean, table: String?, columns: Array?, @@ -65,7 +65,7 @@ class ProxySignalSQLiteDatabase(private val database: AndroidSQLiteDatabase) : S return database.rawQuery(sql, args?.map(Any::toString)?.toTypedArray()) } - override fun rawQueryWithFactory(cursorFactory: net.sqlcipher.database.SQLiteDatabase.CursorFactory?, sql: String?, selectionArgs: Array?, editTable: String?): Cursor { + override fun rawQueryWithFactory(cursorFactory: net.zetetic.database.sqlcipher.SQLiteDatabase.CursorFactory?, sql: String?, selectionArgs: Array?, editTable: String?): Cursor { return database.rawQueryWithFactory(null, sql, selectionArgs, editTable) } diff --git a/app/witness-verifications.gradle b/app/witness-verifications.gradle index 7a6e3007b8..229b8ed3b2 100644 --- a/app/witness-verifications.gradle +++ b/app/witness-verifications.gradle @@ -513,9 +513,6 @@ dependencyVerification { ['mobi.upod:time-duration-picker:1.1.3', 'db469ce0f48dd96b892eac424ed76870e54bf00fe0a28cdcddfbe5f2a226a0e1'], - ['net.zetetic:android-database-sqlcipher:4.4.3', - '64cf472e3f6c3300fd7307aebb74dfff4eeb3805f138045c83362c7687e4af61'], - ['org.apache.httpcomponents:httpclient-android:4.3.5', '6f56466a9bd0d42934b90bfbfe9977a8b654c058bf44a12bdc2877c4e1f033f1'], @@ -579,6 +576,9 @@ dependencyVerification { ['org.signal:aesgcmprovider:0.0.3', '6eb4422e8a618b3b76cb2096a3619d251f9e27989dc68307a1e5414c3710f2d1'], + ['org.signal:android-database-sqlcipher:4.4.3-S8', + '2f08e950d2c37ff9fc97ef178f86215f3fa7b50dc7e5621a94f58180fa96ed81'], + ['org.signal:argon2:13.1', '0f686ccff0d4842bfcc74d92e8dc780a5f159b9376e37a1189fabbcdac458bef'], diff --git a/dependencies.gradle b/dependencies.gradle index 046994a7b4..404f541743 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -77,7 +77,7 @@ dependencyResolutionManagement { alias('signal-aesgcmprovider').to('org.signal:aesgcmprovider:0.0.3') alias('signal-argon2').to('org.signal:argon2:13.1') alias('signal-ringrtc').to('org.signal:ringrtc-android:2.13.3') - alias('signal-android-database-sqlcipher').to('net.zetetic:android-database-sqlcipher:4.4.3') + alias('signal-android-database-sqlcipher').to('org.signal:android-database-sqlcipher:4.4.3-S8') // Third Party alias('greenrobot-eventbus').to('org.greenrobot:eventbus:3.0.0')