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 df7819053a..43a6bc8e4b 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.zetetic.database.DatabaseUtils; -import net.zetetic.database.sqlcipher.SQLiteDatabase; -import net.zetetic.database.sqlcipher.SQLiteStatement; +import net.sqlcipher.DatabaseUtils; +import net.sqlcipher.database.SQLiteDatabase; +import net.sqlcipher.database.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 a7fec0f3e4..81ad11f5ce 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.zetetic.database.sqlcipher.SQLiteDatabase; +import net.sqlcipher.database.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 c07cb1a9e6..f3230fea35 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.zetetic.database.sqlcipher.SQLiteDatabase; +import net.sqlcipher.database.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 c9f940641d..b65025a707 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.zetetic.database.sqlcipher.SQLiteDatabase; +import net.sqlcipher.database.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.zetetic.database.sqlcipher.SQLiteDatabase getBackupDatabase(Context context) { + public static net.sqlcipher.database.SQLiteDatabase getBackupDatabase(Context context) { return getInstance(context).databaseHelper.getRawReadableDatabase(); } @@ -304,7 +304,7 @@ public class DatabaseFactory { databaseHelper.getSignalWritableDatabase(); } - public net.zetetic.database.sqlcipher.SQLiteDatabase getRawDatabase() { + public net.sqlcipher.database.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 f62975816b..3e6542b02c 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.zetetic.database.sqlcipher.SQLiteDatabaseHook; -import net.zetetic.database.sqlcipher.SQLiteOpenHelper; -import net.zetetic.database.sqlcipher.SQLiteDatabase; +import net.sqlcipher.database.SQLiteDatabaseHook; +import net.sqlcipher.database.SQLiteOpenHelper; +import net.sqlcipher.database.SQLiteDatabase; import org.signal.core.util.concurrent.SignalExecutors; import org.signal.core.util.logging.Log; @@ -89,7 +89,8 @@ public class JobDatabase extends SQLiteOpenHelper implements SignalDatabase { private static volatile JobDatabase instance; - private final Application application; + private final Application application; + private final DatabaseSecret databaseSecret; public static @NonNull JobDatabase getInstance(@NonNull Application context) { if (instance == null) { @@ -104,9 +105,10 @@ public class JobDatabase extends SQLiteOpenHelper implements SignalDatabase { } public JobDatabase(@NonNull Application application, @NonNull DatabaseSecret databaseSecret) { - super(application, DATABASE_NAME, databaseSecret.asString(), null, DATABASE_VERSION, 0, new SqlCipherErrorHandler(DATABASE_NAME), new SqlCipherDatabaseHook()); + super(application, DATABASE_NAME, null, DATABASE_VERSION, new SqlCipherDatabaseHook(), new SqlCipherErrorHandler(DATABASE_NAME)); - this.application = application; + this.application = application; + this.databaseSecret = databaseSecret; } @Override @@ -428,4 +430,12 @@ 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 0d55a604ea..2828c1e1ae 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.zetetic.database.sqlcipher.SQLiteDatabase; -import net.zetetic.database.sqlcipher.SQLiteDatabaseHook; -import net.zetetic.database.sqlcipher.SQLiteOpenHelper; +import net.sqlcipher.database.SQLiteDatabase; +import net.sqlcipher.database.SQLiteDatabaseHook; +import net.sqlcipher.database.SQLiteOpenHelper; import org.signal.core.util.concurrent.SignalExecutors; import org.signal.core.util.logging.Log; @@ -47,7 +47,8 @@ public class KeyValueDatabase extends SQLiteOpenHelper implements SignalDatabase private static volatile KeyValueDatabase instance; - private final Application application; + private final Application application; + private final DatabaseSecret databaseSecret; public static @NonNull KeyValueDatabase getInstance(@NonNull Application context) { if (instance == null) { @@ -62,9 +63,10 @@ public class KeyValueDatabase extends SQLiteOpenHelper implements SignalDatabase } private KeyValueDatabase(@NonNull Application application, @NonNull DatabaseSecret databaseSecret) { - super(application, DATABASE_NAME, databaseSecret.asString(), null, DATABASE_VERSION, 0,new SqlCipherErrorHandler(DATABASE_NAME), new SqlCipherDatabaseHook()); + super(application, DATABASE_NAME, null, DATABASE_VERSION, new SqlCipherDatabaseHook(), new SqlCipherErrorHandler(DATABASE_NAME)); - this.application = application; + this.application = application; + this.databaseSecret = databaseSecret; } @Override @@ -221,6 +223,14 @@ 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 d223c76328..3dc5ec0b86 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.zetetic.database.sqlcipher.SQLiteDatabase -import net.zetetic.database.sqlcipher.SQLiteOpenHelper +import net.sqlcipher.database.SQLiteDatabase +import net.sqlcipher.database.SQLiteOpenHelper import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.crypto.DatabaseSecret import org.thoughtcrime.securesms.crypto.DatabaseSecretProvider @@ -25,16 +25,14 @@ import java.util.concurrent.TimeUnit */ class LocalMetricsDatabase private constructor( application: Application, - databaseSecret: DatabaseSecret + private val databaseSecret: DatabaseSecret ) : SQLiteOpenHelper( application, DATABASE_NAME, - databaseSecret.asString(), null, DATABASE_VERSION, - 0, - SqlCipherDeletingErrorHandler(DATABASE_NAME), - SqlCipherDatabaseHook() + SqlCipherDatabaseHook(), + SqlCipherErrorHandler(DATABASE_NAME) ), SignalDatabase { @@ -240,6 +238,12 @@ 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 a08273e02d..91af78f35b 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.zetetic.database.sqlcipher.SQLiteDatabase -import net.zetetic.database.sqlcipher.SQLiteOpenHelper +import net.sqlcipher.database.SQLiteDatabase +import net.sqlcipher.database.SQLiteOpenHelper import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.crypto.DatabaseSecret import org.thoughtcrime.securesms.crypto.DatabaseSecretProvider @@ -27,16 +27,14 @@ import java.util.concurrent.TimeUnit */ class LogDatabase private constructor( application: Application, - databaseSecret: DatabaseSecret + private val databaseSecret: DatabaseSecret ) : SQLiteOpenHelper( application, DATABASE_NAME, - databaseSecret.asString(), null, DATABASE_VERSION, - 0, - SqlCipherDeletingErrorHandler(DATABASE_NAME), - SqlCipherDatabaseHook() + SqlCipherDatabaseHook(), + SqlCipherErrorHandler(DATABASE_NAME) ), SignalDatabase { @@ -228,6 +226,12 @@ 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 1a3c240003..3aa2ed3fbf 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.zetetic.database.sqlcipher.SQLiteDatabase; -import net.zetetic.database.sqlcipher.SQLiteOpenHelper; +import net.sqlcipher.database.SQLiteDatabase; +import net.sqlcipher.database.SQLiteOpenHelper; import org.signal.core.util.concurrent.SignalExecutors; import org.signal.core.util.logging.Log; @@ -50,7 +50,8 @@ public class MegaphoneDatabase extends SQLiteOpenHelper implements SignalDatabas private static volatile MegaphoneDatabase instance; - private final Application application; + private final Application application; + private final DatabaseSecret databaseSecret; public static @NonNull MegaphoneDatabase getInstance(@NonNull Application context) { if (instance == null) { @@ -65,9 +66,10 @@ public class MegaphoneDatabase extends SQLiteOpenHelper implements SignalDatabas } public MegaphoneDatabase(@NonNull Application application, @NonNull DatabaseSecret databaseSecret) { - super(application, DATABASE_NAME, databaseSecret.asString(), null, DATABASE_VERSION, 0, new SqlCipherErrorHandler(DATABASE_NAME), new SqlCipherDatabaseHook()); + super(application, DATABASE_NAME, null, DATABASE_VERSION, new SqlCipherDatabaseHook(), new SqlCipherErrorHandler(DATABASE_NAME)); - this.application = application; + this.application = application; + this.databaseSecret = databaseSecret; } @Override @@ -218,4 +220,12 @@ 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 9756e10ee3..1c22b5b6b5 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.zetetic.database.sqlcipher.SQLiteStatement; +import net.sqlcipher.database.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 bf98461cd6..fd323ba6c8 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.zetetic.database.sqlcipher.SQLiteStatement; +import net.sqlcipher.database.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 da8b6d5c2b..c302a75554 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.zetetic.database.sqlcipher.SQLiteQueryBuilder; +import net.sqlcipher.database.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 7ecbf14142..4a04d6abcb 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.zetetic.database.sqlcipher.SQLiteDatabase; +import net.sqlcipher.database.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 4d6d8a4f66..de3056376f 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.zetetic.database.sqlcipher.SQLiteConstraintException; +import net.sqlcipher.database.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 943e1f5105..5a6719b1ac 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.zetetic.database.SQLException; -import net.zetetic.database.sqlcipher.SQLiteStatement; -import net.zetetic.database.sqlcipher.SQLiteTransactionListener; +import net.sqlcipher.SQLException; +import net.sqlcipher.database.SQLiteStatement; +import net.sqlcipher.database.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.zetetic.database.sqlcipher.SQLiteDatabase}. There's difficulties + * This is a wrapper around {@link net.sqlcipher.database.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.zetetic.database.sqlcipher.SQLiteDatabase wrapped; + private final net.sqlcipher.database.SQLiteDatabase wrapped; private final Tracer tracer; - public SQLiteDatabase(net.zetetic.database.sqlcipher.SQLiteDatabase wrapped) { + public SQLiteDatabase(net.sqlcipher.database.SQLiteDatabase wrapped) { this.wrapped = wrapped; this.tracer = Tracer.getInstance(); } @@ -98,7 +98,7 @@ public class SQLiteDatabase { return result; } - public net.zetetic.database.sqlcipher.SQLiteDatabase getSqlCipherDatabase() { + public net.sqlcipher.database.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.zetetic.database.sqlcipher.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.sqlcipher.database.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.zetetic.database.sqlcipher.SQLiteDatabase.CursorFactory cursorFactory, String sql, String[] selectionArgs, String editTable) { + public Cursor rawQueryWithFactory(net.sqlcipher.database.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 9395e2052c..6d9f530d71 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.zetetic.database.sqlcipher.SQLiteStatement; +import net.sqlcipher.database.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 ed278cbba4..cdddadc1cd 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.zetetic.database.sqlcipher.SQLiteDatabase; +import net.sqlcipher.database.SQLiteDatabase; /** * Simple interface for common methods across our various - * {@link net.zetetic.database.sqlcipher.SQLiteOpenHelper}s. + * {@link net.sqlcipher.database.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 829beb533f..4fba73cc3a 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.zetetic.database.sqlcipher.SQLiteStatement; +import net.sqlcipher.database.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 49f48f8186..0c2665601f 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.zetetic.database.sqlcipher.SQLiteStatement; +import net.sqlcipher.database.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 a80c42a92b..a60319e845 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.zetetic.database.sqlcipher.SQLiteConnection; -import net.zetetic.database.sqlcipher.SQLiteDatabaseHook; +import net.sqlcipher.database.SQLiteDatabase; +import net.sqlcipher.database.SQLiteDatabaseHook; /** * Standard hook for setting common SQLCipher PRAGMAs. @@ -9,15 +9,18 @@ import net.zetetic.database.sqlcipher.SQLiteDatabaseHook; public class SqlCipherDatabaseHook implements SQLiteDatabaseHook { @Override - 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); + public void preKey(SQLiteDatabase db) { + db.rawExecSQL("PRAGMA cipher_default_kdf_iter = 1;"); + db.rawExecSQL("PRAGMA cipher_default_page_size = 4096;"); } @Override - 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); + 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); } } 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 4c392a4cff..285ee5d1f4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherDeletingErrorHandler.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherDeletingErrorHandler.java @@ -4,8 +4,7 @@ import android.database.Cursor; import androidx.annotation.NonNull; -import net.zetetic.database.DatabaseErrorHandler; -import net.zetetic.database.sqlcipher.SQLiteDatabase; +import net.sqlcipher.DatabaseErrorHandler; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; @@ -27,7 +26,7 @@ public final class SqlCipherDeletingErrorHandler implements DatabaseErrorHandler } @Override - public void onCorruption(SQLiteDatabase db) { + public void onCorruption(net.sqlcipher.database.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 6fa02aeab7..de285ba0a5 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.zetetic.database.DatabaseErrorHandler; -import net.zetetic.database.sqlcipher.SQLiteDatabase; +import net.sqlcipher.DatabaseErrorHandler; +import net.sqlcipher.database.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 cbe125e5be..9e01aa77a0 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.zetetic.database.sqlcipher.SQLiteDatabase; +import net.sqlcipher.database.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 f70c41879e..a3efc678dd 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.zetetic.database.sqlcipher.SQLiteDatabase; +import net.sqlcipher.database.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 339ac045d6..f1bf305e56 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.zetetic.database.sqlcipher.SQLiteDatabase; +import net.sqlcipher.database.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 b74d0505ab..7ee5dee176 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.zetetic.database.sqlcipher.SQLiteDatabase; +import net.sqlcipher.database.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 0e3501cfeb..95e31ee05d 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.zetetic.database.sqlcipher.SQLiteDatabase; -import net.zetetic.database.sqlcipher.SQLiteOpenHelper; +import net.sqlcipher.database.SQLiteDatabase; +import net.sqlcipher.database.SQLiteOpenHelper; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.color.MaterialColor; @@ -31,6 +31,7 @@ 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; @@ -221,12 +222,14 @@ 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 Context context; + private final DatabaseSecret databaseSecret; public SQLCipherOpenHelper(@NonNull Context context, @NonNull DatabaseSecret databaseSecret) { - super(context, DATABASE_NAME, databaseSecret.asString(), null, DATABASE_VERSION, 0, new SqlCipherErrorHandler(DATABASE_NAME), new SqlCipherDatabaseHook()); + super(context, DATABASE_NAME, null, DATABASE_VERSION, new SqlCipherDatabaseHook(), new SqlCipherErrorHandler(DATABASE_NAME)); - this.context = context.getApplicationContext(); + this.context = context.getApplicationContext(); + this.databaseSecret = databaseSecret; } @Override @@ -2060,35 +2063,33 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper implements SignalDatab Log.i(TAG, "Upgrade complete. Took " + (System.currentTimeMillis() - startTime) + " ms."); } - @Override - public net.zetetic.database.sqlcipher.SQLiteDatabase getReadableDatabase() { + public net.sqlcipher.database.SQLiteDatabase getReadableDatabase() { throw new UnsupportedOperationException("Call getSignalReadableDatabase() instead!"); } - @Override - public net.zetetic.database.sqlcipher.SQLiteDatabase getWritableDatabase() { + public net.sqlcipher.database.SQLiteDatabase getWritableDatabase() { throw new UnsupportedOperationException("Call getSignalReadableDatabase() instead!"); } - public net.zetetic.database.sqlcipher.SQLiteDatabase getRawReadableDatabase() { - return super.getReadableDatabase(); + public net.sqlcipher.database.SQLiteDatabase getRawReadableDatabase() { + return super.getReadableDatabase(databaseSecret.asString()); } - public net.zetetic.database.sqlcipher.SQLiteDatabase getRawWritableDatabase() { - return super.getWritableDatabase(); + 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()); + 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()); + return new org.thoughtcrime.securesms.database.SQLiteDatabase(super.getWritableDatabase(databaseSecret.asString())); } @Override - public @NonNull net.zetetic.database.sqlcipher.SQLiteDatabase getSqlCipherDatabase() { - return super.getWritableDatabase(); + public @NonNull net.sqlcipher.database.SQLiteDatabase getSqlCipherDatabase() { + return super.getWritableDatabase(databaseSecret.asString()); } 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 ca91f9b599..09b4db3890 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.zetetic.database.sqlcipher.SQLiteDatabase; +import net.sqlcipher.database.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 4220cc87da..bfb882954d 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.zetetic.database.sqlcipher.SQLiteDatabase; +import net.sqlcipher.database.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 2b09adfae1..a3ee3e62c2 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.zetetic.database.sqlcipher.SQLiteDatabase; +import net.sqlcipher.database.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 a934a48abd..50618ff77b 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.zetetic.database.sqlcipher.SQLiteDatabase; +import net.sqlcipher.database.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 12b364655d..527a40a2f0 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.zetetic.database.sqlcipher.SQLiteDatabase; +import net.sqlcipher.database.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 3c9ec9b93e..f08d0f0ae3 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.zetetic.database.sqlcipher.SQLiteDatabase; +import net.sqlcipher.database.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 e253cbbce1..7efe7fc9c3 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.zetetic.database.sqlcipher.SQLiteDatabase; +import net.sqlcipher.database.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 8541f6d92c..05b74b1126 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.zetetic.database.sqlcipher.SQLiteDatabase as SQLCipherSQLiteDatabase +import net.sqlcipher.database.SQLiteDatabase as SQLCipherSQLiteDatabase import org.thoughtcrime.securesms.database.SQLiteDatabase as SignalSQLiteDatabase /** @@ -35,10 +35,6 @@ 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 99d8fd4aa5..98fed3fee0 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.zetetic.database.sqlcipher.SQLiteStatement as SQLCipherSQLiteStatement -import net.zetetic.database.sqlcipher.SQLiteTransactionListener as SQLCipherSQLiteTransactionListener +import net.sqlcipher.database.SQLiteStatement as SQLCipherSQLiteStatement +import net.sqlcipher.database.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.zetetic.database.sqlcipher.SQLiteDatabase { + override fun getSqlCipherDatabase(): net.sqlcipher.database.SQLiteDatabase { throw UnsupportedOperationException() } @@ -35,7 +35,7 @@ class ProxySignalSQLiteDatabase(private val database: AndroidSQLiteDatabase) : S } override fun queryWithFactory( - cursorFactory: net.zetetic.database.sqlcipher.SQLiteDatabase.CursorFactory?, + cursorFactory: net.sqlcipher.database.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.zetetic.database.sqlcipher.SQLiteDatabase.CursorFactory?, sql: String?, selectionArgs: Array?, editTable: String?): Cursor { + override fun rawQueryWithFactory(cursorFactory: net.sqlcipher.database.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 cf33df6296..d6cfdbf46a 100644 --- a/app/witness-verifications.gradle +++ b/app/witness-verifications.gradle @@ -513,6 +513,9 @@ 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'], @@ -570,9 +573,6 @@ dependencyVerification { ['org.signal:aesgcmprovider:0.0.3', '6eb4422e8a618b3b76cb2096a3619d251f9e27989dc68307a1e5414c3710f2d1'], - ['org.signal:android-database-sqlcipher:4.4.3-S3', - 'a9d66fea3ac68c2b7f9889eaaecc655df43072c3d9b4db9f8981bd24868fb009'], - ['org.signal:argon2:13.1', '0f686ccff0d4842bfcc74d92e8dc780a5f159b9376e37a1189fabbcdac458bef'], diff --git a/dependencies.gradle b/dependencies.gradle index a76907b82b..61487d4d27 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -76,7 +76,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.1') - alias('signal-android-database-sqlcipher').to('org.signal:android-database-sqlcipher:4.4.3-S3') + alias('signal-android-database-sqlcipher').to('net.zetetic:android-database-sqlcipher:4.4.3') // Third Party alias('greenrobot-eventbus').to('org.greenrobot:eventbus:3.0.0')