Просмотр исходного кода

Add support for SQLCipher protected databases

Iulian Onofrei лет назад: 9
Родитель
Сommit
a752203ff9

+ 4 - 0
Classes/FLEXManager.h

@@ -49,6 +49,10 @@
 
 #pragma mark - Extensions
 
+/// Default database password is @c nil by default.
+/// Set this to the password you want the databases to open with.
+@property (copy, nonatomic) NSString *defaultSqliteDatabasePassword;
+
 /// Adds an entry at the bottom of the list of Global State items. Call this method before this view controller is displayed.
 /// @param entryName The string to be displayed in the cell.
 /// @param objectFutureBlock When you tap on the row, information about the object returned by this block will be displayed.

+ 12 - 0
Classes/GlobalStateExplorers/DatabaseBrowser/FLEXSQLiteDatabaseManager.m

@@ -7,6 +7,7 @@
 //
 
 #import "FLEXSQLiteDatabaseManager.h"
+#import "FLEXManager.h"
 #import <sqlite3.h>
 
 
@@ -33,6 +34,17 @@ static NSString *const QUERY_TABLENAMES_SQL = @"SELECT name FROM sqlite_master W
         return YES;
     }
     int err = sqlite3_open([_databasePath UTF8String], &_db);
+
+#if SQLITE_HAS_CODEC
+    NSString *defaultSqliteDatabasePassword = [FLEXManager sharedManager].defaultSqliteDatabasePassword;
+
+    if (defaultSqliteDatabasePassword) {
+        const char *key = defaultSqliteDatabasePassword.UTF8String;
+
+        sqlite3_key(_db, key, (int)strlen(key));
+    }
+#endif
+
     if(err != SQLITE_OK) {
         NSLog(@"error opening!: %d", err);
         return NO;