@@ -102,11 +102,15 @@ void musig_api_tests(secp256k1_scratch_space *scratch) {
102
102
secp256k1_musig_pre_session pre_session_uninitialized ;
103
103
secp256k1_xonly_pubkey pk [2 ];
104
104
const secp256k1_xonly_pubkey * pk_ptr [2 ];
105
+ secp256k1_xonly_pubkey invalid_pk ;
106
+ const secp256k1_xonly_pubkey * invalid_pk_ptr2 [2 ];
107
+ const secp256k1_xonly_pubkey * invalid_pk_ptr3 [3 ];
105
108
unsigned char tweak [32 ];
106
109
107
110
unsigned char sec_adaptor [32 ];
108
111
unsigned char sec_adaptor1 [32 ];
109
112
secp256k1_pubkey adaptor ;
113
+ int i ;
110
114
111
115
/** setup **/
112
116
secp256k1_context * none = secp256k1_context_create (SECP256K1_CONTEXT_NONE );
@@ -127,6 +131,7 @@ void musig_api_tests(secp256k1_scratch_space *scratch) {
127
131
* structs. */
128
132
memset (& pre_session_uninitialized , 0 , sizeof (pre_session_uninitialized ));
129
133
memset (& session_uninitialized , 0 , sizeof (session_uninitialized ));
134
+ memset (& invalid_pk , 0 , sizeof (invalid_pk ));
130
135
131
136
secp256k1_testrand256 (session_id [0 ]);
132
137
secp256k1_testrand256 (session_id [1 ]);
@@ -142,6 +147,13 @@ void musig_api_tests(secp256k1_scratch_space *scratch) {
142
147
CHECK (secp256k1_xonly_pubkey_create (& pk [1 ], sk [1 ]) == 1 );
143
148
CHECK (secp256k1_ec_pubkey_create (ctx , & adaptor , sec_adaptor ) == 1 );
144
149
150
+ for (i = 0 ; i < 2 ; i ++ ) {
151
+ invalid_pk_ptr2 [i ] = & invalid_pk ;
152
+ invalid_pk_ptr3 [i ] = & pk [i ];
153
+ }
154
+ /* invalid_pk_ptr3 has two valid, one invalid pk, which is important to test
155
+ * musig_pubkeys_combine */
156
+ invalid_pk_ptr3 [2 ] = & invalid_pk ;
145
157
146
158
/** main test body **/
147
159
@@ -167,10 +179,14 @@ void musig_api_tests(secp256k1_scratch_space *scratch) {
167
179
CHECK (ecount == 3 );
168
180
CHECK (secp256k1_musig_pubkey_combine (vrfy , scratch , & combined_pk , & pre_session , NULL , 2 ) == 0 );
169
181
CHECK (ecount == 4 );
170
- CHECK (secp256k1_musig_pubkey_combine (vrfy , scratch , & combined_pk , & pre_session , pk_ptr , 0 ) == 0 );
182
+ CHECK (secp256k1_musig_pubkey_combine (vrfy , scratch , & combined_pk , & pre_session , invalid_pk_ptr2 , 2 ) == 0 );
171
183
CHECK (ecount == 5 );
172
- CHECK (secp256k1_musig_pubkey_combine (vrfy , scratch , & combined_pk , & pre_session , NULL , 0 ) == 0 );
184
+ CHECK (secp256k1_musig_pubkey_combine (vrfy , scratch , & combined_pk , & pre_session , invalid_pk_ptr3 , 3 ) == 0 );
173
185
CHECK (ecount == 6 );
186
+ CHECK (secp256k1_musig_pubkey_combine (vrfy , scratch , & combined_pk , & pre_session , pk_ptr , 0 ) == 0 );
187
+ CHECK (ecount == 7 );
188
+ CHECK (secp256k1_musig_pubkey_combine (vrfy , scratch , & combined_pk , & pre_session , NULL , 0 ) == 0 );
189
+ CHECK (ecount == 8 );
174
190
175
191
CHECK (secp256k1_musig_pubkey_combine (vrfy , scratch , & combined_pk , & pre_session , pk_ptr , 2 ) == 1 );
176
192
CHECK (secp256k1_musig_pubkey_combine (vrfy , scratch , & combined_pk , & pre_session , pk_ptr , 2 ) == 1 );
0 commit comments