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.
501"68616e20626c6f636b2d73697a6520646174612e20546865206b6579206e6565"502"647320746f20626520686173686564206265666f7265206265696e6720757365"503"642062792074686520484d414320616c676f726974686d2e",504"9b09ffa71b942fcb27635fbcd5b0e944bfdc63644f0713938a7f51535c3a35e2");505// Test case with key length 63 bytes.506TestHMACSHA256("4a6566654a6566654a6566654a6566654a6566654a6566654a6566654a656665"507"4a6566654a6566654a6566654a6566654a6566654a6566654a6566654a6566",508"7768617420646f2079612077616e7420666f72206e6f7468696e673f",509"9de4b546756c83516720a4ad7fe7bdbeac4298c6fdd82b15f895a6d10b0769a6");510// Test case with key length 64 bytes.511TestHMACSHA256("4a6566654a6566654a6566654a6566654a6566654a6566654a6566654a656665"512"4a6566654a6566654a6566654a6566654a6566654a6566654a6566654a656665",513"7768617420646f2079612077616e7420666f72206e6f7468696e673f",514"528c609a4c9254c274585334946b7c2661bad8f1fc406b20f6892478d19163dd");515// Test case with key length 65 bytes.516TestHMACSHA256("4a6566654a6566654a6566654a6566654a6566654a6566654a6566654a656665"517"4a6566654a6566654a6566654a6566654a6566654a6566654a6566654a656665"518"4a",519"7768617420646f2079612077616e7420666f72206e6f7468696e673f",520"d06af337f359a2330deffb8e3cbe4b5b7aa8ca1f208528cdbd245d5dc63c4483");521}523BOOST_AUTO_TEST_CASE(hmac_sha512_testvectors) {524// test cases 1, 2, 3, 4, 6 and 7 of RFC 4231525TestHMACSHA512("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b",526"4869205468657265",527"87aa7cdea5ef619d4ff0b4241a1d6cb02379f4e2ce4ec2787ad0b30545e17cde"528"daa833b7d6b8a702038b274eaea3f4e4be9d914eeb61f1702e696c203a126854");529TestHMACSHA512("4a656665",530"7768617420646f2079612077616e7420666f72206e6f7468696e673f",531"164b7a7bfcf819e2e395fbe73b56e0a387bd64222e831fd610270cd7ea250554"532"9758bf75c05a994a6d034f65f8f0e6fdcaeab1a34d4a6b4b636e070a38bce737");533TestHMACSHA512("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",534"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"535"dddddddddddddddddddddddddddddddddddd",536"fa73b0089d56a284efb0f0756c890be9b1b5dbdd8ee81a3655f83e33b2279d39"537"bf3e848279a722c806b485a47e67c807b946a337bee8942674278859e13292fb");538TestHMACSHA512("0102030405060708090a0b0c0d0e0f10111213141516171819",539"cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"540"cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd",541"b0ba465637458c6990e5a8c5f61d4af7e576d97ff94b872de76f8050361ee3db"542"a91ca5c11aa25eb4d679275cc5788063a5f19741120c4f2de2adebeb10a298dd");543TestHMACSHA512("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"544"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"545"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"546"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"547"aaaaaa",548"54657374205573696e67204c6172676572205468616e20426c6f636b2d53697a"549"65204b6579202d2048617368204b6579204669727374",550"80b24263c7c1a3ebb71493c1dd7be8b49b46d1f41b4aeec1121b013783f8f352"551"6b56d037e05f2598bd0fd2215d6a1e5295e64f73f63f0aec8b915a985d786598");552TestHMACSHA512("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"553"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"554"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"555"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"556"aaaaaa",557"5468697320697320612074657374207573696e672061206c6172676572207468"558"616e20626c6f636b2d73697a65206b657920616e642061206c61726765722074"559"68616e20626c6f636b2d73697a6520646174612e20546865206b6579206e6565"560"647320746f20626520686173686564206265666f7265206265696e6720757365"561"642062792074686520484d414320616c676f726974686d2e",562"e37b6a775dc87dbaa4dfa9f96e5e3ffddebd71f8867289865df5a32d20cdc944"563"b6022cac3c4982b10d5eeb55c3e4de15134676fb6de0446065c97440fa8c6a58");564// Test case with key length 127 bytes.565TestHMACSHA512("4a6566654a6566654a6566654a6566654a6566654a6566654a6566654a656665"566"4a6566654a6566654a6566654a6566654a6566654a6566654a6566654a656665"567"4a6566654a6566654a6566654a6566654a6566654a6566654a6566654a656665"568"4a6566654a6566654a6566654a6566654a6566654a6566654a6566654a6566",569"7768617420646f2079612077616e7420666f72206e6f7468696e673f",570"267424dfb8eeb999f3e5ec39a4fe9fd14c923e6187e0897063e5c9e02b2e624a"571"c04413e762977df71a9fb5d562b37f89dfdfb930fce2ed1fa783bbc2a203d80e");572// Test case with key length 128 bytes.573TestHMACSHA512("4a6566654a6566654a6566654a6566654a6566654a6566654a6566654a656665"574"4a6566654a6566654a6566654a6566654a6566654a6566654a6566654a656665"575"4a6566654a6566654a6566654a6566654a6566654a6566654a6566654a656665"576"4a6566654a6566654a6566654a6566654a6566654a6566654a6566654a656665",577"7768617420646f2079612077616e7420666f72206e6f7468696e673f",578"43aaac07bb1dd97c82c04df921f83b16a68d76815cd1a30d3455ad43a3d80484"579"2bb35462be42cc2e4b5902de4d204c1c66d93b47d1383e3e13a3788687d61258");580// Test case with key length 129 bytes.581TestHMACSHA512("4a6566654a6566654a6566654a6566654a6566654a6566654a6566654a656665"582"4a6566654a6566654a6566654a6566654a6566654a6566654a6566654a656665"583"4a6566654a6566654a6566654a6566654a6566654a6566654a6566654a656665"584"4a6566654a6566654a6566654a6566654a6566654a6566654a6566654a656665"585"4a",586"7768617420646f2079612077616e7420666f72206e6f7468696e673f",587"0b273325191cfc1b4b71d5075c8fcad67696309d292b1dad2cd23983a35feb8e"588"fb29795e79f2ef27f68cb1e16d76178c307a67beaad9456fac5fdffeadb16e2c");589}591BOOST_AUTO_TEST_CASE(aes_testvectors) {592// AES test vectors from FIPS 197.593TestAES256("000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "00112233445566778899aabbccddeeff", "8ea2b7ca516745bfeafc49904b496089");595// AES-ECB test vectors from NIST sp800-38a.596TestAES256("603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4", "6bc1bee22e409f96e93d7e117393172a", "f3eed1bdb5d2a03c064b5a7e3db181f8");597TestAES256("603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4", "ae2d8a571e03ac9c9eb76fac45af8e51", "591ccb10d410ed26dc5ba74a31362870");598TestAES256("603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4", "30c81c46a35ce411e5fbc1191a0a52ef", "b6ed21b99ca6f4f9f153e7b1beafed1d");599TestAES256("603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4", "f69f2445df4f9b17ad2b417be66c3710", "23304b7a39f9f3ff067d8d8f9e24ecc7");600}602BOOST_AUTO_TEST_CASE(aes_cbc_testvectors) {603// NIST AES CBC 256-bit encryption test-vectors604TestAES256CBC("603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4", \605"000102030405060708090A0B0C0D0E0F", false, "6bc1bee22e409f96e93d7e117393172a", \606"f58c4c04d6e5f1ba779eabfb5f7bfbd6");607TestAES256CBC("603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4", \608"F58C4C04D6E5F1BA779EABFB5F7BFBD6", false, "ae2d8a571e03ac9c9eb76fac45af8e51", \609"9cfc4e967edb808d679f777bc6702c7d");610TestAES256CBC("603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4", \611"9CFC4E967EDB808D679F777BC6702C7D", false, "30c81c46a35ce411e5fbc1191a0a52ef",612"39f23369a9d9bacfa530e26304231461");613TestAES256CBC("603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4", \614"39F23369A9D9BACFA530E26304231461", false, "f69f2445df4f9b17ad2b417be66c3710", \615"b2eb05e2c39be9fcda6c19078c6a9d1b");617// The same vectors with padding enabled618TestAES256CBC("603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4", \619"000102030405060708090A0B0C0D0E0F", true, "6bc1bee22e409f96e93d7e117393172a", \620"f58c4c04d6e5f1ba779eabfb5f7bfbd6485a5c81519cf378fa36d42b8547edc0");621TestAES256CBC("603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4", \622"F58C4C04D6E5F1BA779EABFB5F7BFBD6", true, "ae2d8a571e03ac9c9eb76fac45af8e51", \623"9cfc4e967edb808d679f777bc6702c7d3a3aa5e0213db1a9901f9036cf5102d2");624TestAES256CBC("603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4", \625"9CFC4E967EDB808D679F777BC6702C7D", true, "30c81c46a35ce411e5fbc1191a0a52ef",626"39f23369a9d9bacfa530e263042314612f8da707643c90a6f732b3de1d3f5cee");627TestAES256CBC("603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4", \628"39F23369A9D9BACFA530E26304231461", true, "f69f2445df4f9b17ad2b417be66c3710", \629"b2eb05e2c39be9fcda6c19078c6a9d1b3f461796d6b0d6b2e0c2a72b4d80e644");630}633BOOST_AUTO_TEST_CASE(chacha20_testvector)634{635/* Example from RFC8439 section 2.3.2. */636TestChaCha20("",637"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",638{0x09000000, 0x4a000000}, 1,639"10f1e7e4d13b5915500fdd1fa32071c4c7d1f4c733c068030422aa9ac3d46c4e"640"d2826446079faa0914c2d705d98b02a2b5129cd1de164eb9cbd083e8a2503c4e");642/* Example from RFC8439 section 2.4.2. */643TestChaCha20("4c616469657320616e642047656e746c656d656e206f662074686520636c6173"644"73206f66202739393a204966204920636f756c64206f6666657220796f75206f"645"6e6c79206f6e652074697020666f7220746865206675747572652c2073756e73"646"637265656e20776f756c642062652069742e",647"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",648{0, 0x4a000000}, 1,649"6e2e359a2568f98041ba0728dd0d6981e97e7aec1d4360c20a27afccfd9fae0b"650"f91b65c5524733ab8f593dabcd62b3571639d624e65152ab8f530c359f0861d8"651"07ca0dbf500d6a6156a38e088a22b65e52bc514d16ccf806818ce91ab7793736"652"5af90bbf74a35be6b40b8eedf2785e42874d");654// RFC 7539/8439 A.1 Test Vector #1:655TestChaCha20("",656"0000000000000000000000000000000000000000000000000000000000000000",657{0, 0}, 0,658"76b8e0ada0f13d90405d6ae55386bd28bdd219b8a08ded1aa836efcc8b770dc7"659"da41597c5157488d7724e03fb8d84a376a43b8f41518a11cc387b669b2ee6586");661// RFC 7539/8439 A.1 Test Vector #2:662TestChaCha20("",663"0000000000000000000000000000000000000000000000000000000000000000",664{0, 0}, 1,665"9f07e7be5551387a98ba977c732d080dcb0f29a048e3656912c6533e32ee7aed"666"29b721769ce64e43d57133b074d839d531ed1f28510afb45ace10a1f4b794d6f");668// RFC 7539/8439 A.1 Test Vector #3:669TestChaCha20("",670"0000000000000000000000000000000000000000000000000000000000000001",671{0, 0}, 1,672"3aeb5224ecf849929b9d828db1ced4dd832025e8018b8160b82284f3c949aa5a"673"8eca00bbb4a73bdad192b5c42f73f2fd4e273644c8b36125a64addeb006c13a0");675// RFC 7539/8439 A.1 Test Vector #4:676TestChaCha20("",677"00ff000000000000000000000000000000000000000000000000000000000000",678{0, 0}, 2,679"72d54dfbf12ec44b362692df94137f328fea8da73990265ec1bbbea1ae9af0ca"680"13b25aa26cb4a648cb9b9d1be65b2c0924a66c54d545ec1b7374f4872e99f096");682// RFC 7539/8439 A.1 Test Vector #5:683TestChaCha20("",684"0000000000000000000000000000000000000000000000000000000000000000",685{0, 0x200000000000000}, 0,686"c2c64d378cd536374ae204b9ef933fcd1a8b2288b3dfa49672ab765b54ee27c7"687"8a970e0e955c14f3a88e741b97c286f75f8fc299e8148362fa198a39531bed6d");689// RFC 7539/8439 A.2 Test Vector #1:690TestChaCha20("0000000000000000000000000000000000000000000000000000000000000000"691"0000000000000000000000000000000000000000000000000000000000000000",692"0000000000000000000000000000000000000000000000000000000000000000",693{0, 0}, 0,694"76b8e0ada0f13d90405d6ae55386bd28bdd219b8a08ded1aa836efcc8b770dc7"695"da41597c5157488d7724e03fb8d84a376a43b8f41518a11cc387b669b2ee6586");697// RFC 7539/8439 A.2 Test Vector #2:698TestChaCha20("416e79207375626d697373696f6e20746f20746865204945544620696e74656e"699"6465642062792074686520436f6e7472696275746f7220666f72207075626c69"700"636174696f6e20617320616c6c206f722070617274206f6620616e2049455446"701"20496e7465726e65742d4472616674206f722052464320616e6420616e792073"702"746174656d656e74206d6164652077697468696e2074686520636f6e74657874"703"206f6620616e204945544620616374697669747920697320636f6e7369646572"704"656420616e20224945544620436f6e747269627574696f6e222e205375636820"705"73746174656d656e747320696e636c756465206f72616c2073746174656d656e"706"747320696e20494554462073657373696f6e732c2061732077656c6c20617320"707"7772697474656e20616e6420656c656374726f6e696320636f6d6d756e696361"708"74696f6e73206d61646520617420616e792074696d65206f7220706c6163652c"709"207768696368206172652061646472657373656420746f",710"0000000000000000000000000000000000000000000000000000000000000001",711{0, 0x200000000000000}, 1,712"a3fbf07df3fa2fde4f376ca23e82737041605d9f4f4f57bd8cff2c1d4b7955ec"713"2a97948bd3722915c8f3d337f7d370050e9e96d647b7c39f56e031ca5eb6250d"714"4042e02785ececfa4b4bb5e8ead0440e20b6e8db09d881a7c6132f420e527950"715"42bdfa7773d8a9051447b3291ce1411c680465552aa6c405b7764d5e87bea85a"716"d00f8449ed8f72d0d662ab052691ca66424bc86d2df80ea41f43abf937d3259d"717"c4b2d0dfb48a6c9139ddd7f76966e928e635553ba76c5c879d7b35d49eb2e62b"718"0871cdac638939e25e8a1e0ef9d5280fa8ca328b351c3c765989cbcf3daa8b6c"719"cc3aaf9f3979c92b3720fc88dc95ed84a1be059c6499b9fda236e7e818b04b0b"720"c39c1e876b193bfe5569753f88128cc08aaa9b63d1a16f80ef2554d7189c411f"721"5869ca52c5b83fa36ff216b9c1d30062bebcfd2dc5bce0911934fda79a86f6e6"722"98ced759c3ff9b6477338f3da4f9cd8514ea9982ccafb341b2384dd902f3d1ab"723"7ac61dd29c6f21ba5b862f3730e37cfdc4fd806c22f221");725// RFC 7539/8439 A.2 Test Vector #3:726TestChaCha20("2754776173206272696c6c69672c20616e642074686520736c6974687920746f"727"7665730a446964206779726520616e642067696d626c6520696e207468652077"728"6162653a0a416c6c206d696d737920776572652074686520626f726f676f7665"729"732c0a416e6420746865206d6f6d65207261746873206f757467726162652e",730"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0",731{0, 0x200000000000000}, 42,732"62e6347f95ed87a45ffae7426f27a1df5fb69110044c0d73118effa95b01e5cf"733"166d3df2d721caf9b21e5fb14c616871fd84c54f9d65b283196c7fe4f60553eb"734"f39c6402c42234e32a356b3e764312a61a5532055716ead6962568f87d3f3f77"735"04c6a8d1bcd1bf4d50d6154b6da731b187b58dfd728afa36757a797ac188d1");737// RFC 7539/8439 A.4 Test Vector #1:738TestChaCha20("",739"0000000000000000000000000000000000000000000000000000000000000000",740{0, 0}, 0,741"76b8e0ada0f13d90405d6ae55386bd28bdd219b8a08ded1aa836efcc8b770dc7");743// RFC 7539/8439 A.4 Test Vector #2:744TestChaCha20("",745"0000000000000000000000000000000000000000000000000000000000000001",746{0, 0x200000000000000}, 0,747"ecfa254f845f647473d3cb140da9e87606cb33066c447b87bc2666dde3fbb739");749// RFC 7539/8439 A.4 Test Vector #3:750TestChaCha20("",
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.