def _select_wallet(ctx, address_or_index): try: wallet = Wallet(wallet_path=ctx.obj.wallet_path) if not wallet.addresses: click.echo('This command requires a local wallet') return if wallet.encrypted: secret = click.prompt('The wallet is encrypted. Enter password', hide_input=True) wallet.decrypt(secret) if address_or_index.isdigit(): address_or_index = int(address_or_index) addr_item = get_item_from_wallet(wallet, address_or_index) if addr_item: # FIXME: This should only return pk and index xmss = wallet.get_xmss_by_index(address_or_index) return wallet.addresses[address_or_index], xmss elif address_or_index.startswith('Q'): for i, addr_item in enumerate(wallet.address_items): if address_or_index == addr_item.qaddress: xmss = wallet.get_xmss_by_address(wallet.addresses[i]) return wallet.addresses[i], xmss click.echo('Source address not found in your wallet', color='yellow') quit(1) return parse_qaddress(address_or_index), None except Exception as e: click.echo("Error selecting wallet") click.echo(str(e)) quit(1)
def _select_wallet(ctx, src): try: config.user.wallet_dir = ctx.obj.wallet_dir wallet = Wallet() if not wallet.addresses: click.echo('This command requires a local wallet') return if src.isdigit(): src = int(src) try: # FIXME: This should only return pk and index xmss = wallet.get_xmss_by_index(src) return wallet.addresses[src], xmss except IndexError: click.echo('Wallet index not found', color='yellow') quit(1) elif src.startswith('Q'): for i, addr_item in enumerate(wallet.address_items): if src == addr_item.address: xmss = wallet.get_xmss_by_address(wallet.addresses[i]) return wallet.addresses[i], xmss click.echo('Source address not found in your wallet', color='yellow') quit(1) return bytes(hstr2bin(src)), None except Exception as e: click.echo("Error selecting wallet") quit(1)
def test_read_wallet_secure_ver0_saves_wallet_ver1_encrypted(self): with set_qrl_dir("wallet_secure_ver0"): wallet = Wallet() self.assertEqual(wallet.version, 0) # Wallet will not let you save an encrypted ver0 wallet as ver1. You have to decrypt it first. # This is because Qaddress is unencrypted in the ver1 wallet. with self.assertRaises(WalletVersionError): wallet.save() wallet.decrypt('test1234') wallet.encrypt('test1234') wallet.version = 1 wallet.save() wallet_reloaded = Wallet() self.assertEqual(wallet_reloaded.version, 1) self.assertEqual(wallet_reloaded.address_items[0].qaddress, 'Q010400d9f1efe5b272e042dcc8ef690f0e90ca8b0b6edba0d26f81e7aff12a6754b21788169f7f') wallet_reloaded.decrypt('test1234') addr_item = wallet_reloaded.address_items[0] self.assertEqual('Q010400d9f1efe5b272e042dcc8ef690f0e90ca8b0b6edba0d26f81e7aff12a6754b21788169f7f', addr_item.qaddress) xmss0 = wallet_reloaded.get_xmss_by_index(0) self.assertEqual('010400d9f1efe5b272e042dcc8ef690f0e90ca8b0b6edba0d26f81e7aff12a6754b21788169f7f', bin2hstr(xmss0.address)) xmss0b = wallet_reloaded.get_xmss_by_address(xmss0.address) self.assertEqual('010400d9f1efe5b272e042dcc8ef690f0e90ca8b0b6edba0d26f81e7aff12a6754b21788169f7f', bin2hstr(xmss0b.address))
def test_read_ver0(self): with set_qrl_dir("wallet_ver0"): wallet = Wallet() self.assertEqual(1, len(wallet.address_items)) self.assertEqual(wallet.version, 0) addr_item = wallet.address_items[0] self.assertFalse(addr_item.encrypted) self.assertEqual('Q010400d9f1efe5b272e042dcc8ef690f0e90ca8b0b6edba0d26f81e7aff12a6754b21788169f7f', addr_item.qaddress) xmss0 = wallet.get_xmss_by_index(0) self.assertEqual('010400d9f1efe5b272e042dcc8ef690f0e90ca8b0b6edba0d26f81e7aff12a6754b21788169f7f', bin2hstr(xmss0.address)) xmss0b = wallet.get_xmss_by_address(xmss0.address) self.assertEqual('010400d9f1efe5b272e042dcc8ef690f0e90ca8b0b6edba0d26f81e7aff12a6754b21788169f7f', bin2hstr(xmss0b.address))
def test_read_secure(self): with set_qrl_dir("wallet_secure_ver1"): wallet = Wallet() self.assertEqual(1, len(wallet.address_items)) self.assertEqual(wallet.version, 1) self.assertTrue(wallet.encrypted) addr_item = wallet.address_items[0] self.assertEqual('Q010400d9f1efe5b272e042dcc8ef690f0e90ca8b0b6edba0d26f81e7aff12a6754b21788169f7f', addr_item.qaddress) wallet.decrypt_item(0, 'test1234') xmss0 = wallet.get_xmss_by_index(0) self.assertEqual('010400d9f1efe5b272e042dcc8ef690f0e90ca8b0b6edba0d26f81e7aff12a6754b21788169f7f', bin2hstr(xmss0.address)) xmss0b = wallet.get_xmss_by_address(xmss0.address) self.assertEqual('010400d9f1efe5b272e042dcc8ef690f0e90ca8b0b6edba0d26f81e7aff12a6754b21788169f7f', bin2hstr(xmss0b.address))