33
33
34
34
#include < univalue.h>
35
35
36
+ using namespace std ;
37
+
36
38
// Uncomment if you want to output updated JSON tests.
37
39
// #define UPDATE_JSON_TESTS
38
40
@@ -1756,6 +1758,7 @@ BOOST_AUTO_TEST_CASE(script_assets_test)
1756
1758
file.close ();
1757
1759
}
1758
1760
1761
+ // ELEMENTS: TODO: Some of these test vectors need updating
1759
1762
BOOST_AUTO_TEST_CASE (bip341_keypath_test_vectors)
1760
1763
{
1761
1764
UniValue tests;
@@ -1777,9 +1780,14 @@ BOOST_AUTO_TEST_CASE(bip341_keypath_test_vectors)
1777
1780
1778
1781
PrecomputedTransactionData txdata;
1779
1782
txdata.Init (tx, std::vector<CTxOut>{utxos}, true );
1783
+ // ELEMENTS: add a txout witness for each output
1784
+ for (u_int i = 0 ; i < (u_int )utxos.size (); i++) {
1785
+ tx.witness .vtxoutwit .emplace_back (CTxOutWitness ());
1786
+ }
1780
1787
1781
1788
BOOST_CHECK (txdata.m_bip341_taproot_ready );
1782
- // BOOST_CHECK_EQUAL(HexStr(txdata.m_spent_amounts_single_hash), vec["intermediary"]["hashAmounts"].get_str());
1789
+ // ELEMENTS: FIXME
1790
+ // BOOST_CHECK_EQUAL(HexStr(txdata.m_spent_amounts_single_hash), vec["intermediary"]["hashAmounts"].get_str());
1783
1791
BOOST_CHECK_EQUAL (HexStr (txdata.m_outputs_single_hash ), vec[" intermediary" ][" hashOutputs" ].get_str ());
1784
1792
BOOST_CHECK_EQUAL (HexStr (txdata.m_prevouts_single_hash ), vec[" intermediary" ][" hashPrevouts" ].get_str ());
1785
1793
BOOST_CHECK_EQUAL (HexStr (txdata.m_spent_scripts_single_hash ), vec[" intermediary" ][" hashScriptPubkeys" ].get_str ());
@@ -1809,22 +1817,24 @@ BOOST_AUTO_TEST_CASE(bip341_keypath_test_vectors)
1809
1817
provider.keys [key.GetPubKey ().GetID ()] = key;
1810
1818
MutableTransactionSignatureCreator creator (&tx, txinpos, utxos[txinpos].nValue , &txdata, hashtype);
1811
1819
std::vector<unsigned char > signature;
1820
+ BOOST_CHECK (creator.CreateSchnorrSig (provider, signature, pubkey, nullptr , &merkle_root, SigVersion::TAPROOT));
1812
1821
// ELEMENTS: FIXME
1813
- // BOOST_CHECK(creator.CreateSchnorrSig(provider, signature, pubkey, nullptr, &merkle_root, SigVersion::TAPROOT));
1814
- // BOOST_CHECK_EQUAL(HexStr(signature), input["expected"]["witness"][0].get_str());
1822
+ // BOOST_CHECK_EQUAL(HexStr(signature), input["expected"]["witness"][0].get_str());
1815
1823
1816
1824
// We can't observe the tweak used inside the signing logic, so verify by recomputing it.
1817
- // BOOST_CHECK_EQUAL(HexStr(pubkey.ComputeTapTweakHash(merkle_root.IsNull() ? nullptr : &merkle_root)), input["intermediary"]["tweak"].get_str());
1825
+ // ELEMENTS: FIXME
1826
+ // BOOST_CHECK_EQUAL(HexStr(pubkey.ComputeTapTweakHash(merkle_root.IsNull() ? nullptr : &merkle_root)), input["intermediary"]["tweak"].get_str());
1818
1827
1819
1828
// We can't observe the sighash used inside the signing logic, so verify by recomputing it.
1820
1829
ScriptExecutionData sed;
1821
1830
sed.m_annex_init = true ;
1822
1831
sed.m_annex_present = false ;
1823
- // uint256 sighash;
1824
- // BOOST_CHECK(SignatureHashSchnorr(sighash, sed, tx, txinpos, hashtype, SigVersion::TAPROOT, txdata, MissingDataBehavior::FAIL));
1832
+ uint256 sighash;
1833
+ BOOST_CHECK (SignatureHashSchnorr (sighash, sed, tx, txinpos, hashtype, SigVersion::TAPROOT, txdata, MissingDataBehavior::FAIL));
1825
1834
// BOOST_CHECK_EQUAL(HexStr(sighash), input["intermediary"]["sigHash"].get_str());
1826
1835
1827
1836
// To verify the sigmsg, hash the expected sigmsg, and compare it with the (expected) sighash.
1837
+ // ELEMENTS: FIXME
1828
1838
// BOOST_CHECK_EQUAL(HexStr((CHashWriter(HASHER_TAPSIGHASH_ELEMENTS) << Span{ParseHex(input["intermediary"]["sigMsg"].get_str())}).GetSHA256()), input["intermediary"]["sigHash"].get_str());
1829
1839
}
1830
1840
0 commit comments