def __init__(self, mnemonic, child): master_key = HDPrivateKey.master_key_from_mnemonic(mnemonic) root_keys = HDKey.from_path(master_key,"m/44'/60'/0'") acct_priv_key = root_keys[-1] keys = HDKey.from_path(acct_priv_key,'{change}/{index}'.format(change=0, index=child)) self.address = ethereumAddressFromBytes(bytes(keys[-1].public_key._key)) self.private_key = keys[-1]._key.to_hex()
'key_salt': bytes_to_str(enc_key_salt), 'account_type': "BIP44BitcoinMainnet", 'accounts': [{ 'public_key': "xpub6CNX3TRAXGpoV1a3ai3Hs9R85t63V3k6BGsTaxZZMJJ4DL6kRY8riYA1r6hxyeuxgeb33FfBgrJrV6wxv6VXEVHAfPGJNw8ZzbEJHgsbmpz", # nopep8 'last_payout_index': 2, 'last_change_index': 1 }], 'account_map': { 'default': 0 } } master = HDPrivateKey.master_key_from_mnemonic(master_seed, passphrase) mock_provider = MockProvider("BIP44BitcoinMainnet", master) def test_encrypt_decrypt(): mkey_enc, mseed_enc = Two1Wallet.encrypt(master_key=config['master_key'], master_seed=config['master_seed'], passphrase=passphrase, key_salt=enc_key_salt) mkey, mseed = Two1Wallet.decrypt(master_key_enc=mkey_enc, master_seed_enc=mseed_enc, passphrase=passphrase, key_salt=enc_key_salt) assert mkey == config['master_key']
import pytest from two1.bitcoin.crypto import HDKey, HDPrivateKey from two1.blockchain.mock_provider import MockProvider from two1.wallet.account_types import account_types from two1.wallet.cache_manager import CacheManager from two1.wallet.hd_account import HDAccount master_key_mnemonic = 'cage minimum apology region aspect wrist demise gravity another bulb tail invest' master_key_passphrase = "test" account_type = account_types['BIP44BitcoinMainnet'] master_key = HDPrivateKey.master_key_from_mnemonic( mnemonic=master_key_mnemonic, passphrase=master_key_passphrase) acct0_key = HDKey.from_path(master_key, account_type.account_derivation_prefix + "/0'")[-1] mock_provider = MockProvider(account_type, master_key) def test_init(): with pytest.raises(TypeError): HDAccount(master_key_passphrase, "default", 0, mock_provider, CacheManager()) ''' The MockProvider is designed in a strange way that explains how the parameters are chosen for test_all: the get_transactions side effects are set so that for each DISCOVERY_INCREMENT block of addresses, a single transaction is returned
import pytest from two1.bitcoin.crypto import HDKey, HDPrivateKey from two1.blockchain.mock_provider import MockProvider from two1.wallet.account_types import account_types from two1.wallet.cache_manager import CacheManager from two1.wallet.hd_account import HDAccount master_key_mnemonic = 'cage minimum apology region aspect wrist demise gravity another bulb tail invest' master_key_passphrase = "test" account_type = account_types['BIP44BitcoinMainnet'] master_key = HDPrivateKey.master_key_from_mnemonic(mnemonic=master_key_mnemonic, passphrase=master_key_passphrase) acct0_key = HDKey.from_path(master_key, account_type.account_derivation_prefix + "/0'")[-1] mock_provider = MockProvider(account_type, master_key) def test_init(): with pytest.raises(TypeError): HDAccount(master_key_passphrase, "default", 0, mock_provider, CacheManager()) ''' The MockProvider is designed in a strange way that explains how the parameters are chosen for test_all: the get_transactions side effects are set so that for each DISCOVERY_INCREMENT block of addresses, a single transaction is returned
master_seed=master_seed, passphrase=passphrase, key_salt=enc_key_salt) config = {'master_key': mkey_enc, 'master_seed': mseed_enc, 'locked': True, 'passphrase_hash': passphrase_hash, 'key_salt': bytes_to_str(enc_key_salt), 'account_type': "BIP44BitcoinMainnet", 'accounts': [{'public_key': "xpub6CNX3TRAXGpoV1a3ai3Hs9R85t63V3k6BGsTaxZZMJJ4DL6kRY8riYA1r6hxyeuxgeb33FfBgrJrV6wxv6VXEVHAfPGJNw8ZzbEJHgsbmpz", # nopep8 'last_payout_index': 2, 'last_change_index': 1}], 'account_map': {'default': 0}} master = HDPrivateKey.master_key_from_mnemonic(master_seed, passphrase) mock_provider = MockProvider("BIP44BitcoinMainnet", master) def test_encrypt_decrypt(): mkey_enc, mseed_enc = Two1Wallet.encrypt(master_key=config['master_key'], master_seed=config['master_seed'], passphrase=passphrase, key_salt=enc_key_salt) mkey, mseed = Two1Wallet.decrypt(master_key_enc=mkey_enc, master_seed_enc=mseed_enc, passphrase=passphrase, key_salt=enc_key_salt) assert mkey == config['master_key']