Skip to content

Commit b0b3428

Browse files
Add char[] for password to public interface to open database connections
1 parent ce580b5 commit b0b3428

File tree

2 files changed

+35
-5
lines changed

2 files changed

+35
-5
lines changed

src/net/sqlcipher/database/SQLiteDatabase.java

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -865,6 +865,10 @@ public Cursor newCursor(SQLiteDatabase db,
865865
* @throws SQLiteException if the database cannot be opened
866866
*/
867867
public static SQLiteDatabase openDatabase(String path, String password, CursorFactory factory, int flags, SQLiteDatabaseHook databaseHook) {
868+
return openDatabase(path, password.toCharArray(), factory, flags, databaseHook);
869+
}
870+
871+
public static SQLiteDatabase openDatabase(String path, char[] password, CursorFactory factory, int flags, SQLiteDatabaseHook databaseHook) {
868872
SQLiteDatabase sqliteDatabase = null;
869873
try {
870874
// Open the database.
@@ -899,6 +903,10 @@ public static SQLiteDatabase openOrCreateDatabase(String path, String password,
899903
return openDatabase(path, password, factory, CREATE_IF_NECESSARY, databaseHook);
900904
}
901905

906+
public static SQLiteDatabase openOrCreateDatabase(String path, char[] password, CursorFactory factory, SQLiteDatabaseHook databaseHook) {
907+
return openDatabase(path, password, factory, CREATE_IF_NECESSARY, databaseHook);
908+
}
909+
902910
/**
903911
* Equivalent to openDatabase(file.getPath(), factory, CREATE_IF_NECESSARY).
904912
*/
@@ -911,11 +919,19 @@ public static SQLiteDatabase openOrCreateDatabase(File file, String password, Cu
911919
*/
912920

913921
public static SQLiteDatabase openOrCreateDatabase(String path, String password, CursorFactory factory) {
914-
return openDatabase(path, password, factory, CREATE_IF_NECESSARY, null);
922+
return openDatabase(path, password.toCharArray(), factory, CREATE_IF_NECESSARY, null);
923+
}
924+
925+
public static SQLiteDatabase openOrCreateDatabase(String path, char[] password, CursorFactory factory) {
926+
return openDatabase(path, password, factory, CREATE_IF_NECESSARY, null);
915927
}
916928

917929
public static SQLiteDatabase openDatabase(String path, String password, CursorFactory factory, int flags) {
918-
return openDatabase(path, password, factory, CREATE_IF_NECESSARY, null);
930+
return openDatabase(path, password.toCharArray(), factory, CREATE_IF_NECESSARY, null);
931+
}
932+
933+
public static SQLiteDatabase openDatabase(String path, char[] password, CursorFactory factory, int flags) {
934+
return openDatabase(path, password, factory, CREATE_IF_NECESSARY, null);
919935
}
920936

921937
/**
@@ -931,9 +947,14 @@ public static SQLiteDatabase openDatabase(String path, String password, CursorFa
931947
*/
932948
public static SQLiteDatabase create(CursorFactory factory, String password) {
933949
// This is a magic string with special meaning for SQLite.
950+
return openDatabase(":memory:", password.toCharArray(), factory, CREATE_IF_NECESSARY);
951+
}
952+
953+
public static SQLiteDatabase create(CursorFactory factory, char[] password) {
934954
return openDatabase(":memory:", password, factory, CREATE_IF_NECESSARY);
935955
}
936956

957+
937958
/**
938959
* Close the database.
939960
*/
@@ -1895,7 +1916,7 @@ protected void finalize() {
18951916
}
18961917
}
18971918

1898-
public SQLiteDatabase(String path, String password, CursorFactory factory, int flags) {
1919+
public SQLiteDatabase(String path, char[] password, CursorFactory factory, int flags) {
18991920
this(path, password, factory, flags, null);
19001921
}
19011922

@@ -1907,7 +1928,7 @@ public SQLiteDatabase(String path, String password, CursorFactory factory, int f
19071928
* @param flags 0 or {@link #NO_LOCALIZED_COLLATORS}. If the database file already
19081929
* exists, mFlags will be updated appropriately.
19091930
*/
1910-
public SQLiteDatabase(String path, String password, CursorFactory factory, int flags, SQLiteDatabaseHook databaseHook) {
1931+
public SQLiteDatabase(String path, char[] password, CursorFactory factory, int flags, SQLiteDatabaseHook databaseHook) {
19111932

19121933
if (path == null) {
19131934
throw new IllegalArgumentException("path should not be null");
@@ -1924,7 +1945,7 @@ public SQLiteDatabase(String path, String password, CursorFactory factory, int f
19241945
databaseHook.preKey(this);
19251946
}
19261947

1927-
native_key(password.toCharArray());
1948+
native_key(password);
19281949

19291950
if(databaseHook != null){
19301951
databaseHook.postKey(this);

src/net/sqlcipher/database/SQLiteOpenHelper.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,12 @@ public SQLiteOpenHelper(Context context, String name, CursorFactory factory,
9494
* @throws SQLiteException if the database cannot be opened for writing
9595
* @return a read/write database object valid until {@link #close} is called
9696
*/
97+
9798
public synchronized SQLiteDatabase getWritableDatabase(String password) {
99+
return getWritableDatabase(password.toCharArray());
100+
}
101+
102+
public synchronized SQLiteDatabase getWritableDatabase(char[] password) {
98103
if (mDatabase != null && mDatabase.isOpen() && !mDatabase.isReadOnly()) {
99104
return mDatabase; // The database is already open for business
100105
}
@@ -176,6 +181,10 @@ public synchronized SQLiteDatabase getWritableDatabase(String password) {
176181
* or {@link #close} is called.
177182
*/
178183
public synchronized SQLiteDatabase getReadableDatabase(String password) {
184+
return getReadableDatabase(password.toCharArray());
185+
}
186+
187+
public synchronized SQLiteDatabase getReadableDatabase(char[] password) {
179188
if (mDatabase != null && mDatabase.isOpen()) {
180189
return mDatabase; // The database is already open for business
181190
}

0 commit comments

Comments
 (0)