Revert back to prod SQLCipher.

fork-5.53.8
Greyson Parrelli 2021-08-26 16:05:41 -04:00 zatwierdzone przez Cody Henthorne
rodzic d01a52c5a8
commit e01381379c
38 zmienionych plików z 151 dodań i 114 usunięć

Wyświetl plik

@ -11,9 +11,9 @@ import androidx.annotation.Nullable;
import com.facebook.flipper.plugins.databases.DatabaseDescriptor; import com.facebook.flipper.plugins.databases.DatabaseDescriptor;
import com.facebook.flipper.plugins.databases.DatabaseDriver; import com.facebook.flipper.plugins.databases.DatabaseDriver;
import net.zetetic.database.DatabaseUtils; import net.sqlcipher.DatabaseUtils;
import net.zetetic.database.sqlcipher.SQLiteDatabase; import net.sqlcipher.database.SQLiteDatabase;
import net.zetetic.database.sqlcipher.SQLiteStatement; import net.sqlcipher.database.SQLiteStatement;
import org.signal.core.util.logging.Log; import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper; import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper;

Wyświetl plik

@ -13,7 +13,7 @@ import androidx.documentfile.provider.DocumentFile;
import com.annimon.stream.function.Predicate; import com.annimon.stream.function.Predicate;
import com.google.protobuf.ByteString; import com.google.protobuf.ByteString;
import net.zetetic.database.sqlcipher.SQLiteDatabase; import net.sqlcipher.database.SQLiteDatabase;
import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.EventBus;
import org.signal.core.util.Conversions; import org.signal.core.util.Conversions;

Wyświetl plik

@ -11,7 +11,7 @@ import android.util.Pair;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import net.zetetic.database.sqlcipher.SQLiteDatabase; import net.sqlcipher.database.SQLiteDatabase;
import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.EventBus;
import org.signal.core.util.Conversions; import org.signal.core.util.Conversions;

Wyświetl plik

@ -20,7 +20,7 @@ import android.content.Context;
import androidx.annotation.NonNull; 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.contacts.ContactsDatabase;
import org.thoughtcrime.securesms.crypto.AttachmentSecret; import org.thoughtcrime.securesms.crypto.AttachmentSecret;
@ -214,7 +214,7 @@ public class DatabaseFactory {
return getInstance(context).groupCallRingDatabase; 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(); return getInstance(context).databaseHelper.getRawReadableDatabase();
} }
@ -304,7 +304,7 @@ public class DatabaseFactory {
databaseHelper.getSignalWritableDatabase(); databaseHelper.getSignalWritableDatabase();
} }
public net.zetetic.database.sqlcipher.SQLiteDatabase getRawDatabase() { public net.sqlcipher.database.SQLiteDatabase getRawDatabase() {
return databaseHelper.getRawWritableDatabase(); return databaseHelper.getRawWritableDatabase();
} }

Wyświetl plik

@ -9,9 +9,9 @@ import androidx.annotation.NonNull;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import net.zetetic.database.sqlcipher.SQLiteDatabaseHook; import net.sqlcipher.database.SQLiteDatabaseHook;
import net.zetetic.database.sqlcipher.SQLiteOpenHelper; import net.sqlcipher.database.SQLiteOpenHelper;
import net.zetetic.database.sqlcipher.SQLiteDatabase; import net.sqlcipher.database.SQLiteDatabase;
import org.signal.core.util.concurrent.SignalExecutors; import org.signal.core.util.concurrent.SignalExecutors;
import org.signal.core.util.logging.Log; import org.signal.core.util.logging.Log;
@ -90,6 +90,7 @@ public class JobDatabase extends SQLiteOpenHelper implements SignalDatabase {
private static volatile JobDatabase instance; 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) { public static @NonNull JobDatabase getInstance(@NonNull Application context) {
if (instance == null) { if (instance == null) {
@ -104,9 +105,10 @@ public class JobDatabase extends SQLiteOpenHelper implements SignalDatabase {
} }
public JobDatabase(@NonNull Application application, @NonNull DatabaseSecret databaseSecret) { 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 @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());
}
} }

