8000 Adjust buffer size feed into fortuna entropy · magic-coder/sqlcipher@e0cd3f2 · GitHub
[go: up one dir, main page]

Skip to content

Commit e0cd3f2

Browse files
Adjust buffer size feed into fortuna entropy
Also calling fortuna_ready before fortuna_read to allow for new entries in the fotuna pool to become available. Minor format adjustments.
1 parent 6937773 commit e0cd3f2

File tree

1 file changed

+13
-16
lines changed

1 file changed

+13
-16
lines changed

src/crypto_libtomcrypt.c

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ static int sqlcipher_ltc_add_random(void *ctx, void *buffer, int length) {
1717

1818
static 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

5154
static 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

138135
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;
140138
}
141139

142140
static int sqlcipher_ltc_ctx_cmp(void *c1, void *c2) {
@@ -157,7 +155,7 @@ static int sqlcipher_ltc_ctx_free(void **ctx) {
157155
}
158156

159157
int 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

Comments
 (0)
0