| 352 | } |
| 353 | |
| 354 | static void test_elements(void) { |
| 355 | unsigned char cmr[32], amr[32]; |
| 356 | sha256_fromMidstate(cmr, elementsCheckSigHashAllTx1_cmr); |
| 357 | sha256_fromMidstate(amr, elementsCheckSigHashAllTx1_amr); |
| 358 | |
| 359 | unsigned char genesisHash[32] = {0x0f, 0x91, 0x88, 0xf1, 0x3c, 0xb7, 0xb2, 0xc7, 0x1f, 0x2a, 0x33, 0x5e, 0x3a, 0x4f, 0xc3, 0x28, 0xbf, 0x5b, 0xeb, 0x43, 0x60, 0x12, 0xaf, 0xca, 0x59, 0x0b, 0x1a, 0x11, 0x46, 0x6e, 0x22, 0x06}; |
| 360 | rawElementsTapEnv rawTaproot = (rawElementsTapEnv) |
| 361 | { .controlBlock = (unsigned char [33]){0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x78, 0xce, 0x56, 0x3f, 0x89, 0xa0, 0xed, 0x94, 0x14, 0xf5, 0xaa, 0x28, 0xad, 0x0d, 0x96, 0xd6, 0x79, 0x5f, 0x9c, 0x63} |
| 362 | , .pathLen = 0 |
| 363 | , .scriptCMR = cmr |
| 364 | }; |
| 365 | elementsTapEnv* taproot = simplicity_elements_mallocTapEnv(&rawTaproot); |
| 366 | |
| 367 | printf("Test elements\n"); |
| 368 | { |
| 369 | rawElementsTransaction testTx1 = (rawElementsTransaction) |
| 370 | { .txid = (unsigned char[32]){0xdb, 0x9a, 0x3d, 0xe0, 0xb6, 0xb8, 0xcc, 0x74, 0x1e, 0x4d, 0x6c, 0x8f, 0x19, 0xce, 0x75, 0xec, 0x0d, 0xfd, 0x01, 0x02, 0xdb, 0x9c, 0xb5, 0xcd, 0x27, 0xa4, 0x1a, 0x66, 0x91, 0x66, 0x3a, 0x07} |
| 371 | , .input = (rawElementsInput[]) |
| 372 | { { .annex = NULL |
| 373 | , .prevTxid = (unsigned char[32]){0xeb, 0x04, 0xb6, 0x8e, 0x9a, 0x26, 0xd1, 0x16, 0x04, 0x6c, 0x76, 0xe8, 0xff, 0x47, 0x33, 0x2f, 0xb7, 0x1d, 0xda, 0x90, 0xff, 0x4b, 0xef, 0x53, 0x70, 0xf2, 0x52, 0x26, 0xd3, 0xbc, 0x09, 0xfc} |
| 374 | , .prevIx = 0 |
| 375 | , .sequence = 0xfffffffe |
| 376 | , .issuance = {0} |
| 377 | , .scriptSig = {0} |
| 378 | , .txo = { .asset = (unsigned char[33]){0x01, 0x23, 0x0f, 0x4f, 0x5d, 0x4b, 0x7c, 0x6f, 0xa8, 0x45, 0x80, 0x6e, 0xe4, 0xf6, 0x77, 0x13, 0x45, 0x9e, 0x1b, 0x69, 0xe8, 0xe6, 0x0f, 0xce, 0xe2, 0xe4, 0x94, 0x0c, 0x7a, 0x0d, 0x5d, 0xe1, 0xb2} |
| 379 | , .value = (unsigned char[9]){0x01, 0x00, 0x00, 0x00, 0x02, 0x54, 0x0b, 0xe4, 0x00} |
| 380 | , .scriptPubKey = {0} |
| 381 | } } } |
| 382 | , .output = (rawElementsOutput[]) |
| 383 | { { .asset = (unsigned char[33]){0x01, 0x23, 0x0f, 0x4f, 0x5d, 0x4b, 0x7c, 0x6f, 0xa8, 0x45, 0x80, 0x6e, 0xe4, 0xf6, 0x77, 0x13, 0x45, 0x9e, 0x1b, 0x69, 0xe8, 0xe6, 0x0f, 0xce, 0xe2, 0xe4, 0x94, 0x0c, 0x7a, 0x0d, 0x5d, 0xe1, 0xb2} |
| 384 | , .value = (unsigned char[9]){0x01, 0x00, 0x00, 0x00, 0x02, 0x54, 0x0b, 0xd7, 0x1c} |
| 385 | , .nonce = NULL |
| 386 | , .scriptPubKey = { .buf = (unsigned char [26]){0x19, 0x76, 0xa9, 0x14, 0x48, 0x63, 0x3e, 0x2c, 0x0e, 0xe9, 0x49, 0x5d, 0xd3, 0xf9, 0xc4, 0x37, 0x32, 0xc4, 0x7f, 0x47, 0x02, 0xa3, 0x62, 0xc8, 0x88, 0xac} |
| 387 | , .len = 26 |
| 388 | } |
| 389 | } |
| 390 | , { .asset = (unsigned char[33]){0x01, 0x23, 0x0f, 0x4f, 0x5d, 0x4b, 0x7c, 0x6f, 0xa8, 0x45, 0x80, 0x6e, 0xe4, 0xf6, 0x77, 0x13, 0x45, 0x9e, 0x1b, 0x69, 0xe8, 0xe6, 0x0f, 0xce, 0xe2, 0xe4, 0x94, 0x0c, 0x7a, 0x0d, 0x5d, 0xe1, 0xb2} |
| 391 | , .value = (unsigned char[9]){0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xe4} |
| 392 | , .nonce = NULL |
| 393 | , .scriptPubKey = {0} |
| 394 | } } |
| 395 | , .numInputs = 1 |
| 396 | , .numOutputs = 2 |
| 397 | , .version = 0x00000002 |
| 398 | , .lockTime = 0x00000000 |
| 399 | }; |
| 400 | elementsTransaction* tx1 = simplicity_elements_mallocTransaction(&testTx1); |
| 401 | if (tx1) { |
| 402 | successes++; |
| 403 | simplicity_err execResult; |
| 404 | { |
| 405 | unsigned char cmrResult[32]; |
| 406 | if (simplicity_elements_computeCmr(&execResult, cmrResult, elementsCheckSigHashAllTx1, sizeof_elementsCheckSigHashAllTx1) && IS_OK(execResult)) { |
| 407 | if (0 == memcmp(cmrResult, cmr, sizeof(unsigned char[8]))) { |
| 408 | successes++; |
| 409 | } else { |
| 410 | failures++; |
| 411 | printf("Unexpected CMR of elementsCheckSigHashAllTx1\n"); |
no test coverage detected