bip32

Pure Haskell BIP32 hierarchical deterministic wallets.
git clone git://git.ppad.tech/bip32.git
Log | Files | Refs | LICENSE

commit 4eb2679fa1734a1969edaac4641c04a1b6a2991c
parent 5a83ec7c4e092125468a0d200fa3f43e023047cd
Author: Jared Tobin <jared@jtobin.io>
Date:   Fri, 21 Feb 2025 11:30:10 +0400

test: vectors 3, 4

Diffstat:
Mtest/Main.hs | 46+++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 45 insertions(+), 1 deletion(-)

diff --git a/test/Main.hs b/test/Main.hs @@ -13,6 +13,8 @@ main :: IO () main = defaultMain $ testGroup "BIP32 vectors" [ vector_1 , vector_2 + , vector_3 + , vector_4 ] seed_1 :: BS.ByteString @@ -98,7 +100,6 @@ seed_2 = case B16.decode "fffcf9f6f3f0edeae7e4e1dedbd8d5d2cfccc9c6c3c0bdbab7b4b1 Nothing -> error "bang" Just b -> b - vector_2 :: TestTree vector_2 = H.testCase "BIP32 vector 2" $ do let Just mas = master seed_2 @@ -135,4 +136,47 @@ vector_2 = H.testCase "BIP32 vector 2" $ do H.assertEqual "m/0/2147483647'/1/2147483646'/2" "xprvA2nrNbFZABcdryreWet9Ea4LvTJcGsqrMzxHx98MMrotbir7yrKCEXw7nadnHM8Dq38EGfSh6dqA9QWTyefMLEcBYJUuekgW4BYPJcr9E7j" (xprv _m_0_2147483647'_1_2147483646'_2) +seed_3 :: BS.ByteString +seed_3 = case B16.decode "4b381541583be4423346c643850da4b320e46a87ae3d2a4e6da11eba819cd4acba45d239319ac14f863b8d5ab5a0d0c64d2e8a1e7d1457df2e5a3c51c73235be" of + Nothing -> error "bang" + Just b -> b + +vector_3 :: TestTree +vector_3 = H.testCase "BIP32 vector 3" $ do + let Just mas = master seed_3 + _m = derive_partial mas "m" + H.assertEqual "M" "xpub661MyMwAqRbcEZVB4dScxMAdx6d4nFc9nvyvH3v4gJL378CSRZiYmhRoP7mBy6gSPSCYk6SzXPTf3ND1cZAceL7SfJ1Z3GC8vBgp2epUt13" + (xpub _m) + H.assertEqual "m" "xprv9s21ZrQH143K25QhxbucbDDuQ4naNntJRi4KUfWT7xo4EKsHt2QJDu7KXp1A3u7Bi1j8ph3EGsZ9Xvz9dGuVrtHHs7pXeTzjuxBrCmmhgC6" + (xprv _m) + let _m_0' = derive_partial mas "m/0'" + H.assertEqual "M/0'" "xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrADWgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y" + (xpub _m_0') + H.assertEqual "m/0'" "xprv9uPDJpEQgRQfDcW7BkF7eTya6RPxXeJCqCJGHuCJ4GiRVLzkTXBAJMu2qaMWPrS7AANYqdq6vcBcBUdJCVVFceUvJFjaPdGZ2y9WACViL4L" + (xprv _m_0') + +seed_4 :: BS.ByteString +seed_4 = case B16.decode "3ddd5602285899a946114506157c7997e5444528f3003f6134712147db19b678" of + Nothing -> error "bang" + Just b -> b + +vector_4 :: TestTree +vector_4 = H.testCase "BIP32 vector 4" $ do + let Just mas = master seed_4 + _m = derive_partial mas "m" + H.assertEqual "M" "xpub661MyMwAqRbcGczjuMoRm6dXaLDEhW1u34gKenbeYqAix21mdUKJyuyu5F1rzYGVxyL6tmgBUAEPrEz92mBXjByMRiJdba9wpnN37RLLAXa" + (xpub _m) + H.assertEqual "m" "xprv9s21ZrQH143K48vGoLGRPxgo2JNkJ3J3fqkirQC2zVdk5Dgd5w14S7fRDyHH4dWNHUgkvsvNDCkvAwcSHNAQwhwgNMgZhLtQC63zxwhQmRv" + (xprv _m) + let _m_0' = derive_partial mas "m/0'" + H.assertEqual "M/0'" "xpub69AUMk3qDBi3uW1sXgjCmVjJ2G6WQoYSnNHyzkmdCHEhSZ4tBok37xfFEqHd2AddP56Tqp4o56AePAgCjYdvpW2PU2jbUPFKsav5ut6Ch1m" + (xpub _m_0') + H.assertEqual "m/0'" "xprv9vB7xEWwNp9kh1wQRfCCQMnZUEG21LpbR9NPCNN1dwhiZkjjeGRnaALmPXCX7SgjFTiCTT6bXes17boXtjq3xLpcDjzEuGLQBM5ohqkao9G" + (xprv _m_0') + let _m_0'_1' = derive_partial mas "m/0'/1'" + H.assertEqual "M/0'/1'" "xpub6BJA1jSqiukeaesWfxe6sNK9CCGaujFFSJLomWHprUL9DePQ4JDkM5d88n49sMGJxrhpjazuXYWdMf17C9T5XnxkopaeS7jGk1GyyVziaMt" + (xpub _m_0'_1') + H.assertEqual "m/0'/1'" "xprv9xJocDuwtYCMNAo3Zw76WENQeAS6WGXQ55RCy7tDJ8oALr4FWkuVoHJeHVAcAqiZLE7Je3vZJHxspZdFHfnBEjHqU5hG1Jaj32dVoS6XLT1" + (xprv _m_0'_1') +