@@ -17,7 +17,7 @@ static int sqlcipher_ltc_add_random(void *ctx, void *buffer, int length) {
1717
1818static int sqlcipher_ltc_activate (void * ctx ) {
1919 ltc_ctx * ltc = (ltc_ctx * )ctx ;
20- int random_buffer_sz = 256 ;
20+ int random_buffer_sz = 32 ;
2121 unsigned char random_buffer [random_buffer_sz ];
2222
2323 if (ltc_init == 0 ) {
@@ -26,13 +26,16 @@ static int sqlcipher_ltc_activate(void *ctx) {
2626 if (register_hash (& sha1_desc ) != CRYPT_OK ) return SQLITE_ERROR ;
2727 ltc_init = 1 ;
2828 }
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+ }
3132 sqlite3_randomness (random_buffer_sz , & random_buffer );
3233 if (sqlcipher_ltc_add_random (ctx , random_buffer , random_buffer_sz ) != SQLITE_OK ) {
3334 return SQLITE_ERROR ;
3435 }
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+ }
3639 if (fortuna_ready (& (ltc -> prng )) != CRYPT_OK ) {
3740 return SQLITE_ERROR ;
3841 }
@@ -50,15 +53,8 @@ static const char* sqlcipher_ltc_get_provider_name(void *ctx) {
5053
5154static int sqlcipher_ltc_random (void * ctx , void * buffer , int length ) {
5255 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 ));
6258 fortuna_read (buffer , length , & (ltc -> prng ));
6359 return SQLITE_OK ;
6460}
@@ -81,6 +77,7 @@ static int sqlcipher_ltc_kdf(void *ctx, const unsigned char *pass, int pass_sz,
8177 unsigned long outlen = key_sz ;
8278 unsigned long random_buffer_sz = 256 ;
8379 char random_buffer [random_buffer_sz ];
80+ ltc_ctx * ltc = (ltc_ctx * )ctx ;
8481
8582 hash_idx = find_hash ("sha1" );
8683 if ((rc = pkcs_5_alg2 (pass , pass_sz , salt , salt_sz ,
@@ -136,7 +133,8 @@ static int sqlcipher_ltc_get_hmac_sz(void *ctx) {
136133}
137134
138135static 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 ;
140138}
141139
142140static int sqlcipher_ltc_ctx_cmp (void * c1 , void * c2 ) {
@@ -157,7 +155,7 @@ static int sqlcipher_ltc_ctx_free(void **ctx) {
157155}
158156
159157int sqlcipher_ltc_setup (sqlcipher_provider * p ) {
160- p -> activate = sqlcipher_ltc_activate ;
158+ p -> activate = sqlcipher_ltc_activate ;
161159 p -> deactivate = sqlcipher_ltc_deactivate ;
162160 p -> get_provider_name = sqlcipher_ltc_get_provider_name ;
163161 p -> random = sqlcipher_ltc_random ;
@@ -177,5 +175,4 @@ int sqlcipher_ltc_setup(sqlcipher_provider *p) {
177175 p -> add_random = sqlcipher_ltc_add_random ;
178176}
179177
180-
181178#endif
0 commit comments