def test_bip32_root(): Net.set_to(SVMainnet) k = BIP32_KeyStore({}) k.add_xprv_from_seed(b'BitcoinSV', 'm') assert k.xprv == ('xprv9s21ZrQH143K48ebsYkLU9UPzgdDVfhT6SMdWFJ8ZXak1bjKVRLu' 'xdmMCh7HZkwciZd7fga4gK4XW2QZhvWz5os6hJwqLfpZmW9r7pLgn9s') Net.set_to(SVTestnet) k = BIP32_KeyStore({}) k.add_xprv_from_seed(b'BitcoinSV', 'm') assert k.xprv == ('tprv8ZgxMBicQKsPewt8Y7bqdo6PJp3RjBjTRzGkNfib3W5DoCUQUng' 'fUP8o7sGwa8Kw619tfnBpqfeKxsxJq8rvts8hDxA912YcgbuGZX3AZDd') Net.set_to(SVMainnet)
def test_parse_xpubkey(self): xpub = ( 'xpub661MyMwAqRbcH1RHYeZc1zgwYLJ1dNozE8npCe81pnNYtN6e5KsF6cmt17Fv8w' 'GvJrRiv6Kewm8ggBG6N3XajhoioH3stUmLRi53tk46CiA') assert BIP32_KeyStore.parse_xpubkey( 'ff0488b21e000000000000000000f79d7a4d3ea07099f09fbf35c3103908cbb4b1f30e8602a06ffbdb' 'b213d0025602e9aa22cc7106abab85e4c41f18f030c370213769c18d6754f3d0584e69a7fa1201000a00' ) == (xpub, [1, 10]) assert BIP32_KeyStore.parse_xpubkey( 'ff0488b21e000000000000000000f79d7a4d3ea07099f09fbf35c3103908cbb4b1f30e8602a06ffbdbb2' '13d0025602e9aa22cc7106abab85e4c41f18f030c370213769c18d6754f3d0584e69a7fa1200001900' ) == (xpub, [0, 25])
def test_get_private_key(self): xprv = ('xprv9s21ZrQH143K4XLpSd2berkCzJTXDv68rusDQFiQGSqa1ZmVXnYzYpTQ9' 'qYiSB7mHvg6kEsrd2ZtnHRJ61sZhSN4jZ2T8wxA4T75BE4QQZ1') password = '******' xprv = pw_encode(xprv, password) keystore = BIP32_KeyStore({'xprv': xprv}) privkey = keystore.get_private_key((1, 2, 3), password) assert privkey == (bytes.fromhex('985e4b09a0b05702c073b5086fcbb4b7dde4625bb98' '9ec51ce4c3337a7de2a13'), True)
def multisig_keystores(self): seed = 'ee6ea9eceaf649640051a4c305ac5c59' keystore1 = Old_KeyStore.from_seed(seed) xprv = ('xprv9s21ZrQH143K4XLpSd2berkCzJTXDv68rusDQFiQGSqa1ZmVXnYzYpTQ9' 'qYiSB7mHvg6kEsrd2ZtnHRJ61sZhSN4jZ2T8wxA4T75BE4QQZ1') xpub = ('xpub661MyMwAqRbcH1RHYeZc1zgwYLJ1dNozE8npCe81pnNYtN6e5KsF6cmt17Fv8w' 'GvJrRiv6Kewm8ggBG6N3XajhoioH3stUmLRi53tk46CiA') keystore2 = BIP32_KeyStore({'xprv': xprv, 'xpub': xpub}) return [keystore1, keystore2]
def test_check_password(self, password): xprv = ('xprv9s21ZrQH143K4XLpSd2berkCzJTXDv68rusDQFiQGSqa1ZmVXnYzYpTQ9' 'qYiSB7mHvg6kEsrd2ZtnHRJ61sZhSN4jZ2T8wxA4T75BE4QQZ1') xpub = ('xpub661MyMwAqRbcH1RHYeZc1zgwYLJ1dNozE8npCe81pnNYtN6e5KsF6cmt17Fv8w' 'GvJrRiv6Kewm8ggBG6N3XajhoioH3stUmLRi53tk46CiA') xprv = pw_encode(xprv, password) keystore = BIP32_KeyStore({'xprv': xprv, 'xpub': xpub}) keystore.check_password(password) with pytest.raises(InvalidPassword): keystore.check_password('guess') if password is not None: with pytest.raises(InvalidPassword): keystore.check_password(None)
def test_derive_pubkey(self, for_change, n, pubkey): xpub = ( 'xpub661MyMwAqRbcH1RHYeZc1zgwYLJ1dNozE8npCe81pnNYtN6e5KsF6cmt17Fv8w' 'GvJrRiv6Kewm8ggBG6N3XajhoioH3stUmLRi53tk46CiA') keystore = BIP32_KeyStore({'xpub': xpub}) assert keystore.derive_pubkey(for_change, n) == pubkey
def test_derive_pubkey(self, for_change, n, pubkey_hex): xpub = ('xpub661MyMwAqRbcH1RHYeZc1zgwYLJ1dNozE8npCe81pnNYtN6e5KsF6cmt17Fv8w' 'GvJrRiv6Kewm8ggBG6N3XajhoioH3stUmLRi53tk46CiA') keystore = BIP32_KeyStore({'xpub': xpub}) pubkey = keystore.derive_pubkey((for_change, n)) assert pubkey == XPublicKey.from_hex(pubkey_hex).to_public_key()