|
13 | 13 | #include <test/test_bitcoin.h>
|
14 | 14 | #include <wallet/test/wallet_test_fixture.h>
|
15 | 15 |
|
| 16 | +extern bool ParseHDKeypath(std::string keypath_str, std::vector<uint32_t>& keypath); |
| 17 | + |
16 | 18 | BOOST_FIXTURE_TEST_SUITE(psbt_wallet_tests, WalletTestingSetup)
|
17 | 19 |
|
18 | 20 | BOOST_AUTO_TEST_CASE(psbt_updater_test)
|
@@ -71,4 +73,78 @@ BOOST_AUTO_TEST_CASE(psbt_updater_test)
|
71 | 73 | BOOST_CHECK_EQUAL(final_hex, "70736274ff01009a020000000258e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd750000000000ffffffff838d0427d0ec650a68aa46bb0b098aea4422c071b2ca78352a077959d07cea1d0100000000ffffffff0270aaf00800000000160014d85c2b71d0060b09c9886aeb815e50991dda124d00e1f5050000000016001400aea9a2e5f0f876a588df5546e8742d1d87008f00000000000100bb0200000001aad73931018bd25f84ae400b68848be09db706eac2ac18298babee71ab656f8b0000000048473044022058f6fc7c6a33e1b31548d481c826c015bd30135aad42cd67790dab66d2ad243b02204a1ced2604c6735b6393e5b41691dd78b00f0c5942fb9f751856faa938157dba01feffffff0280f0fa020000000017a9140fb9463421696b82c833af241c78c17ddbde493487d0f20a270100000017a91429ca74f8a08f81999428185c97b5d852e4063f6187650000000104475221029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f2102dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d752ae2206029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f10d90c6a4f000000800000008000000080220602dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d710d90c6a4f0000008000000080010000800001012000c2eb0b0000000017a914b7f5faf40e3d40a5a459b1db3535f2b72fa921e88701042200208c2353173743b595dfb4a07b72ba8e42e3797da74e87fe7d9d7497e3b2028903010547522103089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc21023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7352ae2206023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7310d90c6a4f000000800000008003000080220603089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc10d90c6a4f00000080000000800200008000220203a9a4c37f5996d3aa25dbac6b570af0650394492942460b354753ed9eeca5877110d90c6a4f000000800000008004000080002202027f6399757d2eff55a136ad02c684b1838b6556e5f1b6b34282a94b6b5005109610d90c6a4f00000080000000800500008000");
|
72 | 74 | }
|
73 | 75 |
|
| 76 | +BOOST_AUTO_TEST_CASE(parse_hd_keypath) |
| 77 | +{ |
| 78 | + std::vector<uint32_t> keypath; |
| 79 | + |
| 80 | + BOOST_CHECK(ParseHDKeypath("1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1", keypath)); |
| 81 | + BOOST_CHECK(!ParseHDKeypath("///////////////////////////", keypath)); |
| 82 | + |
| 83 | + BOOST_CHECK(ParseHDKeypath("1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1'/1", keypath)); |
| 84 | + BOOST_CHECK(!ParseHDKeypath("//////////////////////////'/", keypath)); |
| 85 | + |
| 86 | + BOOST_CHECK(ParseHDKeypath("1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/", keypath)); |
| 87 | + BOOST_CHECK(!ParseHDKeypath("1///////////////////////////", keypath)); |
| 88 | + |
| 89 | + BOOST_CHECK(ParseHDKeypath("1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1'/", keypath)); |
| 90 | + BOOST_CHECK(!ParseHDKeypath("1/'//////////////////////////", keypath)); |
| 91 | + |
| 92 | + BOOST_CHECK(ParseHDKeypath("", keypath)); |
| 93 | + BOOST_CHECK(!ParseHDKeypath(" ", keypath)); |
| 94 | + |
| 95 | + BOOST_CHECK(ParseHDKeypath("0", keypath)); |
| 96 | + BOOST_CHECK(!ParseHDKeypath("O", keypath)); |
| 97 | + |
| 98 | + BOOST_CHECK(ParseHDKeypath("0000'/0000'/0000'", keypath)); |
| 99 | + BOOST_CHECK(!ParseHDKeypath("0000,/0000,/0000,", keypath)); |
| 100 | + |
| 101 | + BOOST_CHECK(ParseHDKeypath("01234", keypath)); |
| 102 | + BOOST_CHECK(!ParseHDKeypath("0x1234", keypath)); |
| 103 | + |
| 104 | + BOOST_CHECK(ParseHDKeypath("1", keypath)); |
| 105 | + BOOST_CHECK(!ParseHDKeypath(" 1", keypath)); |
| 106 | + |
| 107 | + BOOST_CHECK(ParseHDKeypath("42", keypath)); |
| 108 | + BOOST_CHECK(!ParseHDKeypath("m42", keypath)); |
| 109 | + |
| 110 | + BOOST_CHECK(ParseHDKeypath("4294967295", keypath)); // 4294967295 == 0xFFFFFFFF (uint32_t max) |
| 111 | + BOOST_CHECK(!ParseHDKeypath("4294967296", keypath)); // 4294967296 == 0xFFFFFFFF (uint32_t max) + 1 |
| 112 | + |
| 113 | + BOOST_CHECK(ParseHDKeypath("m", keypath)); |
| 114 | + BOOST_CHECK(!ParseHDKeypath("n", keypath)); |
| 115 | + |
| 116 | + BOOST_CHECK(ParseHDKeypath("m/", keypath)); |
| 117 | + BOOST_CHECK(!ParseHDKeypath("n/", keypath)); |
| 118 | + |
| 119 | + BOOST_CHECK(ParseHDKeypath("m/0", keypath)); |
| 120 | + BOOST_CHECK(!ParseHDKeypath("n/0", keypath)); |
| 121 | + |
| 122 | + BOOST_CHECK(ParseHDKeypath("m/0'", keypath)); |
| 123 | + BOOST_CHECK(!ParseHDKeypath("m/0''", keypath)); |
| 124 | + |
| 125 | + BOOST_CHECK(ParseHDKeypath("m/0'/0'", keypath)); |
| 126 | + BOOST_CHECK(!ParseHDKeypath("m/'0/0'", keypath)); |
| 127 | + |
| 128 | + BOOST_CHECK(ParseHDKeypath("m/0/0", keypath)); |
| 129 | + BOOST_CHECK(!ParseHDKeypath("n/0/0", keypath)); |
| 130 | + |
| 131 | + BOOST_CHECK(ParseHDKeypath("m/0/0/00", keypath)); |
| 132 | + BOOST_CHECK(!ParseHDKeypath("m/0/0/f00", keypath)); |
| 133 | + |
| 134 | + BOOST_CHECK(ParseHDKeypath("m/0/0/000000000000000000000000000000000000000000000000000000000000000000000000000000000000", keypath)); |
| 135 | + BOOST_CHECK(!ParseHDKeypath("m/1/1/111111111111111111111111111111111111111111111111111111111111111111111111111111111111", keypath)); |
| 136 | + |
| 137 | + BOOST_CHECK(ParseHDKeypath("m/0/00/0", keypath)); |
| 138 | + BOOST_CHECK(!ParseHDKeypath("m/0'/00/'0", keypath)); |
| 139 | + |
| 140 | + BOOST_CHECK(ParseHDKeypath("m/1/", keypath)); |
| 141 | + BOOST_CHECK(!ParseHDKeypath("m/1//", keypath)); |
| 142 | + |
| 143 | + BOOST_CHECK(ParseHDKeypath("m/0/4294967295", keypath)); // 4294967295 == 0xFFFFFFFF (uint32_t max) |
| 144 | + BOOST_CHECK(!ParseHDKeypath("m/0/4294967296", keypath)); // 4294967296 == 0xFFFFFFFF (uint32_t max) + 1 |
| 145 | + |
| 146 | + BOOST_CHECK(ParseHDKeypath("m/4294967295", keypath)); // 4294967295 == 0xFFFFFFFF (uint32_t max) |
| 147 | + BOOST_CHECK(!ParseHDKeypath("m/4294967296", keypath)); // 4294967296 == 0xFFFFFFFF (uint32_t max) + 1 |
| 148 | +} |
| 149 | + |
74 | 150 | BOOST_AUTO_TEST_SUITE_END()
|
0 commit comments