Skip to content

Commit fcc1332

Browse files
Adding to OpenSSL entropy pool when performing kdf
1 parent 7026edb commit fcc1332

1 file changed

Lines changed: 9 additions & 2 deletions

File tree

src/crypto_openssl.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ static int sqlcipher_openssl_activate(void *ctx) {
3939
if(openssl_external_init == 0) {
4040
if(openssl_init_count == 0) {
4141
OpenSSL_add_all_algorithms();
42+
if(sqlcipher_openssl_add_random(ctx, &ctx, sizeof(openssl_ctx *)) != SQLITE_OK) {
43+
return SQLITE_ERROR;
44+
}
4245
}
4346
openssl_init_count++;
4447
}
@@ -83,12 +86,16 @@ static int sqlcipher_openssl_hmac(void *ctx, unsigned char *hmac_key, int key_sz
8386
HMAC_Update(&hctx, in2, in2_sz);
8487
HMAC_Final(&hctx, out, &outlen);
8588
HMAC_CTX_cleanup(&hctx);
86-
sqlcipher_openssl_add_random(ctx, out, outlen);
8789
return SQLITE_OK;
8890
}
8991

9092
static int sqlcipher_openssl_kdf(void *ctx, const unsigned char *pass, int pass_sz, unsigned char* salt, int salt_sz, int workfactor, int key_sz, unsigned char *key) {
91-
PKCS5_PBKDF2_HMAC_SHA1(pass, pass_sz, salt, salt_sz, workfactor, key_sz, key);
93+
unsigned long random_buffer_sz = 256;
94+
char random_buffer[random_buffer_sz];
95+
96+
PKCS5_PBKDF2_HMAC_SHA1(pass, pass_sz, salt, salt_sz, workfactor, key_sz, key);
97+
PKCS5_PBKDF2_HMAC_SHA1(key, key_sz, salt, salt_sz, 1, random_buffer_sz, random_buffer);
98+
sqlcipher_openssl_add_random(ctx, random_buffer, random_buffer_sz);
9299
return SQLITE_OK;
93100
}
94101

0 commit comments

Comments
 (0)