@@ -60,7 +60,7 @@ typedef struct {
6060 unsigned int flags ;
6161 unsigned char * key ;
6262 unsigned char * hmac_key ;
63- char * pass ;
63+ unsigned char * pass ;
6464 char * keyspec ;
6565 sqlcipher_provider * provider ;
6666 void * provider_ctx ;
@@ -821,19 +821,19 @@ static int sqlcipher_cipher_ctx_key_derive(codec_ctx *ctx, cipher_ctx *c_ctx) {
821821
822822
823823 if (c_ctx -> pass && c_ctx -> pass_sz ) { // if pass is not null
824- if (c_ctx -> pass_sz == ((c_ctx -> key_sz * 2 ) + 3 ) && sqlite3StrNICmp (c_ctx -> pass ,"x'" , 2 ) == 0 ) {
824+ if (c_ctx -> pass_sz == ((c_ctx -> key_sz * 2 ) + 3 ) && sqlite3StrNICmp (( const char * ) c_ctx -> pass ,"x'" , 2 ) == 0 ) {
825825 int n = c_ctx -> pass_sz - 3 ; /* adjust for leading x' and tailing ' */
826- const char * z = c_ctx -> pass + 2 ; /* adjust lead offset of x' */
826+ const unsigned char * z = c_ctx -> pass + 2 ; /* adjust lead offset of x' */
827827 CODEC_TRACE (("cipher_ctx_key_derive: using raw key from hex\n" ));
828828 cipher_hex2bin (z , n , c_ctx -> key );
829- } else if (c_ctx -> pass_sz == (((c_ctx -> key_sz + ctx -> kdf_salt_sz ) * 2 ) + 3 ) && sqlite3StrNICmp (c_ctx -> pass ,"x'" , 2 ) == 0 ) {
830- const char * z = c_ctx -> pass + 2 ; /* adjust lead offset of x' */
829+ } else if (c_ctx -> pass_sz == (((c_ctx -> key_sz + ctx -> kdf_salt_sz ) * 2 ) + 3 ) && sqlite3StrNICmp (( const char * ) c_ctx -> pass ,"x'" , 2 ) == 0 ) {
830+ const unsigned char * z = c_ctx -> pass + 2 ; /* adjust lead offset of x' */
831831 CODEC_TRACE (("cipher_ctx_key_derive: using raw key from hex\n" ));
832832 cipher_hex2bin (z , (c_ctx -> key_sz * 2 ), c_ctx -> key );
833833 cipher_hex2bin (z + (c_ctx -> key_sz * 2 ), (ctx -> kdf_salt_sz * 2 ), ctx -> kdf_salt );
834834 } else {
835835 CODEC_TRACE (("cipher_ctx_key_derive: deriving key using full PBKDF2 with %d iterations\n" , c_ctx -> kdf_iter ));
836- c_ctx -> provider -> kdf (c_ctx -> provider_ctx , ( const char * ) c_ctx -> pass , c_ctx -> pass_sz ,
836+ c_ctx -> provider -> kdf (c_ctx -> provider_ctx , c_ctx -> pass , c_ctx -> pass_sz ,
837837 ctx -> kdf_salt , ctx -> kdf_salt_sz , c_ctx -> kdf_iter ,
838838 c_ctx -> key_sz , c_ctx -> key );
839839 }
@@ -861,7 +861,7 @@ static int sqlcipher_cipher_ctx_key_derive(codec_ctx *ctx, cipher_ctx *c_ctx) {
861861 c_ctx -> fast_kdf_iter ));
862862
863863
864- c_ctx -> provider -> kdf (c_ctx -> provider_ctx , ( const char * ) c_ctx -> key , c_ctx -> key_sz ,
864+ c_ctx -> provider -> kdf (c_ctx -> provider_ctx , c_ctx -> key , c_ctx -> key_sz ,
865865 ctx -> hmac_kdf_salt , ctx -> kdf_salt_sz , c_ctx -> fast_kdf_iter ,
866866 c_ctx -> key_sz , c_ctx -> hmac_key );
867867 }
0 commit comments