@@ -17,16 +17,25 @@ 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
- sqlite3_mutex_enter (sqlite3MutexAlloc (SQLITE_MUTEX_STATIC_MASTER ));
20
+ int random_buffer_sz = 256 ;
21
+ unsigned char random_buffer [random_buffer_sz ];
22
+
21
23
if (ltc_init == 0 ) {
22
24
if (register_prng (& fortuna_desc ) != CRYPT_OK ) return SQLITE_ERROR ;
23
25
if (register_cipher (& rijndael_desc ) != CRYPT_OK ) return SQLITE_ERROR ;
24
26
if (register_hash (& sha1_desc ) != CRYPT_OK ) return SQLITE_ERROR ;
25
- if (fortuna_start (& (ltc -> prng )) != CRYPT_OK ) return SQLITE_ERROR ;
26
- if (sqlcipher_ltc_add_random (ctx , & ltc , sizeof (ltc_ctx * )) != SQLITE_OK ) return SQLITE_ERROR ;
27
27
ltc_init = 1 ;
28
28
}
29
- sqlite3_mutex_leave (sqlite3MutexAlloc (SQLITE_MUTEX_STATIC_MASTER ));
29
+
30
+ if (fortuna_start (& (ltc -> prng )) != CRYPT_OK ) return SQLITE_ERROR ;
31
+ sqlite3_randomness (random_buffer_sz , & random_buffer );
32
+ if (sqlcipher_ltc_add_random (ctx , random_buffer , random_buffer_sz ) != SQLITE_OK ) {
33
+ return SQLITE_ERROR ;
34
+ }
35
+ if (sqlcipher_ltc_add_random (ctx , & ltc , sizeof (ltc_ctx * )) != SQLITE_OK ) return SQLITE_ERROR ;
36
+ if (fortuna_ready (& (ltc -> prng )) != CRYPT_OK ) {
37
+ return SQLITE_ERROR ;
38
+ }
30
39
return SQLITE_OK ;
31
40
}
32
41
@@ -41,16 +50,15 @@ static const char* sqlcipher_ltc_get_provider_name(void *ctx) {
41
50
42
51
static int sqlcipher_ltc_random (void * ctx , void * buffer , int length ) {
43
52
ltc_ctx * ltc = (ltc_ctx * )ctx ;
53
+ /*
44
54
int random_buffer_sz = 256;
45
55
char random_buffer[random_buffer_sz];
46
56
47
57
sqlite3_randomness(random_buffer_sz, &random_buffer);
48
58
if(sqlcipher_ltc_add_random(ctx, random_buffer, random_buffer_sz) != SQLITE_OK) {
49
59
return SQLITE_ERROR;
50
60
}
51
- if (fortuna_ready (& (ltc -> prng )) != CRYPT_OK ) {
52
- return SQLITE_ERROR ;
53
- }
61
+ */
54
62
fortuna_read (buffer , length , & (ltc -> prng ));
55
63
return SQLITE_OK ;
56
64
}
@@ -65,7 +73,6 @@ static int sqlcipher_ltc_hmac(void *ctx, unsigned char *hmac_key, int key_sz, un
65
73
if ((rc = hmac_process (& hmac , in , in_sz )) != CRYPT_OK ) return SQLITE_ERROR ;
66
74
if ((rc = hmac_process (& hmac , in2 , in2_sz )) != CRYPT_OK ) return SQLITE_ERROR ;
67
75
if ((rc = hmac_done (& hmac , out , & outlen )) != CRYPT_OK ) return SQLITE_ERROR ;
68
- sqlcipher_ltc_add_random (ctx , out , outlen );
69
76
return SQLITE_OK ;
70
77
}
71
78
0 commit comments