Inside Bitcoin
Opening the selected file…
Inside Bitcoin
Opening the selected file…
The code behind the network, with room to understand it.
Release published 2026-10-28 · Snapshot fetched 2026-11-01. Latest stable release at fetch time; development branches and Git history are excluded. Only the selected code window and visible folders load here.
251BOOST_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));252BOOST_CHECK(!ParseHDKeypath("///////////////////////////", keypath));254BOOST_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));255BOOST_CHECK(!ParseHDKeypath("//////////////////////////'/", keypath));257BOOST_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));258BOOST_CHECK(!ParseHDKeypath("1///////////////////////////", keypath));260BOOST_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));261BOOST_CHECK(!ParseHDKeypath("1/'//////////////////////////", keypath));263BOOST_CHECK(ParseHDKeypath("", keypath));264BOOST_CHECK(!ParseHDKeypath(" ", keypath));266BOOST_CHECK(ParseHDKeypath("0", keypath));267BOOST_CHECK(!ParseHDKeypath("O", keypath));269BOOST_CHECK(ParseHDKeypath("0000'/0000'/0000'", keypath));270BOOST_CHECK(!ParseHDKeypath("0000,/0000,/0000,", keypath));272BOOST_CHECK(ParseHDKeypath("01234", keypath));273BOOST_CHECK(!ParseHDKeypath("0x1234", keypath));275BOOST_CHECK(ParseHDKeypath("1", keypath));276BOOST_CHECK(!ParseHDKeypath(" 1", keypath));278BOOST_CHECK(ParseHDKeypath("42", keypath));279BOOST_CHECK(!ParseHDKeypath("m42", keypath));281// A path element's numeric part is capped at 2^31-1; the top bit is282// reserved for the hardened marker (h or ').283BOOST_CHECK(ParseHDKeypath("2147483647", keypath)); // 0x7fffffff, largest normal index284BOOST_CHECK(!ParseHDKeypath("2147483648", keypath)); // 0x80000000, would set the hardened bit285BOOST_CHECK(!ParseHDKeypath("4294967295", keypath)); // 0xffffffff286BOOST_CHECK(!ParseHDKeypath("4294967296", keypath)); // uint32_t max + 1288BOOST_CHECK(ParseHDKeypath("m", keypath));289BOOST_CHECK(!ParseHDKeypath("n", keypath));291BOOST_CHECK(ParseHDKeypath("m/", keypath));292BOOST_CHECK(!ParseHDKeypath("n/", keypath));294BOOST_CHECK(ParseHDKeypath("m/0", keypath));295BOOST_CHECK(!ParseHDKeypath("n/0", keypath));297BOOST_CHECK(ParseHDKeypath("m/0'", keypath));298BOOST_CHECK(!ParseHDKeypath("m/0''", keypath));300BOOST_CHECK(ParseHDKeypath("m/0h", keypath));301BOOST_CHECK(!ParseHDKeypath("m/0hh", keypath));302BOOST_CHECK(!ParseHDKeypath("m/0x", keypath));303BOOST_CHECK(!ParseHDKeypath("m/0a", keypath));304BOOST_CHECK(!ParseHDKeypath("m/0G", keypath));305BOOST_CHECK(!ParseHDKeypath("m/h0", keypath));307keypath.clear();308BOOST_REQUIRE(ParseHDKeypath("m/0h/1h/2h", keypath));309BOOST_REQUIRE_EQUAL(keypath.size(), 3);310BOOST_CHECK_EQUAL(keypath[0], BIP32_HARDENED_FLAG);311BOOST_CHECK_EQUAL(keypath[1], BIP32_HARDENED_FLAG | 1);312BOOST_CHECK_EQUAL(keypath[2], BIP32_HARDENED_FLAG | 2);314BOOST_CHECK(ParseHDKeypath("m/0'/0'", keypath));315BOOST_CHECK(ParseHDKeypath("m/0h/0h", keypath));316BOOST_CHECK(ParseHDKeypath("m/0'/0h", keypath));317BOOST_CHECK(!ParseHDKeypath("m/'0/0'", keypath));318BOOST_CHECK(!ParseHDKeypath("m/h0/0'", keypath));320BOOST_CHECK(ParseHDKeypath("m/0/0", keypath));321BOOST_CHECK(!ParseHDKeypath("n/0/0", keypath));323BOOST_CHECK(ParseHDKeypath("m/0/0/00", keypath));324BOOST_CHECK(!ParseHDKeypath("m/0/0/f00", keypath));326BOOST_CHECK(ParseHDKeypath("m/0/0/000000000000000000000000000000000000000000000000000000000000000000000000000000000000", keypath));327BOOST_CHECK(!ParseHDKeypath("m/1/1/111111111111111111111111111111111111111111111111111111111111111111111111111111111111", keypath));329BOOST_CHECK(ParseHDKeypath("m/0/00/0", keypath));330BOOST_CHECK(!ParseHDKeypath("m/0'/00/'0", keypath));332BOOST_CHECK(ParseHDKeypath("m/1/", keypath));333BOOST_CHECK(!ParseHDKeypath("m/1//", keypath));335// The cap applies to every element, wherever it sits in the path.336BOOST_CHECK(ParseHDKeypath("m/2147483647", keypath));337BOOST_CHECK(!ParseHDKeypath("m/2147483648", keypath));338BOOST_CHECK(!ParseHDKeypath("m/4294967295", keypath));339BOOST_CHECK(!ParseHDKeypath("m/4294967296", keypath));341BOOST_CHECK(ParseHDKeypath("m/0/2147483647", keypath));342BOOST_CHECK(!ParseHDKeypath("m/0/2147483648", keypath));343BOOST_CHECK(!ParseHDKeypath("m/0/4294967295", keypath));344BOOST_CHECK(!ParseHDKeypath("m/0/4294967296", keypath));345}347BOOST_AUTO_TEST_SUITE_END()
Independent explanations by MyBitcoinExplorer. Not affiliated with or endorsed by Bitcoin Core. Guides are educational and do not replace the source or its tests.
Bitcoin Core source © its contributors, distributed under the MIT license. Original notices and bundled third-party licenses are retained in the source tree.