Wyświetl plik

@ -6,9 +6,9 @@ import android.database.Cursor;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import net.zetetic.database.sqlcipher.SQLiteDatabase; import net.sqlcipher.database.SQLiteDatabase;
import net.zetetic.database.sqlcipher.SQLiteDatabaseHook; import net.sqlcipher.database.SQLiteDatabaseHook;
import net.zetetic.database.sqlcipher.SQLiteOpenHelper; import net.sqlcipher.database.SQLiteOpenHelper;
import org.signal.core.util.concurrent.SignalExecutors; import org.signal.core.util.concurrent.SignalExecutors;
import org.signal.core.util.logging.Log; import org.signal.core.util.logging.Log;
@ -48,6 +48,7 @@ public class KeyValueDatabase extends SQLiteOpenHelper implements SignalDatabase
private static volatile KeyValueDatabase instance; 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) { public static @NonNull KeyValueDatabase getInstance(@NonNull Application context) {
if (instance == null) { if (instance == null) {
@ -62,9 +63,10 @@ public class KeyValueDatabase extends SQLiteOpenHelper implements SignalDatabase
} }
private KeyValueDatabase(@NonNull Application application, @NonNull DatabaseSecret databaseSecret) { 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 @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 { private enum Type {
BLOB(0), BOOLEAN(1), FLOAT(2), INTEGER(3), LONG(4), STRING(5); BLOB(0), BOOLEAN(1), FLOAT(2), INTEGER(3), LONG(4), STRING(5);

Wyświetl plik

@ -3,8 +3,8 @@ package org.thoughtcrime.securesms.database
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.Application import android.app.Application
import android.content.ContentValues import android.content.ContentValues
import net.zetetic.database.sqlcipher.SQLiteDatabase import net.sqlcipher.database.SQLiteDatabase
import net.zetetic.database.sqlcipher.SQLiteOpenHelper import net.sqlcipher.database.SQLiteOpenHelper
import org.signal.core.util.logging.Log import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.crypto.DatabaseSecret import org.thoughtcrime.securesms.crypto.DatabaseSecret
import org.thoughtcrime.securesms.crypto.DatabaseSecretProvider import org.thoughtcrime.securesms.crypto.DatabaseSecretProvider
@ -25,16 +25,14 @@ import java.util.concurrent.TimeUnit
*/ */
class LocalMetricsDatabase private constructor( class LocalMetricsDatabase private constructor(
application: Application, application: Application,
databaseSecret: DatabaseSecret private val databaseSecret: DatabaseSecret
) : SQLiteOpenHelper( ) : SQLiteOpenHelper(
application, application,
DATABASE_NAME, DATABASE_NAME,
databaseSecret.asString(),
null, null,
DATABASE_VERSION, DATABASE_VERSION,
0, SqlCipherDatabaseHook(),
SqlCipherDeletingErrorHandler(DATABASE_NAME), SqlCipherErrorHandler(DATABASE_NAME)
SqlCipherDatabaseHook()
), ),
SignalDatabase { 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( data class EventMetrics(
val name: String, val name: String,
val count: Long, val count: Long,

Wyświetl plik

@ -4,8 +4,8 @@ import android.annotation.SuppressLint
import android.app.Application import android.app.Application
import android.content.ContentValues import android.content.ContentValues
import android.database.Cursor import android.database.Cursor
import net.zetetic.database.sqlcipher.SQLiteDatabase import net.sqlcipher.database.SQLiteDatabase
import net.zetetic.database.sqlcipher.SQLiteOpenHelper import net.sqlcipher.database.SQLiteOpenHelper
import org.signal.core.util.logging.Log import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.crypto.DatabaseSecret import org.thoughtcrime.securesms.crypto.DatabaseSecret
import org.thoughtcrime.securesms.crypto.DatabaseSecretProvider import org.thoughtcrime.securesms.crypto.DatabaseSecretProvider
@ -27,16 +27,14 @@ import java.util.concurrent.TimeUnit
*/ */
class LogDatabase private constructor( class LogDatabase private constructor(
application: Application, application: Application,
databaseSecret: DatabaseSecret private val databaseSecret: DatabaseSecret
) : SQLiteOpenHelper( ) : SQLiteOpenHelper(
application, application,
DATABASE_NAME, DATABASE_NAME,
databaseSecret.asString(),
null, null,
DATABASE_VERSION, DATABASE_VERSION,
0, SqlCipherDatabaseHook(),
SqlCipherDeletingErrorHandler(DATABASE_NAME), SqlCipherErrorHandler(DATABASE_NAME)
SqlCipherDatabaseHook()
), ),
SignalDatabase { 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<String>, Closeable interface Reader : Iterator<String>, Closeable
class CursorReader(private val cursor: Cursor) : Reader { class CursorReader(private val cursor: Cursor) : Reader {

Wyświetl plik

@ -6,8 +6,8 @@ import android.database.Cursor;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import net.zetetic.database.sqlcipher.SQLiteDatabase; import net.sqlcipher.database.SQLiteDatabase;
import net.zetetic.database.sqlcipher.SQLiteOpenHelper; import net.sqlcipher.database.SQLiteOpenHelper;
import org.signal.core.util.concurrent.SignalExecutors; import org.signal.core.util.concurrent.SignalExecutors;
import org.signal.core.util.logging.Log; import org.signal.core.util.logging.Log;
@ -51,6 +51,7 @@ public class MegaphoneDatabase extends SQLiteOpenHelper implements SignalDatabas
private static volatile MegaphoneDatabase instance; 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) { public static @NonNull MegaphoneDatabase getInstance(@NonNull Application context) {
if (instance == null) { if (instance == null) {
@ -65,9 +66,10 @@ public class MegaphoneDatabase extends SQLiteOpenHelper implements SignalDatabas
} }
public MegaphoneDatabase(@NonNull Application application, @NonNull DatabaseSecret databaseSecret) { 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 @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());
}
} }

Wyświetl plik

@ -12,7 +12,7 @@ import com.annimon.stream.Stream;
import com.google.android.mms.pdu_alt.NotificationInd; import com.google.android.mms.pdu_alt.NotificationInd;
import com.google.protobuf.InvalidProtocolBufferException; 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.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.database.documents.Document; import org.thoughtcrime.securesms.database.documents.Document;

Wyświetl plik

@ -29,7 +29,7 @@ import com.annimon.stream.Stream;
import com.google.android.mms.pdu_alt.NotificationInd; import com.google.android.mms.pdu_alt.NotificationInd;
import com.google.android.mms.pdu_alt.PduHeaders; 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.JSONArray;
import org.json.JSONException; import org.json.JSONException;

Wyświetl plik

@ -25,7 +25,7 @@ import androidx.annotation.VisibleForTesting;
import com.annimon.stream.Stream; 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.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.database.MessageDatabase.SyncMessageId; import org.thoughtcrime.securesms.database.MessageDatabase.SyncMessageId;

Wyświetl plik

@ -6,7 +6,7 @@ import android.database.Cursor;
import androidx.annotation.NonNull; 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.helpers.SQLCipherOpenHelper;
import org.thoughtcrime.securesms.database.model.PendingRetryReceiptModel; import org.thoughtcrime.securesms.database.model.PendingRetryReceiptModel;

Wyświetl plik

@ -14,7 +14,7 @@ import com.annimon.stream.Stream;
import com.google.protobuf.ByteString; import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException; import com.google.protobuf.InvalidProtocolBufferException;
import net.zetetic.database.sqlcipher.SQLiteConstraintException; import net.sqlcipher.database.SQLiteConstraintException;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.signal.core.util.logging.Log; import org.signal.core.util.logging.Log;

Wyświetl plik

@ -4,9 +4,9 @@ package org.thoughtcrime.securesms.database;
import android.content.ContentValues; import android.content.ContentValues;
import android.database.Cursor; import android.database.Cursor;
import net.zetetic.database.SQLException; import net.sqlcipher.SQLException;
import net.zetetic.database.sqlcipher.SQLiteStatement; import net.sqlcipher.database.SQLiteStatement;
import net.zetetic.database.sqlcipher.SQLiteTransactionListener; import net.sqlcipher.database.SQLiteTransactionListener;
import org.signal.core.util.tracing.Tracer; import org.signal.core.util.tracing.Tracer;
@ -15,7 +15,7 @@ import java.util.Locale;
import java.util.Map; 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 * making a subclass, so instead we just match the interface. Callers should just need to change
* their import statements. * their import statements.
*/ */
@ -34,10 +34,10 @@ public class SQLiteDatabase {
private static final String NAME_LOCK = "LOCK"; 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; private final Tracer tracer;
public SQLiteDatabase(net.zetetic.database.sqlcipher.SQLiteDatabase wrapped) { public SQLiteDatabase(net.sqlcipher.database.SQLiteDatabase wrapped) {
this.wrapped = wrapped; this.wrapped = wrapped;
this.tracer = Tracer.getInstance(); this.tracer = Tracer.getInstance();
} }
@ -98,7 +98,7 @@ public class SQLiteDatabase {
return result; return result;
} }
public net.zetetic.database.sqlcipher.SQLiteDatabase getSqlCipherDatabase() { public net.sqlcipher.database.SQLiteDatabase getSqlCipherDatabase() {
return wrapped; 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)); 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)); 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)); 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)); return traceSql("rawQueryWithFactory()", sql, false, () -> wrapped.rawQueryWithFactory(cursorFactory, sql, selectionArgs, editTable));
} }

Wyświetl plik

@ -7,7 +7,7 @@ import android.database.Cursor;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import net.zetetic.database.sqlcipher.SQLiteStatement; import net.sqlcipher.database.SQLiteStatement;
import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper; import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper;

Wyświetl plik

@ -1,10 +1,10 @@
package org.thoughtcrime.securesms.database; package org.thoughtcrime.securesms.database;
import net.zetetic.database.sqlcipher.SQLiteDatabase; import net.sqlcipher.database.SQLiteDatabase;
/** /**
* Simple interface for common methods across our various * Simple interface for common methods across our various
* {@link net.zetetic.database.sqlcipher.SQLiteOpenHelper}s. * {@link net.sqlcipher.database.SQLiteOpenHelper}s.
*/ */
public interface SignalDatabase { public interface SignalDatabase {
SQLiteDatabase getSqlCipherDatabase(); SQLiteDatabase getSqlCipherDatabase();

Wyświetl plik

@ -29,7 +29,7 @@ import androidx.annotation.VisibleForTesting;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import com.google.android.mms.pdu_alt.NotificationInd; 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.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.database.documents.IdentityKeyMismatch; import org.thoughtcrime.securesms.database.documents.IdentityKeyMismatch;

Wyświetl plik

@ -25,7 +25,7 @@ import androidx.annotation.Nullable;
import com.annimon.stream.Stream; 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.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.groups.GroupId; import org.thoughtcrime.securesms.groups.GroupId;

Wyświetl plik

@ -1,7 +1,7 @@
package org.thoughtcrime.securesms.database; package org.thoughtcrime.securesms.database;
import net.zetetic.database.sqlcipher.SQLiteConnection; import net.sqlcipher.database.SQLiteDatabase;
import net.zetetic.database.sqlcipher.SQLiteDatabaseHook; import net.sqlcipher.database.SQLiteDatabaseHook;
/** /**
* Standard hook for setting common SQLCipher PRAGMAs. * Standard hook for setting common SQLCipher PRAGMAs.
@ -9,15 +9,18 @@ import net.zetetic.database.sqlcipher.SQLiteDatabaseHook;
public class SqlCipherDatabaseHook implements SQLiteDatabaseHook { public class SqlCipherDatabaseHook implements SQLiteDatabaseHook {
@Override @Override
public void preKey(SQLiteConnection connection) { public void preKey(SQLiteDatabase db) {
connection.execute("PRAGMA cipher_default_kdf_iter = 1;", null, null); db.rawExecSQL("PRAGMA cipher_default_kdf_iter = 1;");
connection.execute("PRAGMA cipher_default_page_size = 4096;", null, null); db.rawExecSQL("PRAGMA cipher_default_page_size = 4096;");
} }
@Override @Override
public void postKey(SQLiteConnection connection) { public void postKey(SQLiteDatabase db) {
connection.execute("PRAGMA cipher_compatibility = 3;", null, null); db.rawExecSQL("PRAGMA cipher_compatibility = 3;");
connection.execute("PRAGMA kdf_iter = '1';", null, null); db.rawExecSQL("PRAGMA cipher_memory_security = OFF;");
connection.execute("PRAGMA cipher_page_size = 4096;", null, null); db.rawExecSQL("PRAGMA kdf_iter = '1';");
db.rawExecSQL("PRAGMA cipher_page_size = 4096;");
db.enableWriteAheadLogging();
db.setForeignKeyConstraintsEnabled(true);
} }
} }

Wyświetl plik

@ -4,8 +4,7 @@ import android.database.Cursor;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import net.zetetic.database.DatabaseErrorHandler; import net.sqlcipher.DatabaseErrorHandler;
import net.zetetic.database.sqlcipher.SQLiteDatabase;
import org.signal.core.util.logging.Log; import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
@ -27,7 +26,7 @@ public final class SqlCipherDeletingErrorHandler implements DatabaseErrorHandler
} }
@Override @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.e(TAG, "Database '" + databaseName + "' corrupted! Going to try to run some diagnostics.");
Log.w(TAG, " ===== PRAGMA integrity_check ====="); Log.w(TAG, " ===== PRAGMA integrity_check =====");

Wyświetl plik

@ -4,8 +4,8 @@ import android.database.Cursor;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import net.zetetic.database.DatabaseErrorHandler; import net.sqlcipher.DatabaseErrorHandler;
import net.zetetic.database.sqlcipher.SQLiteDatabase; import net.sqlcipher.database.SQLiteDatabase;
import org.signal.core.util.logging.Log; import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.util.CursorUtil; import org.thoughtcrime.securesms.util.CursorUtil;

Wyświetl plik

@ -8,7 +8,7 @@ import androidx.annotation.NonNull;
import com.fasterxml.jackson.annotation.JsonProperty; 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.Conversions;
import org.signal.core.util.logging.Log; import org.signal.core.util.logging.Log;

Wyświetl plik

@ -5,7 +5,7 @@ import android.text.TextUtils;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import net.zetetic.database.sqlcipher.SQLiteDatabase; import net.sqlcipher.database.SQLiteDatabase;
import org.signal.core.util.logging.Log; import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.util.DelimiterUtil; import org.thoughtcrime.securesms.util.DelimiterUtil;

Wyświetl plik

@ -7,7 +7,7 @@ import android.text.TextUtils;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import net.zetetic.database.sqlcipher.SQLiteDatabase; import net.sqlcipher.database.SQLiteDatabase;
import org.signal.core.util.logging.Log; import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.groups.GroupId; import org.thoughtcrime.securesms.groups.GroupId;

Wyświetl plik

@ -12,7 +12,7 @@ import androidx.annotation.Nullable;
import com.annimon.stream.function.BiFunction; 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.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.R;

Wyświetl plik

@ -18,8 +18,8 @@ import com.annimon.stream.Stream;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.google.protobuf.InvalidProtocolBufferException; import com.google.protobuf.InvalidProtocolBufferException;
import net.zetetic.database.sqlcipher.SQLiteDatabase; import net.sqlcipher.database.SQLiteDatabase;
import net.zetetic.database.sqlcipher.SQLiteOpenHelper; import net.sqlcipher.database.SQLiteOpenHelper;
import org.signal.core.util.logging.Log; import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.color.MaterialColor; 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.crypto.MasterSecret;
import org.thoughtcrime.securesms.database.AttachmentDatabase; import org.thoughtcrime.securesms.database.AttachmentDatabase;
import org.thoughtcrime.securesms.database.ChatColorsDatabase; import org.thoughtcrime.securesms.database.ChatColorsDatabase;
import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.DraftDatabase; import org.thoughtcrime.securesms.database.DraftDatabase;
import org.thoughtcrime.securesms.database.EmojiSearchDatabase; import org.thoughtcrime.securesms.database.EmojiSearchDatabase;
import org.thoughtcrime.securesms.database.GroupCallRingDatabase; import org.thoughtcrime.securesms.database.GroupCallRingDatabase;
@ -222,11 +223,13 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper implements SignalDatab
private static final String DATABASE_NAME = "signal.db"; 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) { 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 @Override
@ -2060,35 +2063,33 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper implements SignalDatab
Log.i(TAG, "Upgrade complete. Took " + (System.currentTimeMillis() - startTime) + " ms."); Log.i(TAG, "Upgrade complete. Took " + (System.currentTimeMillis() - startTime) + " ms.");
} }
@Override public net.sqlcipher.database.SQLiteDatabase getReadableDatabase() {
public net.zetetic.database.sqlcipher.SQLiteDatabase getReadableDatabase() {
throw new UnsupportedOperationException("Call getSignalReadableDatabase() instead!"); throw new UnsupportedOperationException("Call getSignalReadableDatabase() instead!");
} }
@Override public net.sqlcipher.database.SQLiteDatabase getWritableDatabase() {
public net.zetetic.database.sqlcipher.SQLiteDatabase getWritableDatabase() {
throw new UnsupportedOperationException("Call getSignalReadableDatabase() instead!"); throw new UnsupportedOperationException("Call getSignalReadableDatabase() instead!");
} }
public net.zetetic.database.sqlcipher.SQLiteDatabase getRawReadableDatabase() { public net.sqlcipher.database.SQLiteDatabase getRawReadableDatabase() {
return super.getReadableDatabase(); return super.getReadableDatabase(databaseSecret.asString());
} }
public net.zetetic.database.sqlcipher.SQLiteDatabase getRawWritableDatabase() { public net.sqlcipher.database.SQLiteDatabase getRawWritableDatabase() {
return super.getWritableDatabase(); return super.getWritableDatabase(databaseSecret.asString());
} }
public org.thoughtcrime.securesms.database.SQLiteDatabase getSignalReadableDatabase() { 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() { 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 @Override
public @NonNull net.zetetic.database.sqlcipher.SQLiteDatabase getSqlCipherDatabase() { public @NonNull net.sqlcipher.database.SQLiteDatabase getSqlCipherDatabase() {
return super.getWritableDatabase(); return super.getWritableDatabase(databaseSecret.asString());
} }
public void markCurrent(SQLiteDatabase db) { public void markCurrent(SQLiteDatabase db) {

Wyświetl plik

@ -4,7 +4,7 @@ package org.thoughtcrime.securesms.database.helpers;
import android.content.ContentValues; import android.content.ContentValues;
import android.content.Context; 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.Conversions;
import org.signal.core.util.logging.Log; import org.signal.core.util.logging.Log;

Wyświetl plik

@ -4,7 +4,7 @@ import android.content.Context;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import net.zetetic.database.sqlcipher.SQLiteDatabase; import net.sqlcipher.database.SQLiteDatabase;
import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.Subscribe;

Wyświetl plik

@ -6,7 +6,7 @@ import androidx.annotation.NonNull;
import com.annimon.stream.Stream; 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.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.DatabaseFactory;

Wyświetl plik

@ -7,7 +7,7 @@ import android.database.Cursor;
import androidx.annotation.AnyThread; import androidx.annotation.AnyThread;
import androidx.annotation.NonNull; 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.concurrent.SignalExecutors;
import org.signal.core.util.logging.Log; import org.signal.core.util.logging.Log;

Wyświetl plik

@ -32,7 +32,7 @@ import androidx.navigation.Navigation;
import com.dd.CircularProgressButton; import com.dd.CircularProgressButton;
import net.zetetic.database.sqlcipher.SQLiteDatabase; import net.sqlcipher.database.SQLiteDatabase;
import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.Subscribe;

Wyświetl plik

@ -8,7 +8,7 @@ import androidx.annotation.VisibleForTesting;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import net.zetetic.database.sqlcipher.SQLiteDatabase; import net.sqlcipher.database.SQLiteDatabase;
import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientId;
import org.whispersystems.libsignal.util.guava.Preconditions; import org.whispersystems.libsignal.util.guava.Preconditions;

Wyświetl plik

@ -5,7 +5,7 @@ import android.content.Context;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import net.zetetic.database.sqlcipher.SQLiteDatabase; import net.sqlcipher.database.SQLiteDatabase;
import org.signal.core.util.StreamUtil; import org.signal.core.util.StreamUtil;
import org.thoughtcrime.securesms.crypto.IdentityKeyUtil; import org.thoughtcrime.securesms.crypto.IdentityKeyUtil;

Wyświetl plik

@ -5,7 +5,7 @@ import org.thoughtcrime.securesms.crypto.DatabaseSecret
import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper
import java.security.SecureRandom import java.security.SecureRandom
import android.database.sqlite.SQLiteDatabase as AndroidSQLiteDatabase 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 import org.thoughtcrime.securesms.database.SQLiteDatabase as SignalSQLiteDatabase
/** /**
@ -35,10 +35,6 @@ class ProxySQLCipherOpenHelper(
throw UnsupportedOperationException() throw UnsupportedOperationException()
} }
override fun onBeforeDelete(db: SQLCipherSQLiteDatabase?) {
throw UnsupportedOperationException()
}
override fun onDowngrade(db: SQLCipherSQLiteDatabase?, oldVersion: Int, newVersion: Int) { override fun onDowngrade(db: SQLCipherSQLiteDatabase?, oldVersion: Int, newVersion: Int) {
throw UnsupportedOperationException() throw UnsupportedOperationException()
} }

Wyświetl plik

@ -5,8 +5,8 @@ import android.database.Cursor
import java.util.Locale import java.util.Locale
import android.database.sqlite.SQLiteDatabase as AndroidSQLiteDatabase import android.database.sqlite.SQLiteDatabase as AndroidSQLiteDatabase
import android.database.sqlite.SQLiteTransactionListener as AndroidSQLiteTransactionListener import android.database.sqlite.SQLiteTransactionListener as AndroidSQLiteTransactionListener
import net.zetetic.database.sqlcipher.SQLiteStatement as SQLCipherSQLiteStatement import net.sqlcipher.database.SQLiteStatement as SQLCipherSQLiteStatement
import net.zetetic.database.sqlcipher.SQLiteTransactionListener as SQLCipherSQLiteTransactionListener import net.sqlcipher.database.SQLiteTransactionListener as SQLCipherSQLiteTransactionListener
import org.thoughtcrime.securesms.database.SQLiteDatabase as SignalSQLiteDatabase import org.thoughtcrime.securesms.database.SQLiteDatabase as SignalSQLiteDatabase
/** /**
@ -14,7 +14,7 @@ import org.thoughtcrime.securesms.database.SQLiteDatabase as SignalSQLiteDatabas
* of SQLCipher. * of SQLCipher.
*/ */
class ProxySignalSQLiteDatabase(private val database: AndroidSQLiteDatabase) : SignalSQLiteDatabase(null) { 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() throw UnsupportedOperationException()
} }
@ -35,7 +35,7 @@ class ProxySignalSQLiteDatabase(private val database: AndroidSQLiteDatabase) : S
} }
override fun queryWithFactory( override fun queryWithFactory(
cursorFactory: net.zetetic.database.sqlcipher.SQLiteDatabase.CursorFactory?, cursorFactory: net.sqlcipher.database.SQLiteDatabase.CursorFactory?,
distinct: Boolean, distinct: Boolean,
table: String?, table: String?,
columns: Array<out 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()) return database.rawQuery(sql, args?.map(Any::toString)?.toTypedArray())
} }
override fun rawQueryWithFactory(cursorFactory: net.zetetic.database.sqlcipher.SQLiteDatabase.CursorFactory?, sql: String?, selectionArgs: Array<out String>?, editTable: String?): Cursor { override fun rawQueryWithFactory(cursorFactory: net.sqlcipher.database.SQLiteDatabase.CursorFactory?, sql: String?, selectionArgs: Array<out String>?, editTable: String?): Cursor {
return database.rawQueryWithFactory(null, sql, selectionArgs, editTable) return database.rawQueryWithFactory(null, sql, selectionArgs, editTable)
} }

