def test_xpriv_generation(self): # Test vectors. for test_vector in self.english_vectors: root_seed = bip39.root_seed_from_mnemonic( mnemonic=test_vector['mnemonic'], salt=test_vector['salt']) root = HDKey.from_root_seed(root_seed=root_seed) self.assertEqual(root.xpriv, test_vector['root']['xpriv'])
def test_xpriv_when_derived(self): # Test vectors. for test_vector in self.english_vectors: root_seed = bip39.root_seed_from_mnemonic( mnemonic=test_vector['mnemonic'], salt=test_vector['salt']) root = HDKey.from_root_seed(root_seed=root_seed) node = root.derive_path(test_vector['derived_node']['path']) self.assertEqual(node.xpriv, test_vector['derived_node']['xpriv'])
def test_fingerprint_generation(self): # Test vectors. for test_vector in self.english_vectors: root_seed = bip39.root_seed_from_mnemonic( mnemonic=test_vector['mnemonic'], salt=test_vector['salt']) root = HDKey.from_root_seed(root_seed=root_seed) self.assertEqual(root.fingerprint, bytes.fromhex(test_vector['root']['fingerprint']))
def test_private_key_generation(self): # Test vectors. for test_vector in self.english_vectors: root_seed = bip39.root_seed_from_mnemonic( mnemonic=test_vector['mnemonic'], salt=test_vector['salt']) root = HDKey.from_root_seed(root_seed=root_seed) self.assertEqual(root.privkey.hex(), test_vector['root']['private_key'])
def test_from_root_seed(self): for test_vector in self.english_vectors: root = HDKey.from_root_seed(bytes.fromhex(test_vector['seed'])) child = root.derive_path(test_vector['derived_node']['path']) for (obj, choice) in zip([root, child], ['root', 'derived_node']): self.assertEqual(obj.xpriv, test_vector[choice]['xpriv']) self.assertEqual(obj.xpub, test_vector[choice]['xpub']) self.assertEqual(obj.privkey.hex(), test_vector[choice]['private_key']) self.assertEqual(obj.pubkey.hex(), test_vector[choice]['public_key']) self.assertEqual(obj.index, test_vector[choice]['index']) self.assertEqual( obj.fingerprint, bytes.fromhex(test_vector[choice]['fingerprint'])) self.assertEqual( obj.chain_code, bytes.fromhex(test_vector[choice]['chain_code'])) self.assertEqual(obj.depth, test_vector[choice]['depth'])
def test_node_path_derivation(self): # Test vectors. for test_vector in self.english_vectors: root_seed = bip39.root_seed_from_mnemonic( mnemonic=test_vector['mnemonic'], salt=test_vector['salt']) root = HDKey.from_root_seed(root_seed=root_seed) node = root.derive_path(test_vector['derived_node']['path']) self.assertEqual(node.xpriv, test_vector['derived_node']['xpriv']) self.assertEqual(node.xpub, test_vector['derived_node']['xpub']) self.assertEqual(node.privkey.hex(), test_vector['derived_node']['private_key']) self.assertEqual(node.pubkey.hex(), test_vector['derived_node']['public_key']) self.assertEqual(node.index, test_vector['derived_node']['index']) self.assertEqual( node.fingerprint, bytes.fromhex(test_vector['derived_node']['fingerprint'])) self.assertEqual( node.chain_code, bytes.fromhex(test_vector['derived_node']['chain_code'])) self.assertEqual(node.depth, test_vector['derived_node']['depth'])
from riemann_keys.hdkey import HDKey # Mnemonic to root MNEMONIC = "keen speed ice always runway film setup sentence update stove distance merge" root_seed = HDKey.root_seed_from_mnemonic(mnemonic=MNEMONIC) root = HDKey.from_root_seed(root_seed=root_seed) print("public key " + root.public_key.hex()) print("private key " + root.private_key.hex()) print("chaincode " + root.chain_code.hex()) print("xpub " + root.extended_public_key) print("xpriv " + root.extended_private_key) print("\n") # Derive to a node at depth of 5 node = root.derive_path("m/44'/1'/1'/0/1") print("public key " + node.public_key.hex()) print("private key " + node.private_key.hex()) print("chaincode " + node.chain_code.hex()) print("xpub " + node.extended_public_key) print("xpriv " + node.extended_private_key)