Switch back to mainline SQLCipher.

fork-5.53.8
Greyson Parrelli 2021-08-26 16:05:41 -04:00
rodzic a2b6e003b6
commit faa36d417c
35 zmienionych plików z 141 dodań i 100 usunięć

Wyświetl plik

@ -509,7 +509,7 @@ dependencies {
implementation 'com.codewaves.stickyheadergrid:stickyheadergrid:0.9.4' implementation 'com.codewaves.stickyheadergrid:stickyheadergrid:0.9.4'
implementation 'com.github.dmytrodanylyk.circular-progress-button:library:1.1.3-S2' implementation 'com.github.dmytrodanylyk.circular-progress-button:library:1.1.3-S2'
implementation 'org.signal:android-database-sqlcipher:4.4.3-S1' implementation "net.zetetic:android-database-sqlcipher:4.4.3"
implementation "androidx.sqlite:sqlite:2.1.0" implementation "androidx.sqlite:sqlite:2.1.0"
implementation ('com.googlecode.ez-vcard:ez-vcard:0.9.11') { implementation ('com.googlecode.ez-vcard:ez-vcard:0.9.11') {

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
@ -29,12 +29,10 @@ class LocalMetricsDatabase private constructor(
) : SQLiteOpenHelper( ) : SQLiteOpenHelper(
application, application,
DATABASE_NAME, DATABASE_NAME,
databaseSecret.asString(),
null, null,
DATABASE_VERSION, DATABASE_VERSION,
0, SqlCipherDatabaseHook(),
SqlCipherErrorHandler(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
@ -32,12 +32,10 @@ class LogDatabase private constructor(
) : SQLiteOpenHelper( ) : SQLiteOpenHelper(
application, application,
DATABASE_NAME, DATABASE_NAME,
databaseSecret.asString(),
null, null,
DATABASE_VERSION, DATABASE_VERSION,
0, SqlCipherDatabaseHook(),
SqlCipherErrorHandler(DATABASE_NAME), SqlCipherErrorHandler(DATABASE_NAME)
SqlCipherDatabaseHook()
), ),
SignalDatabase { SignalDatabase {
@ -229,6 +227,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

@ -24,7 +24,7 @@ import androidx.annotation.Nullable;
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

@ -28,7 +28,7 @@ import androidx.annotation.Nullable;
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,16 +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 cipher_memory_security = OFF;", null, null); db.rawExecSQL("PRAGMA cipher_memory_security = OFF;");
connection.execute("PRAGMA kdf_iter = '1';", null, null); db.rawExecSQL("PRAGMA kdf_iter = '1';");
connection.execute("PRAGMA cipher_page_size = 4096;", null, null); db.rawExecSQL("PRAGMA cipher_page_size = 4096;");
db.enableWriteAheadLogging();
db.setForeignKeyConstraintsEnabled(true);
} }
} }

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;
@ -220,11 +221,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
@ -2049,35 +2052,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

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

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

@ -495,6 +495,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'],
@ -552,9 +555,6 @@ dependencyVerification {
['org.signal:aesgcmprovider:0.0.3', ['org.signal:aesgcmprovider:0.0.3',
'6eb4422e8a618b3b76cb2096a3619d251f9e27989dc68307a1e5414c3710f2d1'], '6eb4422e8a618b3b76cb2096a3619d251f9e27989dc68307a1e5414c3710f2d1'],
['org.signal:android-database-sqlcipher:4.4.3-S1',
'71080a72aa671856b769375f7be625625dc7f46605263113a5817de9dbc8b610'],
['org.signal:argon2:13.1', ['org.signal:argon2:13.1',
'0f686ccff0d4842bfcc74d92e8dc780a5f159b9376e37a1189fabbcdac458bef'], '0f686ccff0d4842bfcc74d92e8dc780a5f159b9376e37a1189fabbcdac458bef'],