|
6 | 6 |
|
7 | 7 | #include <valgrind/memcheck.h>
|
8 | 8 | #include <stdio.h>
|
| 9 | +#include <string.h> |
9 | 10 |
|
10 | 11 | #include "include/secp256k1.h"
|
11 | 12 | #include "assumptions.h"
|
|
35 | 36 | #include "include/secp256k1_ecdsa_adaptor.h"
|
36 | 37 | #endif
|
37 | 38 |
|
| 39 | +#ifdef ENABLE_MODULE_MUSIG |
| 40 | +#include "include/secp256k1_musig.h" |
| 41 | +#endif |
| 42 | + |
38 | 43 | void run_tests(secp256k1_context *ctx, unsigned char *key);
|
39 | 44 |
|
40 | 45 | int main(void) {
|
@@ -241,4 +246,47 @@ void run_tests(secp256k1_context *ctx, unsigned char *key) {
|
241 | 246 | CHECK(ret == 0);
|
242 | 247 | }
|
243 | 248 | #endif
|
| 249 | + |
| 250 | +#ifdef ENABLE_MODULE_MUSIG |
| 251 | + { |
| 252 | + secp256k1_xonly_pubkey pk; |
| 253 | + const secp256k1_xonly_pubkey *pk_ptr[1]; |
| 254 | + secp256k1_xonly_pubkey combined_pk; |
| 255 | + unsigned char session_id[32]; |
| 256 | + secp256k1_musig_secnonce secnonce; |
| 257 | + unsigned char pubnonce[66]; |
| 258 | + const unsigned char *pubnonce_ptr[1]; |
| 259 | + secp256k1_musig_pre_session pre_session; |
| 260 | + secp256k1_musig_session_cache session_cache; |
| 261 | + secp256k1_musig_template sig_template; |
| 262 | + secp256k1_musig_partial_signature partial_sig; |
| 263 | + unsigned char extra_input[32]; |
| 264 | + |
| 265 | + pk_ptr[0] = &pk; |
| 266 | + pubnonce_ptr[0] = pubnonce; |
| 267 | + VALGRIND_MAKE_MEM_DEFINED(key, 32); |
| 268 | + memcpy(session_id, key, sizeof(session_id)); |
| 269 | + session_id[0] = key[0] + 1; |
| 270 | + memcpy(extra_input, session_id, sizeof(extra_input)); |
| 271 | + extra_input[0] = session_id[0] + 1; |
| 272 | + |
| 273 | + CHECK(secp256k1_keypair_create(ctx, &keypair, key)); |
| 274 | + CHECK(secp256k1_keypair_xonly_pub(ctx, &pk, NULL, &keypair)); |
| 275 | + CHECK(secp256k1_musig_pubkey_combine(ctx, NULL, &combined_pk, &pre_session, pk_ptr, 1) == 1); |
| 276 | + VALGRIND_MAKE_MEM_UNDEFINED(key, 32); |
| 277 | + VALGRIND_MAKE_MEM_UNDEFINED(session_id, 32); |
| 278 | + VALGRIND_MAKE_MEM_UNDEFINED(extra_input, 32); |
| 279 | + ret = secp256k1_musig_session_init(ctx, &secnonce, pubnonce, session_id, key, msg, &combined_pk, extra_input); |
| 280 | + VALGRIND_MAKE_MEM_DEFINED(&ret, sizeof(ret)); |
| 281 | + CHECK(ret == 1); |
| 282 | + CHECK(secp256k1_musig_process_nonces(ctx, &session_cache, &sig_template, NULL, pubnonce_ptr, 1, msg, &combined_pk, &pre_session, NULL) == 1); |
| 283 | + |
| 284 | + ret = secp256k1_keypair_create(ctx, &keypair, key); |
| 285 | + VALGRIND_MAKE_MEM_DEFINED(&ret, sizeof(ret)); |
| 286 | + CHECK(ret == 1); |
| 287 | + ret = secp256k1_musig_partial_sign(ctx, &partial_sig, &secnonce, &keypair, &pre_session, &session_cache); |
| 288 | + VALGRIND_MAKE_MEM_DEFINED(&ret, sizeof(ret)); |
| 289 | + CHECK(ret == 1); |
| 290 | + } |
| 291 | +#endif |
244 | 292 | }
|
0 commit comments