@@ -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
9092static 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