@@ -112,6 +112,7 @@ static int secp256k1_schnorr_adaptor_presign_internal(const secp256k1_context *c
112
112
unsigned char pk_buf [32 ];
113
113
unsigned char seckey [32 ];
114
114
unsigned char adaptor_buff [33 ];
115
+ size_t cmprssd_len = 33 ; /* for serializing `adaptor_ge` and `pre_sig65` */
115
116
int ret = 1 ;
116
117
117
118
VERIFY_CHECK (ctx != NULL );
@@ -138,7 +139,7 @@ static int secp256k1_schnorr_adaptor_presign_internal(const secp256k1_context *c
138
139
secp256k1_fe_get_b32 (pk_buf , & pk .x );
139
140
/* T := adaptor_ge */
140
141
ret &= secp256k1_pubkey_load (ctx , & adaptor_ge , adaptor );
141
- ret &= secp256k1_eckey_pubkey_serialize (& adaptor_ge , adaptor_buff , 33 , 1 );
142
+ ret &= secp256k1_eckey_pubkey_serialize (& adaptor_ge , adaptor_buff , & cmprssd_len , 1 );
142
143
ret &= !!noncefp (nonce32 , msg32 , seckey , adaptor_buff , pk_buf , schnorr_adaptor_algo , sizeof (schnorr_adaptor_algo ), ndata );
143
144
secp256k1_scalar_set_b32 (& k , nonce32 , NULL );
144
145
ret &= !secp256k1_scalar_is_zero (& k );
@@ -150,8 +151,8 @@ static int secp256k1_schnorr_adaptor_presign_internal(const secp256k1_context *c
150
151
151
152
/* We declassify the non-secret values R and T to allow using them
152
153
* as branch points. */
153
- secp256k1_declassify (ctx , & r , sizeof (rp ));
154
- secp256k1_declassify (ctx , & adaptor_ge , sizeof (rp ));
154
+ secp256k1_declassify (ctx , & rj , sizeof (rj ));
155
+ secp256k1_declassify (ctx , & adaptor_ge , sizeof (adaptor_ge ));
155
156
/* R' = R + T */
156
157
secp256k1_gej_add_ge_var (& rpj , & rj , & adaptor_ge , NULL );
157
158
secp256k1_ge_set_gej (& rp , & rpj );
@@ -180,7 +181,7 @@ static int secp256k1_schnorr_adaptor_presign_internal(const secp256k1_context *c
180
181
secp256k1_scalar_mul (& e , & e , & sk );
181
182
secp256k1_scalar_add (& e , & e , & k );
182
183
secp256k1_scalar_get_b32 (& pre_sig65 [33 ], & e );
183
- ret &= secp256k1_eckey_pubkey_serialize (& rp , pre_sig65 , 33 , 1 );
184
+ ret &= secp256k1_eckey_pubkey_serialize (& rp , pre_sig65 , & cmprssd_len , 1 );
184
185
185
186
secp256k1_memczero (pre_sig65 , 65 , !ret );
186
187
secp256k1_scalar_clear (& k );
@@ -252,7 +253,7 @@ int secp256k1_schnorr_adaptor_extract(const secp256k1_context *ctx, secp256k1_pu
252
253
if (secp256k1_fe_is_odd (& rp .y )) {
253
254
secp256k1_gej_neg (& rj , & rj );
254
255
}
255
- secp256k1_gej_add_ge_var (& adaptor_gej , & rp , & rj , NULL );
256
+ secp256k1_gej_add_ge_var (& adaptor_gej , & rj , & rp , NULL );
256
257
secp256k1_ge_set_gej (& adaptor_ge , & adaptor_gej );
257
258
if (secp256k1_ge_is_infinity (& adaptor_ge )) {
258
259
return 0 ;
0 commit comments