@@ -17,7 +17,7 @@ static int sqlcipher_ltc_add_random(void *ctx, void *buffer, int length) {
17
17
18
18
static int sqlcipher_ltc_activate (void * ctx ) {
19
19
ltc_ctx * ltc = (ltc_ctx * )ctx ;
20
- int random_buffer_sz = 256 ;
20
+ int random_buffer_sz = 32 ;
21
21
unsigned char random_buffer [random_buffer_sz ];
22
22
23
23
if (ltc_init == 0 ) {
@@ -26,13 +26,16 @@ static int sqlcipher_ltc_activate(void *ctx) {
26
26
if (register_hash (& sha1_desc ) != CRYPT_OK ) return SQLITE_ERROR ;
27
27
ltc_init = 1 ;
28
28
}
29
-
30
- if (fortuna_start (& (ltc -> prng )) != CRYPT_OK ) return SQLITE_ERROR ;
29
+ if (fortuna_start (& (ltc -> prng )) != CRYPT_OK ) {
30
+ return SQLITE_ERROR ;
31
+ }
31
32
sqlite3_randomness (random_buffer_sz , & random_buffer );
32
33
if (sqlcipher_ltc_add_random (ctx , random_buffer , random_buffer_sz ) != SQLITE_OK ) {
33
34
return SQLITE_ERROR ;
34
35
}
35
- if (sqlcipher_ltc_add_random (ctx , & ltc , sizeof (ltc_ctx * )) != SQLITE_OK ) return SQLITE_ERROR ;
36
+ if (sqlcipher_ltc_add_random (ctx , & ltc , sizeof (ltc_ctx * )) != SQLITE_OK ) {
37
+ return SQLITE_ERROR ;
38
+ }
36
39
if (fortuna_ready (& (ltc -> prng )) != CRYPT_OK ) {
37
40
return SQLITE_ERROR ;
38
41
}
@@ -50,15 +53,8 @@ static const char* sqlcipher_ltc_get_provider_name(void *ctx) {
50
53
51
54
static int sqlcipher_ltc_random (void * ctx , void * buffer , int length ) {
52
55
ltc_ctx * ltc = (ltc_ctx * )ctx ;
53
- /*
54
- int random_buffer_sz = 256;
55
- char random_buffer[random_buffer_sz];
56
-
57
- sqlite3_randomness(random_buffer_sz, &random_buffer);
58
- if(sqlcipher_ltc_add_random(ctx, random_buffer, random_buffer_sz) != SQLITE_OK) {
59
- return SQLITE_ERROR;
60
- }
61
- */
56
+
57
+ fortuna_ready (& (ltc -> prng ));
62
58
fortuna_read (buffer , length , & (ltc -> prng ));
63
59
return SQLITE_OK ;
64
60
}
@@ -81,6 +77,7 @@ static int sqlcipher_ltc_kdf(void *ctx, const unsigned char *pass, int pass_sz,
81
77
unsigned long outlen = key_sz ;
82
78
unsigned long random_buffer_sz = 256 ;
83
79
char random_buffer [random_buffer_sz ];
80
+ ltc_ctx * ltc = (ltc_ctx * )ctx ;
84
81
85
82
hash_idx = find_hash ("sha1" );
86
83
if ((rc = pkcs_5_alg2 (pass , pass_sz , salt , salt_sz ,
@@ -136,7 +133,8 @@ static int sqlcipher_ltc_get_hmac_sz(void *ctx) {
136
133
}
137
134
138
135
static int sqlcipher_ltc_ctx_copy (void * target_ctx , void * source_ctx ) {
139
- return 1 ;
136
+ memcpy (target_ctx , source_ctx , sizeof (ltc_ctx ));
137
+ return SQLITE_OK ;
140
138
}
141
139
142
140
static int sqlcipher_ltc_ctx_cmp (void * c1 , void * c2 ) {
@@ -157,7 +155,7 @@ static int sqlcipher_ltc_ctx_free(void **ctx) {
157
155
}
158
156
159
157
int sqlcipher_ltc_setup (sqlcipher_provider * p ) {
160
- p -> activate = sqlcipher_ltc_activate ;
158
+ p -> activate = sqlcipher_ltc_activate ;
161
159
p -> deactivate = sqlcipher_ltc_deactivate ;
162
160
p -> get_provider_name = sqlcipher_ltc_get_provider_name ;
163
161
p -> random = sqlcipher_ltc_random ;
@@ -177,5 +175,4 @@ int sqlcipher_ltc_setup(sqlcipher_provider *p) {
177
175
p -> add_random = sqlcipher_ltc_add_random ;
178
176
}
179
177
180
-
181
178
#endif
0 commit comments