def check_legacy_parent_of_multisig_wallet(wallet: Wallet) -> None: assert len(wallet.get_accounts()) == 1 account: MultisigAccount = wallet.get_accounts()[0] m = account.m n = account.n parent_keystores = wallet.get_keystores() assert len(parent_keystores) == 1 keystore = parent_keystores[0] child_keystores = keystore.get_cosigner_keystores() assert len(child_keystores) == n parent_data = keystore.to_derivation_data() for i in range(n): masterkey_row = child_keystores[i].to_masterkey_row() assert masterkey_row.derivation_type == DerivationType.BIP32 keystore_data = parent_data["cosigner-keys"][i][1] if len(keystore_data) == 3: assert keystore_data['seed'] is not None # == seed_words assert keystore_data['xpub'] is not None assert keystore_data['xprv'] is not None else: assert len(keystore_data) == 2 assert keystore_data['xpub'] is not None assert keystore_data['xprv'] is None
def test_old(self, tmp_storage) -> None: seed_words = ('powerful random nobody notice nothing important '+ 'anyway look away hidden message over') child_keystore = from_seed(seed_words, '') assert isinstance(child_keystore, Old_KeyStore) wallet = Wallet(tmp_storage) masterkey_row = wallet.create_masterkey_from_keystore(child_keystore) account_row = AccountRow(1, masterkey_row.masterkey_id, ScriptType.P2PKH, '...') account = StandardAccount(wallet, account_row, [], []) wallet.register_account(account.get_id(), account) parent_keystores = wallet.get_keystores() assert len(parent_keystores) == 1 child_keystores = account.get_keystores() assert len(child_keystores) == 1 assert parent_keystores[0] is child_keystores[0] masterkey_row = parent_keystores[0].to_masterkey_row() assert masterkey_row.derivation_type == DerivationType.ELECTRUM_OLD keystore_data = parent_keystores[0].to_derivation_data() assert len(keystore_data) == 3 assert 'mpk' in keystore_data assert 'seed' in keystore_data assert 'subpaths' in keystore_data check_create_keys(wallet, account_row.default_script_type)
def check_legacy_parent_of_imported_privkey_wallet(wallet: Wallet, keypairs: Optional[Dict[str, str]]=None, password: Optional[str]=None) -> None: assert len(wallet.get_accounts()) == 1 account: ImportedPrivkeyAccount = wallet.get_accounts()[0] parent_keystores = wallet.get_keystores() assert len(parent_keystores) == 0 child_keystores = account.get_keystores() assert len(child_keystores) == 1 assert child_keystores[0] is not None assert not child_keystores[0].has_masterkey() with pytest.raises(IncompatibleWalletError): child_keystores[0].to_masterkey_row() with pytest.raises(IncompatibleWalletError): child_keystores[0].to_derivation_data() keyinstance_datas = child_keystores[0].get_keyinstance_derivation_data() assert len(keyinstance_datas) == 1 if keypairs is not None: for key_id, data in keyinstance_datas: assert pw_decode(data['prv'], password) == keypairs[data['pub']]
def check_legacy_parent_of_standard_wallet( wallet: Wallet, seed_words: Optional[str] = None, is_bip39: bool = False, password: Optional[str] = None) -> None: assert len(wallet.get_accounts()) == 1 account: StandardAccount = wallet.get_accounts()[0] parent_keystores = wallet.get_keystores() assert len(parent_keystores) == 1 child_keystores = account.get_keystores() assert len(child_keystores) == 1 assert parent_keystores[0] is child_keystores[0] assert password is not None assert not child_keystores[0].has_seed() or child_keystores[0].get_seed( password) assert type(child_keystores[0].get_passphrase(password)) is str assert child_keystores[0].get_master_private_key(password) keystore_data = parent_keystores[0].to_derivation_data() entry_count = 4 if is_bip39: entry_count = 3 assert len(keystore_data) == entry_count, keystore_data assert 'xpub' in keystore_data assert 'xprv' in keystore_data keystore_encrypted = False try: parent_keystores[0].check_password(None) except InvalidPassword: keystore_encrypted = True assert "encrypted" not in wallet.name() or keystore_encrypted if is_bip39: assert "seed" not in keystore_data else: if seed_words is None: assert "seed" in keystore_data else: assert keystore_data['seed'] == seed_words
def check_legacy_parent_of_hardware_wallet(wallet: Wallet) -> None: assert len(wallet.get_accounts()) == 1 child_account = wallet.get_accounts()[0] parent_keystores = wallet.get_keystores() assert len(parent_keystores) == 1 child_keystores = child_account.get_keystores() assert len(child_keystores) == 1 assert parent_keystores[0] is child_keystores[0] masterkey_row = parent_keystores[0].to_masterkey_row() assert masterkey_row.derivation_type == DerivationType.HARDWARE keystore_data = parent_keystores[0].to_derivation_data() # General hardware wallet. entry_count = 5 if keystore_data['hw_type'] == "ledger": # Ledger wallets extend the keystore. assert "cfg" in keystore_data entry_count = 6 assert len(keystore_data) == entry_count assert 'hw_type' in keystore_data assert 'label' in keystore_data assert "derivation" in keystore_data assert "subpaths" in keystore_data
def check_legacy_parent_of_imported_address_wallet(wallet: Wallet) -> None: assert len(wallet.get_accounts()) == 1 account: ImportedAddressAccount = wallet.get_accounts()[0] assert len(wallet.get_keystores()) == 0 assert len(account.get_keystores()) == 0
def check_parent_of_blank_wallet(wallet: Wallet) -> None: assert len(wallet.get_accounts()) == 0 parent_keystores = wallet.get_keystores() assert len(parent_keystores) == 0