/
SQLCipherManager.h
106 lines (89 loc) · 3.69 KB
/
SQLCipherManager.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
//
// SQLCipherManager.h
// Strip
//
// Created by Billy Gray on 12/30/09.
// Copyright 2009 Zetetic LLC. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <sqlite3.h>
#define ERR_SQLCIPHER_COMMAND_FAILED 1
extern NSString * const SQLCipherManagerCommandException;
extern NSString * const SQLCipherManagerUserInfoQueryKey;
@class SQLCipherManager;
@protocol SQLCipherManagerDelegate <NSObject>
@optional
- (void)didOpenDatabase;
- (void)didCreateDatabase;
- (void)didEncounterRekeyError;
- (void)didEncounterDatabaseError:(NSString *)error;
- (void)sqlCipherManagerWillRekeyDatabase;
- (void)sqlCipherManagerDidRekeyDatabase;
@end
@interface SQLCipherManager : NSObject {
sqlite3 *database;
BOOL inTransaction;
id delegate;
NSString *cachedPassword;
BOOL _useHMACPageProtection;
NSInteger _kdfIterations;
@private
NSURL *_databaseUrl;
}
@property (nonatomic) sqlite3 *database;
@property (nonatomic) BOOL inTransaction;
@property (nonatomic, assign) id<SQLCipherManagerDelegate> delegate;
@property (nonatomic, retain) NSString *cachedPassword;
@property (nonatomic, retain) NSString *databasePath;
@property (nonatomic, retain) NSURL *databaseUrl;
@property (nonatomic) BOOL useHMACPageProtection;
@property (nonatomic) NSInteger schemaVersion;
@property (nonatomic, readonly) BOOL isDatabaseUnlocked;
@property (nonatomic) NSInteger kdfIterations;
- (id)initWithURL:(NSURL *)absoluteUrl;
- (id)initWithPath:(NSString *)path; // DEPRECATED
+ (id)sharedManager;
+ (void)setSharedManager:(SQLCipherManager *)manager;
+ (BOOL)passwordIsValid:(NSString *)password;
- (NSNumber *)databaseSize;
// Open, Close, and Re-Key methods
- (void)createDatabaseWithPassword:(NSString *)password;
- (BOOL)openDatabaseWithPassword:(NSString *)password __attribute__((deprecated));
- (BOOL)openDatabaseWithCachedPassword;
- (BOOL)openDatabaseWithOptions:(NSString*)password cipher:(NSString*)cipher iterations:(NSInteger)iterations;
- (BOOL)openDatabaseWithOptions:(NSString*)password cipher:(NSString*)cipher iterations:(NSInteger)iterations withHMAC:(BOOL)useHMAC;
- (BOOL)openAndRekeyCFBDatabaseWithPassword:(NSString *)password __attribute__((deprecated));
- (BOOL)rekeyDatabaseWithPassword:(NSString *)password;
- (BOOL)rekeyDatabaseWithOptions:(NSString*)password
cipher:(NSString*)cipher
iterations:(NSInteger)iterations
error:(NSError **)error;
- (void)closeDatabase;
- (void)reallyCloseDatabase;
- (BOOL)reopenDatabase:(NSError **)error;
// Backup and File Location methods
- (NSString *)databaseDirectory;
- (BOOL)databaseExists;
- (NSString *)pathToDatabase;
- (NSString *)pathToRollbackDatabase;
- (NSString *)pathToRekeyDatabase;
- (BOOL)restoreDatabaseFromRollback:(NSError **)error;
- (BOOL)removeRollbackDatabase:(NSError **)error;
- (BOOL)restoreDatabaseFromFileAtPath:(NSString *)path error:(NSError **)error;
- (BOOL)createReplicaAtPath:(NSString *)path;
- (BOOL)createRollbackDatabase:(NSError **)error;
- (BOOL)copyDatabaseToPath:(NSString *)path error:(NSError **)error;
// Schema methods
- (NSInteger)getSchemaVersion __attribute__((deprecated)); // DEPRECATED, use schemaVersion dynamic property
// Query / Transaction methods
- (void)execute:(NSString *)sqlCommand; // throws an NSException on command failure
- (BOOL)execute:(NSString *)sqlCommand error:(NSError **)error;
- (void)execute:(NSString *)query withBlock:(void (^)(sqlite3_stmt *stmt))block;
- (void)beginTransaction;
- (void)commitTransaction;
- (void)rollbackTransaction;
- (void)transactionWithBlock:(void(^)(void))block;
- (NSString *)getScalarWith:(NSString *)query;
- (NSInteger)countForSQL:(NSString *)countSQL;
- (NSInteger)countForTable:(NSString *)tableName;
@end