Wyświetl plik

@ -513,6 +513,9 @@ dependencyVerification {
['mobi.upod:time-duration-picker:1.1.3', ['mobi.upod:time-duration-picker:1.1.3',
'db469ce0f48dd96b892eac424ed76870e54bf00fe0a28cdcddfbe5f2a226a0e1'], 'db469ce0f48dd96b892eac424ed76870e54bf00fe0a28cdcddfbe5f2a226a0e1'],
['net.zetetic:android-database-sqlcipher:4.4.3',
'64cf472e3f6c3300fd7307aebb74dfff4eeb3805f138045c83362c7687e4af61'],
['org.apache.httpcomponents:httpclient-android:4.3.5', ['org.apache.httpcomponents:httpclient-android:4.3.5',
'6f56466a9bd0d42934b90bfbfe9977a8b654c058bf44a12bdc2877c4e1f033f1'], '6f56466a9bd0d42934b90bfbfe9977a8b654c058bf44a12bdc2877c4e1f033f1'],
@ -570,9 +573,6 @@ dependencyVerification {
['org.signal:aesgcmprovider:0.0.3', ['org.signal:aesgcmprovider:0.0.3',
'6eb4422e8a618b3b76cb2096a3619d251f9e27989dc68307a1e5414c3710f2d1'], '6eb4422e8a618b3b76cb2096a3619d251f9e27989dc68307a1e5414c3710f2d1'],
['org.signal:android-database-sqlcipher:4.4.3-S3',
'a9d66fea3ac68c2b7f9889eaaecc655df43072c3d9b4db9f8981bd24868fb009'],
['org.signal:argon2:13.1', ['org.signal:argon2:13.1',
'0f686ccff0d4842bfcc74d92e8dc780a5f159b9376e37a1189fabbcdac458bef'], '0f686ccff0d4842bfcc74d92e8dc780a5f159b9376e37a1189fabbcdac458bef'],

Wyświetl plik

@ -76,7 +76,7 @@ dependencyResolutionManagement {
alias('signal-aesgcmprovider').to('org.signal:aesgcmprovider:0.0.3') alias('signal-aesgcmprovider').to('org.signal:aesgcmprovider:0.0.3')
alias('signal-argon2').to('org.signal:argon2:13.1') alias('signal-argon2').to('org.signal:argon2:13.1')
alias('signal-ringrtc').to('org.signal:ringrtc-android:2.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 // Third Party
alias('greenrobot-eventbus').to('org.greenrobot:eventbus:3.0.0') alias('greenrobot-eventbus').to('org.greenrobot:eventbus:3.0.0')