Update SQLCipher to 4.4.3-S8

This reverts commit e01381379c.
This commit is contained in:
Greyson Parrelli
2021-10-04 13:52:32 -04:00
parent 309e33016a
commit 77cb9bc174
38 changed files with 127 additions and 164 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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();
}

View File

@@ -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());
}
}

View File

@@ -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);

View File

@@ -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,

View File

@@ -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<String>, Closeable
class CursorReader(private val cursor: Cursor) : Reader {

View File

@@ -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());
}
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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));
}

View File

@@ -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;

View File

@@ -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();

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);
}
}

View File

@@ -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 =====");

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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) {

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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()
}

View File

@@ -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<out String>?,
@@ -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<out String>?, editTable: String?): Cursor {
override fun rawQueryWithFactory(cursorFactory: net.zetetic.database.sqlcipher.SQLiteDatabase.CursorFactory?, sql: String?, selectionArgs: Array<out String>?, editTable: String?): Cursor {
return database.rawQueryWithFactory(null, sql, selectionArgs, editTable)
}

View File

@@ -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'],

View File

@@ -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')