@@ -55,6 +55,7 @@ int secp256k1_schnorrsig_sign(const secp256k1_context* ctx, secp256k1_schnorrsig
5555 secp256k1_sha256 sha ;
5656 int overflow ;
5757 unsigned char buf [32 ];
58+ unsigned char seckey_tmp [32 ];
5859
5960 VERIFY_CHECK (ctx != NULL );
6061 ARG_CHECK (secp256k1_ecmult_gen_context_is_built (& ctx -> ecmult_gen_ctx ));
@@ -82,11 +83,15 @@ int secp256k1_schnorrsig_sign(const secp256k1_context* ctx, secp256k1_schnorrsig
8283 secp256k1_scalar_negate (& x , & x );
8384 }
8485
85- if (!noncefp (buf , msg32 , seckey , (unsigned char * ) "BIPSchnorrDerive" , (void * )ndata , 0 )) {
86+ secp256k1_scalar_get_b32 (seckey_tmp , & x );
87+ if (!noncefp (buf , msg32 , seckey_tmp , (unsigned char * ) "BIPSchnorrDerive" , (void * )ndata , 0 )) {
8688 memset (sig , 0 , sizeof (* sig ));
89+ memset (seckey_tmp , 0 , sizeof (seckey_tmp ));
8790 secp256k1_scalar_clear (& x );
8891 return 0 ;
8992 }
93+ memset (seckey_tmp , 0 , sizeof (seckey_tmp ));
94+
9095 secp256k1_scalar_set_b32 (& k , buf , NULL );
9196 if (secp256k1_scalar_is_zero (& k )) {
9297 memset (sig , 0 , sizeof (* sig ));
0 commit comments