44
55TEST_DIR = pathlib .Path .resolve (pathlib .Path (__file__ )).parent
66
7+ def result_list_to_dict (results ):
8+ result = {}
9+ for algo , privkey , chaincode , keyset_id in results :
10+ result [algo ] = (privkey , chaincode , keyset_id )
11+ return result
712
813def test_recovery_basic ():
9- result = recover .restore_key_and_chaincode (TEST_DIR / "backup.zip" , TEST_DIR / "priv.pem" , "Thefireblocks1!" )
10-
11- ecdsa_priv_key , ecdsa_chaincode = result ['MPC_ECDSA_SECP256K1' ]
14+ result = result_list_to_dict (recover .restore_key_and_chaincode (TEST_DIR / "backup.zip" , TEST_DIR / "priv.pem" , "Thefireblocks1!" ))
15+ ecdsa_priv_key , ecdsa_chaincode , keyset_id = result ['MPC_ECDSA_SECP256K1' ]
1216 assert (ecdsa_priv_key == 0x473d1820ca4bf7cf6b018a8520b1ec0849cb99bce4fff45c5598723f67b3bd52 )
1317 pub = recover .get_public_key ("MPC_ECDSA_SECP256K1" , ecdsa_priv_key )
1418 assert (pub == "021d84f3b6d7c6888f81c7cc381b658d85319f27e1ea9c93dff128667fb4b82ba0" )
1519 assert (recover .encode_extended_key ('MPC_ECDSA_SECP256K1' , ecdsa_priv_key , ecdsa_chaincode , False ) == "xprv9s21ZrQH143K24Mfq5zL5MhWK9hUhhGbd45hLXo2Pq2oqzMMo63oStZzF9aunJDs4SsrmoxycAo6xxBTHawSz5sYxEy8TpCkv66Sci373DJ" )
1620 assert (recover .encode_extended_key ('MPC_ECDSA_SECP256K1' , pub , ecdsa_chaincode , True ) == "xpub661MyMwAqRbcEYS8w7XLSVeEsBXy79zSzH1J8vCdxAZningWLdN3zgtU6QJJZSgiCXT6sq7wa2jCk5t4Vv1r1E4q1venKghAAdyzieufGyX" )
21+ assert (keyset_id == 1 )
1722
1823
1924def test_full_recovery ():
20- result = recover .restore_key_and_chaincode (TEST_DIR / "backup_new.zip" , TEST_DIR / "priv2.pem" , "Thefireblocks1!" )
21- ecdsa_priv_key , ecdsa_chaincode = result ['MPC_ECDSA_SECP256K1' ]
22- eddsa_priv_key , eddsa_chaincode = result ['MPC_EDDSA_ED25519' ]
25+ result = result_list_to_dict ( recover .restore_key_and_chaincode (TEST_DIR / "backup_new.zip" , TEST_DIR / "priv2.pem" , "Thefireblocks1!" ) )
26+ ecdsa_priv_key , ecdsa_chaincode , keyset_id = result ['MPC_ECDSA_SECP256K1' ]
27+ eddsa_priv_key , eddsa_chaincode , keyset_id_eddsa = result ['MPC_EDDSA_ED25519' ]
2328
2429 assert (ecdsa_priv_key == 0x66b1baf063db6e7152480334ebab0ab098e85f682b784754e46c18c962a1aa9d )
2530 assert (eddsa_priv_key == 0xd74820d02cc2aa09e2d0bcb36aeb92625b3d92c8d202063eab5513fd4453a44 )
@@ -35,11 +40,13 @@ def test_full_recovery():
3540 assert (pub == "0050cfee85dabebed78f43e94a1b7afd13c20461ad66efa083779bdeffd22269d9" )
3641 assert (recover .encode_extended_key ('MPC_EDDSA_ED25519' , eddsa_priv_key , eddsa_chaincode , False ) == "fprv4LsXPWzhTTp9ax8NGVwbnRFuT3avVQ4ydHNWcu8hCGZd18TRKxgAzbrpY9bLJRe4Y2AyX9TfQdDPbmqEYoDCTju9QFZbUgdsxsmUgfvuEDK" )
3742 assert (recover .encode_extended_key ('MPC_EDDSA_ED25519' , pub , eddsa_chaincode , True ) == "fpub8sZZXw2wbqVpURAAA9cCBpv2256rejFtCayHuRAzcYN1qciBxMVmB6UgiDAQTUZh5EP9JZciPQPjKAHyqPYHELqEHWkvo1sxreEJgLyfCJj" )
43+ assert (keyset_id == 1 )
44+ assert (keyset_id_eddsa == 1 )
3845
3946
4047def test_recovery_old_format ():
41- result = recover .restore_key_and_chaincode (TEST_DIR / "backup_old_format.zip" , TEST_DIR / "priv.pem" , "Thefireblocks1!" )
42- ecdsa_priv_key , ecdsa_chaincode = result ['MPC_ECDSA_SECP256K1' ]
48+ result = result_list_to_dict ( recover .restore_key_and_chaincode (TEST_DIR / "backup_old_format.zip" , TEST_DIR / "priv.pem" , "Thefireblocks1!" ) )
49+ ecdsa_priv_key , ecdsa_chaincode , _ = result ['MPC_ECDSA_SECP256K1' ]
4350
4451 assert (ecdsa_priv_key == 0x473d1820ca4bf7cf6b018a8520b1ec0849cb99bce4fff45c5598723f67b3bd52 )
4552 pub = recover .get_public_key ("MPC_ECDSA_SECP256K1" , ecdsa_priv_key )
@@ -49,9 +56,9 @@ def test_recovery_old_format():
4956
5057
5158def test_cmp_recovery ():
52- result = recover .restore_key_and_chaincode (TEST_DIR / "backup_cmp.zip" , TEST_DIR / "priv.pem" , "Fireblocks1!" )
53- ecdsa_priv_key , ecdsa_chaincode = result ['MPC_CMP_ECDSA_SECP256K1' ]
54- eddsa_priv_key , eddsa_chaincode = result ['MPC_CMP_EDDSA_ED25519' ]
59+ result = result_list_to_dict ( recover .restore_key_and_chaincode (TEST_DIR / "backup_cmp.zip" , TEST_DIR / "priv.pem" , "Fireblocks1!" ) )
60+ ecdsa_priv_key , ecdsa_chaincode , _ = result ['MPC_CMP_ECDSA_SECP256K1' ]
61+ eddsa_priv_key , eddsa_chaincode , _ = result ['MPC_CMP_EDDSA_ED25519' ]
5562
5663 assert (ecdsa_priv_key == 0xf57c18e98a24ca0b36fbbd103233aff128b740426da189ce208545d44bbad050 )
5764 assert (eddsa_priv_key == 0xa536dc2f2d744ae78eb26fdfb4b9e234a649525e0a1142bf900cd9c26987007 )
@@ -76,9 +83,9 @@ def test_one_custom_chaincode_recovery():
7683 Hence all the extracted keys are they same, and differce lies mostly in the extended form of the key,
7784 which encodes the chaincode.
7885 '''
79- result = recover .restore_key_and_chaincode (TEST_DIR / "backup_with_one_custom_chaincode.zip" , TEST_DIR / "priv2.pem" , "Thefireblocks1!" )
80- ecdsa_priv_key , ecdsa_chaincode = result ['MPC_ECDSA_SECP256K1' ]
81- eddsa_priv_key , eddsa_chaincode = result ['MPC_EDDSA_ED25519' ]
86+ result = result_list_to_dict ( recover .restore_key_and_chaincode (TEST_DIR / "backup_with_one_custom_chaincode.zip" , TEST_DIR / "priv2.pem" , "Thefireblocks1!" ) )
87+ ecdsa_priv_key , ecdsa_chaincode , _ = result ['MPC_ECDSA_SECP256K1' ]
88+ eddsa_priv_key , eddsa_chaincode , _ = result ['MPC_EDDSA_ED25519' ]
8289
8390 assert (ecdsa_chaincode != eddsa_chaincode )
8491 assert (ecdsa_priv_key == 0x66b1baf063db6e7152480334ebab0ab098e85f682b784754e46c18c962a1aa9d )
@@ -110,9 +117,9 @@ def test_two_custom_chaincode_recovery():
110117 only the extended forms of the keys are different, as they encode the respective chaincodes.
111118
112119 '''
113- result = recover .restore_key_and_chaincode (TEST_DIR / "backup_with_two_custom_chaincode.zip" , TEST_DIR / "priv2.pem" , "Thefireblocks1!" )
114- ecdsa_priv_key , ecdsa_chaincode = result ['MPC_ECDSA_SECP256K1' ]
115- eddsa_priv_key , eddsa_chaincode = result ['MPC_EDDSA_ED25519' ]
120+ result = result_list_to_dict ( recover .restore_key_and_chaincode (TEST_DIR / "backup_with_two_custom_chaincode.zip" , TEST_DIR / "priv2.pem" , "Thefireblocks1!" ) )
121+ ecdsa_priv_key , ecdsa_chaincode , _ = result ['MPC_ECDSA_SECP256K1' ]
122+ eddsa_priv_key , eddsa_chaincode , _ = result ['MPC_EDDSA_ED25519' ]
116123
117124 assert (ecdsa_chaincode != eddsa_chaincode )
118125 assert (ecdsa_priv_key == 0x66b1baf063db6e7152480334ebab0ab098e85f682b784754e46c18c962a1aa9d )
@@ -132,9 +139,9 @@ def test_two_custom_chaincode_recovery():
132139
133140
134141def test_recovery_with_mobile_share_as_json ():
135- result = recover .restore_key_and_chaincode (TEST_DIR / "json_share.zip" , TEST_DIR / "priv.pem" , "Fireblocks1!" )
136- ecdsa_priv_key , ecdsa_chaincode = result ['MPC_CMP_ECDSA_SECP256K1' ]
137- eddsa_priv_key , eddsa_chaincode = result ['MPC_EDDSA_ED25519' ]
142+ result = result_list_to_dict ( recover .restore_key_and_chaincode (TEST_DIR / "json_share.zip" , TEST_DIR / "priv.pem" , "Fireblocks1!" ) )
143+ ecdsa_priv_key , ecdsa_chaincode , _ = result ['MPC_CMP_ECDSA_SECP256K1' ]
144+ eddsa_priv_key , eddsa_chaincode , _ = result ['MPC_EDDSA_ED25519' ]
138145
139146 assert (ecdsa_priv_key == 0x83af98f2f2bdea33eb34177b311d89569725a401c1fc4d6046d266b1ca0dc382 )
140147 assert (eddsa_priv_key == 0xd5c4d44f0f07aaa0bf18e039f28ec2131935ed696636f48ec46bab58e66296b )
@@ -153,9 +160,9 @@ def test_recovery_with_mobile_share_as_json():
153160
154161
155162def test_recovery_with_master_keys ():
156- result = recover .restore_key_and_chaincode (TEST_DIR / "backup_with_master_key.zip" , TEST_DIR / "priv_ncw.pem" , "2#0Iw0Qov@&QP09p" , key_pass = "SECRET" )
157- ecdsa_priv_key , ecdsa_chaincode = result ["MPC_CMP_ECDSA_SECP256K1" ]
158- eddsa_priv_key , eddsa_chaincode = result ["MPC_EDDSA_ED25519" ]
163+ result = result_list_to_dict ( recover .restore_key_and_chaincode (TEST_DIR / "backup_with_master_key.zip" , TEST_DIR / "priv_ncw.pem" , "2#0Iw0Qov@&QP09p" , key_pass = "SECRET" ) )
164+ ecdsa_priv_key , ecdsa_chaincode , _ = result ["MPC_CMP_ECDSA_SECP256K1" ]
165+ eddsa_priv_key , eddsa_chaincode , _ = result ["MPC_EDDSA_ED25519" ]
159166
160167 pub = recover .get_public_key ("MPC_ECDSA_SECP256K1" , ecdsa_priv_key )
161168 assert pub == "033f5e4fb621e4cc777e5b9cdc0ef06c7b55042e9ce6c3bf013daab9fba29b37b8"
0 commit comments