kopia lustrzana https://github.com/ryukoposting/Signal-Android
Switch back to mainline SQLCipher with true WAL mode.
rodzic
0b53ba8950
commit
fa26eb2017
|
@ -509,7 +509,7 @@ dependencies {
|
|||
implementation 'com.codewaves.stickyheadergrid:stickyheadergrid:0.9.4'
|
||||
implementation 'com.github.dmytrodanylyk.circular-progress-button:library:1.1.3-S2'
|
||||
|
||||
implementation "net.zetetic:android-database-sqlcipher:4.4.3"
|
||||
implementation 'org.signal:android-database-sqlcipher:4.4.3-S2'
|
||||
implementation "androidx.sqlite:sqlite:2.1.0"
|
||||
|
||||
implementation ('com.googlecode.ez-vcard:ez-vcard:0.9.11') {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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
|
||||
|
@ -29,10 +29,12 @@ class LocalMetricsDatabase private constructor(
|
|||
) : SQLiteOpenHelper(
|
||||
application,
|
||||
DATABASE_NAME,
|
||||
databaseSecret.asString(),
|
||||
null,
|
||||
DATABASE_VERSION,
|
||||
SqlCipherDatabaseHook(),
|
||||
SqlCipherErrorHandler(DATABASE_NAME)
|
||||
0,
|
||||
SqlCipherErrorHandler(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,
|
||||
|
|
|
@ -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
|
||||
|
@ -32,10 +32,12 @@ class LogDatabase private constructor(
|
|||
) : SQLiteOpenHelper(
|
||||
application,
|
||||
DATABASE_NAME,
|
||||
databaseSecret.asString(),
|
||||
null,
|
||||
DATABASE_VERSION,
|
||||
SqlCipherDatabaseHook(),
|
||||
SqlCipherErrorHandler(DATABASE_NAME)
|
||||
0,
|
||||
SqlCipherErrorHandler(DATABASE_NAME),
|
||||
SqlCipherDatabaseHook()
|
||||
),
|
||||
SignalDatabase {
|
||||
|
||||
|
@ -227,12 +229,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 {
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -24,7 +24,7 @@ import androidx.annotation.Nullable;
|
|||
|
||||
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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -28,7 +28,7 @@ import androidx.annotation.Nullable;
|
|||
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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,16 @@ 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 cipher_memory_security = OFF;", null, null);
|
||||
connection.execute("PRAGMA kdf_iter = '1';", null, null);
|
||||
connection.execute("PRAGMA cipher_page_size = 4096;", null, null);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
@ -221,14 +220,12 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper implements SignalDatab
|
|||
private static final int DATABASE_VERSION = 117;
|
||||
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
|
||||
|
@ -2058,33 +2055,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) {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -36,7 +36,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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -495,9 +495,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'],
|
||||
|
||||
|
@ -555,6 +552,9 @@ dependencyVerification {
|
|||
['org.signal:aesgcmprovider:0.0.3',
|
||||
'6eb4422e8a618b3b76cb2096a3619d251f9e27989dc68307a1e5414c3710f2d1'],
|
||||
|
||||
['org.signal:android-database-sqlcipher:4.4.3-S2',
|
||||
'f76f42927c967dc7549cb857e953e97993957129e71caf367cb462c59f3b29fd'],
|
||||
|
||||
['org.signal:argon2:13.1',
|
||||
'0f686ccff0d4842bfcc74d92e8dc780a5f159b9376e37a1189fabbcdac458bef'],
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue