@@ -539,23 +539,25 @@ void musig_api_tests(secp256k1_scratch_space *scratch) {
539539 CHECK (ecount == 3 );
540540
541541 ecount = 0 ;
542- {
543- unsigned char tmp_sig [64 ];
544- memcpy (tmp_sig , pre_sig , sizeof (tmp_sig ));
545- CHECK (secp256k1_musig_adapt (none , tmp_sig , sec_adaptor , nonce_parity ) == 1 );
546- CHECK (secp256k1_musig_adapt (none , NULL , sec_adaptor , 0 ) == 0 );
547- CHECK (ecount == 1 );
548- CHECK (secp256k1_musig_adapt (none , max64 , sec_adaptor , 0 ) == 0 );
549- CHECK (ecount == 1 );
550- CHECK (secp256k1_musig_adapt (none , tmp_sig , NULL , 0 ) == 0 );
551- CHECK (ecount == 2 );
552- CHECK (secp256k1_musig_adapt (none , tmp_sig , max64 , nonce_parity ) == 0 );
553- CHECK (ecount == 2 );
554- CHECK (secp256k1_musig_adapt (none , tmp_sig , sec_adaptor , 2 ) == 0 );
555- CHECK (ecount == 3 );
556- }
542+ CHECK (secp256k1_musig_adapt (none , final_sig , pre_sig , sec_adaptor , nonce_parity ) == 1 );
543+ CHECK (secp256k1_musig_adapt (none , NULL , pre_sig , sec_adaptor , 0 ) == 0 );
544+ CHECK (ecount == 1 );
545+ CHECK (secp256k1_musig_adapt (none , final_sig , NULL , sec_adaptor , 0 ) == 0 );
546+ CHECK (ecount == 2 );
547+ CHECK (secp256k1_musig_adapt (none , final_sig , max64 , sec_adaptor , 0 ) == 0 );
548+ CHECK (ecount == 2 );
549+ CHECK (secp256k1_musig_adapt (none , final_sig , pre_sig , NULL , 0 ) == 0 );
550+ CHECK (ecount == 3 );
551+ CHECK (secp256k1_musig_adapt (none , final_sig , pre_sig , max64 , 0 ) == 0 );
552+ CHECK (ecount == 3 );
553+ CHECK (secp256k1_musig_adapt (none , final_sig , pre_sig , sec_adaptor , 2 ) == 0 );
554+ CHECK (ecount == 4 );
555+ /* sig and pre_sig argument point to the same location */
557556 memcpy (final_sig , pre_sig , sizeof (final_sig ));
558- CHECK (secp256k1_musig_adapt (none , final_sig , sec_adaptor , nonce_parity ) == 1 );
557+ CHECK (secp256k1_musig_adapt (none , final_sig , final_sig , sec_adaptor , nonce_parity ) == 1 );
558+ CHECK (secp256k1_schnorrsig_verify (vrfy , final_sig , msg , sizeof (msg ), & agg_pk ) == 1 );
559+
560+ CHECK (secp256k1_musig_adapt (none , final_sig , pre_sig , sec_adaptor , nonce_parity ) == 1 );
559561 CHECK (secp256k1_schnorrsig_verify (vrfy , final_sig , msg , sizeof (msg ), & agg_pk ) == 1 );
560562
561563 /** Secret adaptor can be extracted from signature */
@@ -647,6 +649,7 @@ void scriptless_atomic_swap(secp256k1_scratch_space *scratch) {
647649 * while the indices 0 and 1 refer to the two signers. Here signer 0 is
648650 * sending a-coins to signer 1, while signer 1 is sending b-coins to signer
649651 * 0. Signer 0 produces the adaptor signatures. */
652+ unsigned char pre_sig_a [64 ];
650653 unsigned char final_sig_a [64 ];
651654 unsigned char pre_sig_b [64 ];
652655 unsigned char final_sig_b [64 ];
@@ -733,17 +736,16 @@ void scriptless_atomic_swap(secp256k1_scratch_space *scratch) {
733736 * signature from signer 1 and adapts it. This results in a complete
734737 * signature which is broadcasted by signer 0 to take B-coins. */
735738 CHECK (secp256k1_musig_partial_sig_agg (ctx , pre_sig_b , & session_b , partial_sig_b_ptr , 2 ) == 1 );
736- memcpy (final_sig_b , pre_sig_b , sizeof (final_sig_b ));
737- CHECK (secp256k1_musig_adapt (ctx , final_sig_b , sec_adaptor , nonce_parity_b ) == 1 );
739+ CHECK (secp256k1_musig_adapt (ctx , final_sig_b , pre_sig_b , sec_adaptor , nonce_parity_b ) == 1 );
738740 CHECK (secp256k1_schnorrsig_verify (ctx , final_sig_b , msg32_b , sizeof (msg32_b ), & agg_pk_b ) == 1 );
739741
740742 /* Step 6: Signer 1 signs, extracts adaptor from the published signature,
741743 * and adapts the signature to take A-coins. */
742744 CHECK (secp256k1_musig_partial_sign (ctx , & partial_sig_a [1 ], & secnonce_a [1 ], & keypair_a [1 ], & keyagg_cache_a , & session_a ) == 1 );
743- CHECK (secp256k1_musig_partial_sig_agg (ctx , final_sig_a , & session_a , partial_sig_a_ptr , 2 ) == 1 );
745+ CHECK (secp256k1_musig_partial_sig_agg (ctx , pre_sig_a , & session_a , partial_sig_a_ptr , 2 ) == 1 );
744746 CHECK (secp256k1_musig_extract_adaptor (ctx , sec_adaptor_extracted , final_sig_b , pre_sig_b , nonce_parity_b ) == 1 );
745747 CHECK (memcmp (sec_adaptor_extracted , sec_adaptor , sizeof (sec_adaptor )) == 0 ); /* in real life we couldn't check this, of course */
746- CHECK (secp256k1_musig_adapt (ctx , final_sig_a , sec_adaptor_extracted , nonce_parity_a ) == 1 );
748+ CHECK (secp256k1_musig_adapt (ctx , final_sig_a , pre_sig_a , sec_adaptor_extracted , nonce_parity_a ) == 1 );
747749 CHECK (secp256k1_schnorrsig_verify (ctx , final_sig_a , msg32_a , sizeof (msg32_a ), & agg_pk_a ) == 1 );
748750}
749751
0 commit comments