def test_vector_bip32(self): import pycoin.wallet as pywallet seed = unhexlify('000102030405060708090a0b0c0d0e0f') # seed = unhexlify('fffcf9f6f3f0edeae7e4e1dedbd8d5d2cfccc9c6c3c0bdbab7b4b1aeaba8a5a29f9c999693908d8a8784817e7b7875726f6c696663605d5a5754514e4b484542') bip32 = BIP32.from_seed(seed) self.assertEqual(string_to_number(bip32.node.private_key), int('e8f32e723decf4051aefac8e2c93c9c5b214313817cdb01a1494b917c8436b35', 16)) self.assertEqual(bip32.get_address(BTC, []), '15mKKb2eos1hWa6tisdPwwDC1a5J1y9nma') self.assertEqual(bip32.get_address(BTC, [bip32.prime(0)]), '19Q2WoS5hSS6T8GjhK8KZLMgmWaq4neXrh') seed = unhexlify('fffcf9f6f3f0edeae7e4e1dedbd8d5d2cfccc9c6c3c0bdbab7b4b1aeaba8a5a29f9c999693908d8a8784817e7b7875726f6c696663605d5a5754514e4b484542') bip32 = BIP32.from_seed(seed) self.assertEqual(bip32.get_address(BTC, [0]), '19EuDJdgfRkwCmRzbzVBHZWQG9QNWhftbZ') self.assertEqual(bip32.get_address(BTC, [0, bip32.prime(2147483647)]), '1Lke9bXGhn5VPrBuXgN12uGUphrttUErmk') pw = pywallet.Wallet(chain_code=bip32.node.chain_code, secret_exponent_bytes=bip32.node.private_key, parent_fingerprint=struct.pack('I', bip32.node.fingerprint), depth=bip32.node.depth, child_number=bip32.node.child_num, is_private=True, is_test=False) privkey1 = hexlify(pw.subkey(0, is_prime=True, as_private=True).secret_exponent_bytes) privkey2 = hexlify(bip32._get_subnode(bip32.node, bip32.prime(0)).private_key) self.assertEqual(privkey1, privkey2)
def test_vector_bip32(self): seed = unhexlify('000102030405060708090a0b0c0d0e0f') bip32 = BIP32.from_seed(seed) self.assertEqual(bip32._secexp(), int('e8f32e723decf4051aefac8e2c93c9c5b214313817cdb01a1494b917c8436b35', 16)) self.assertEqual(bip32.get_address([], 0), '15mKKb2eos1hWa6tisdPwwDC1a5J1y9nma') self.assertEqual(bip32.get_address([0], 0), '19Q2WoS5hSS6T8GjhK8KZLMgmWaq4neXrh')
def test_address(self): import pycoin.wallet as pywallet seed = unhexlify('000102030405060708090a0b0c0d0e0f') bip32 = BIP32.from_seed(seed) self.assertEqual(bip32.get_address(BTC, [bip32.prime(0), 1, bip32.prime(2)]), '1NjxqbA9aZWnh17q1UW3rB4EPu79wDXj7x') self.assertEqual(bip32.get_address(BTC, [bip32.prime(0), 1, bip32.prime(2), 2]), '1LjmJcdPnDHhNTUgrWyhLGnRDKxQjoxAgt') '''
def test_subkey_simple(self): seed = unhexlify('000102030405060708090a0b0c0d0e0f') bip32 = BIP32.from_seed(seed) secexp1 = string_to_number(BIP32._get_subkey(bip32.xprv, 0).private_key) wallet = pywallet.Wallet.from_master_secret(seed) secexp2 = wallet.subkey(0, is_prime=True, as_private=True).secret_exponent self.assertEqual(secexp1, secexp2)
def test_subkey_path(self): seed = unhexlify('000102030405060708090a0b0c0d0e0f') path = [1, 1, 2] bip32 = BIP32.from_seed(seed) private_key = bip32.get_private_key(path) secexp1 = string_to_number(private_key) path_string = '/'.join([ "%d'" % p for p in path]) wallet = pywallet.Wallet.from_master_secret(seed) secexp2 = wallet.subkey_for_path(path_string) self.assertEqual(secexp1, secexp2.secret_exponent)
def test_address(self): seed = unhexlify('000102030405060708090a0b0c0d0e0f') bip32 = BIP32.from_seed(seed) self.assertEqual(bip32.get_address([0, ], 0), '19Q2WoS5hSS6T8GjhK8KZLMgmWaq4neXrh')