commit 5a83ec7c4e092125468a0d200fa3f43e023047cd
parent 941b7e1ccd5cc76eb18c094e003faa8cccffaa20
Author: Jared Tobin <jared@jtobin.io>
Date: Fri, 21 Feb 2025 11:25:32 +0400
test: vector 2
Diffstat:
M | test/Main.hs | | | 50 | ++++++++++++++++++++++++++++++++++++++++++++++++-- |
1 file changed, 48 insertions(+), 2 deletions(-)
diff --git a/test/Main.hs b/test/Main.hs
@@ -10,7 +10,10 @@ import Test.Tasty
import qualified Test.Tasty.HUnit as H
main :: IO ()
-main = defaultMain vector_1
+main = defaultMain $ testGroup "BIP32 vectors" [
+ vector_1
+ , vector_2
+ ]
seed_1 :: BS.ByteString
seed_1 = case B16.decode "000102030405060708090a0b0c0d0e0f" of
@@ -54,7 +57,7 @@ xprv_1_m_0'_1_2'_2_1000000000 :: BS.ByteString
xprv_1_m_0'_1_2'_2_1000000000 = "xprvA41z7zogVVwxVSgdKUHDy1SKmdb533PjDz7J6N6mV6uS3ze1ai8FHa8kmHScGpWmj4WggLyQjgPie1rFSruoUihUZREPSL39UNdE3BBDu76"
vector_1 :: TestTree
-vector_1 = H.testCase "seed 1" $ do
+vector_1 = H.testCase "BIP32 vector 1" $ do
let Just _m = master seed_1
H.assertEqual "M" xpub_1_m (xpub _m)
H.assertEqual "m" xprv_1_m (xprv _m)
@@ -90,3 +93,46 @@ vector_1 = H.testCase "seed 1" $ do
H.assertEqual "m/0'/1/2'/2/1000000000" xprv_1_m_0'_1_2'_2_1000000000
(xprv (derive_partial _m "m/0'/1/2'/2/1000000000"))
+seed_2 :: BS.ByteString
+seed_2 = case B16.decode "fffcf9f6f3f0edeae7e4e1dedbd8d5d2cfccc9c6c3c0bdbab7b4b1aeaba8a5a29f9c999693908d8a8784817e7b7875726f6c696663605d5a5754514e4b484542" of
+ Nothing -> error "bang"
+ Just b -> b
+
+
+vector_2 :: TestTree
+vector_2 = H.testCase "BIP32 vector 2" $ do
+ let Just mas = master seed_2
+ _m = derive_partial mas "m"
+ H.assertEqual "M" "xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSCGu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB"
+ (xpub _m)
+ H.assertEqual "m" "xprv9s21ZrQH143K31xYSDQpPDxsXRTUcvj2iNHm5NUtrGiGG5e2DtALGdso3pGz6ssrdK4PFmM8NSpSBHNqPqm55Qn3LqFtT2emdEXVYsCzC2U"
+ (xprv _m)
+ let _m_0 = derive_partial mas "m/0"
+ H.assertEqual "M/0" "xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH"
+ (xpub _m_0)
+ H.assertEqual "m/0" "xprv9vHkqa6EV4sPZHYqZznhT2NPtPCjKuDKGY38FBWLvgaDx45zo9WQRUT3dKYnjwih2yJD9mkrocEZXo1ex8G81dwSM1fwqWpWkeS3v86pgKt"
+ (xprv _m_0)
+ let _m_0_2147483647' = derive_partial mas "m/0/2147483647'"
+ H.assertEqual "M/0/2147483647'" "xpub6ASAVgeehLbnwdqV6UKMHVzgqAG8Gr6riv3Fxxpj8ksbH9ebxaEyBLZ85ySDhKiLDBrQSARLq1uNRts8RuJiHjaDMBU4Zn9h8LZNnBC5y4a"
+ (xpub _m_0_2147483647')
+ H.assertEqual "m/0/2147483647'" "xprv9wSp6B7kry3Vj9m1zSnLvN3xH8RdsPP1Mh7fAaR7aRLcQMKTR2vidYEeEg2mUCTAwCd6vnxVrcjfy2kRgVsFawNzmjuHc2YmYRmagcEPdU9"
+ (xprv _m_0_2147483647')
+ let _m_0_2147483647'_1 = derive_partial mas "m/0/2147483647'/1"
+ H.assertEqual "M/0/2147483647'/1" "xpub6DF8uhdarytz3FWdA8TvFSvvAh8dP3283MY7p2V4SeE2wyWmG5mg5EwVvmdMVCQcoNJxGoWaU9DCWh89LojfZ537wTfunKau47EL2dhHKon"
+ (xpub _m_0_2147483647'_1)
+ H.assertEqual "m/0/2147483647'/1" "xprv9zFnWC6h2cLgpmSA46vutJzBcfJ8yaJGg8cX1e5StJh45BBciYTRXSd25UEPVuesF9yog62tGAQtHjXajPPdbRCHuWS6T8XA2ECKADdw4Ef"
+ (xprv _m_0_2147483647'_1)
+ let _m_0_2147483647'_1_2147483646' =
+ derive_partial mas "m/0/2147483647'/1/2147483646'"
+ H.assertEqual "M/0/2147483647'/1/2147483646'" "xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL"
+ (xpub _m_0_2147483647'_1_2147483646')
+ H.assertEqual "m/0/2147483647'/1/2147483646'" "xprvA1RpRA33e1JQ7ifknakTFpgNXPmW2YvmhqLQYMmrj4xJXXWYpDPS3xz7iAxn8L39njGVyuoseXzU6rcxFLJ8HFsTjSyQbLYnMpCqE2VbFWc"
+ (xprv _m_0_2147483647'_1_2147483646')
+ let _m_0_2147483647'_1_2147483646'_2 =
+ derive_partial mas "m/0/2147483647'/1/2147483646'/2"
+ H.assertEqual "M/0/2147483647'/1/2147483646'/2" "xpub6FnCn6nSzZAw5Tw7cgR9bi15UV96gLZhjDstkXXxvCLsUXBGXPdSnLFbdpq8p9HmGsApME5hQTZ3emM2rnY5agb9rXpVGyy3bdW6EEgAtqt"
+ (xpub _m_0_2147483647'_1_2147483646'_2)
+ H.assertEqual "m/0/2147483647'/1/2147483646'/2" "xprvA2nrNbFZABcdryreWet9Ea4LvTJcGsqrMzxHx98MMrotbir7yrKCEXw7nadnHM8Dq38EGfSh6dqA9QWTyefMLEcBYJUuekgW4BYPJcr9E7j"
+ (xprv _m_0_2147483647'_1_2147483646'_2)
+
+