diff --git a/src/apps/common/layout.py b/src/apps/common/layout.py index ed4f80467..45610ea68 100644 --- a/src/apps/common/layout.py +++ b/src/apps/common/layout.py @@ -12,9 +12,10 @@ from apps.common import HARDENED from apps.common.confirm import confirm, require_confirm -async def show_address(ctx, address: str, address_n: list, network: str = None): - text = Text("Confirm address", ui.ICON_RECEIVE, icon_color=ui.GREEN) - # TODO: print address_n via address_n_to_str(address_n) +async def show_address(ctx, address: str, desc: str = None, network: str = None): + text = Text( + desc if desc else "Confirm address", ui.ICON_RECEIVE, icon_color=ui.GREEN + ) if network: text.normal("%s network" % network) text.mono(*split_address(address)) @@ -23,13 +24,15 @@ async def show_address(ctx, address: str, address_n: list, network: str = None): ) -async def show_qr(ctx, address: str): +async def show_qr(ctx, address: str, desc: str = None): qr_x = const(120) qr_y = const(115) qr_coef = const(4) qr = Qr(address, (qr_x, qr_y), qr_coef) - text = Text("Confirm address", ui.ICON_RECEIVE, icon_color=ui.GREEN) + text = Text( + desc if desc else "Confirm address", ui.ICON_RECEIVE, icon_color=ui.GREEN + ) content = Container(qr, text) return await confirm( ctx, @@ -58,4 +61,7 @@ def address_n_to_str(address_n: list) -> str: else: return str(i) + if not address_n: + return "m" + return "m/" + "/".join([path_item(i) for i in address_n]) diff --git a/src/apps/ethereum/get_address.py b/src/apps/ethereum/get_address.py index d91cc2597..bd45571b2 100644 --- a/src/apps/ethereum/get_address.py +++ b/src/apps/ethereum/get_address.py @@ -1,4 +1,4 @@ -from apps.common.layout import show_address, show_qr +from apps.common.layout import address_n_to_str, show_address, show_qr from apps.ethereum import networks @@ -22,11 +22,11 @@ async def get_address(ctx, msg): else: network = None hex_addr = _ethereum_address_hex(address, network) - + desc = address_n_to_str(address_n) while True: - if await show_address(ctx, hex_addr, address_n): + if await show_address(ctx, hex_addr, desc=desc): break - if await show_qr(ctx, hex_addr): + if await show_qr(ctx, hex_addr, desc=desc): break return EthereumAddress(address=address) diff --git a/src/apps/lisk/get_address.py b/src/apps/lisk/get_address.py index b5b602c65..26f39cd57 100644 --- a/src/apps/lisk/get_address.py +++ b/src/apps/lisk/get_address.py @@ -3,7 +3,7 @@ from trezor.messages.LiskAddress import LiskAddress from .helpers import LISK_CURVE, get_address_from_public_key from apps.common import seed -from apps.common.layout import show_address, show_qr +from apps.common.layout import address_n_to_str, show_address, show_qr async def get_address(ctx, msg): @@ -15,10 +15,11 @@ async def get_address(ctx, msg): address = get_address_from_public_key(pubkey) if msg.show_display: + desc = address_n_to_str(address_n) while True: - if await show_address(ctx, address, address_n): + if await show_address(ctx, address, desc=desc): break - if await show_qr(ctx, address): + if await show_qr(ctx, address, desc=desc): break return LiskAddress(address=address) diff --git a/src/apps/monero/get_address.py b/src/apps/monero/get_address.py index e80f6c1d1..93d93c590 100644 --- a/src/apps/monero/get_address.py +++ b/src/apps/monero/get_address.py @@ -1,6 +1,6 @@ from trezor.messages.MoneroAddress import MoneroAddress -from apps.common.layout import show_address, show_qr +from apps.common.layout import address_n_to_str, show_address, show_qr from apps.monero import misc @@ -8,10 +8,11 @@ async def get_address(ctx, msg): creds = await misc.get_creds(ctx, msg.address_n, msg.network_type) if msg.show_display: + desc = address_n_to_str(msg.address_n) while True: - if await show_address(ctx, creds.address.decode("ascii"), msg.address_n): + if await show_address(ctx, creds.address.decode(), desc=desc): break - if await show_qr(ctx, creds.address.decode("ascii")): + if await show_qr(ctx, creds.address.decode(), desc=desc): break return MoneroAddress(address=creds.address) diff --git a/src/apps/nem/get_address.py b/src/apps/nem/get_address.py index 56e4360af..77100b5c6 100644 --- a/src/apps/nem/get_address.py +++ b/src/apps/nem/get_address.py @@ -4,7 +4,7 @@ from .helpers import NEM_CURVE, get_network_str from .validators import validate_network from apps.common import seed -from apps.common.layout import show_address, show_qr +from apps.common.layout import address_n_to_str, show_address, show_qr async def get_address(ctx, msg): @@ -13,12 +13,13 @@ async def get_address(ctx, msg): address = node.nem_address(network) if msg.show_display: + desc = address_n_to_str(msg.address_n) while True: if await show_address( - ctx, address, msg.address_n, network=get_network_str(network) + ctx, address, desc=desc, network=get_network_str(network) ): break - if await show_qr(ctx, address.upper()): + if await show_qr(ctx, address.upper(), desc=desc): break return NEMAddress(address=address) diff --git a/src/apps/ripple/get_address.py b/src/apps/ripple/get_address.py index 4cddeeda1..41227ff13 100644 --- a/src/apps/ripple/get_address.py +++ b/src/apps/ripple/get_address.py @@ -4,7 +4,7 @@ from trezor.messages.RippleGetAddress import RippleGetAddress from . import helpers from apps.common import seed -from apps.common.layout import show_address, show_qr +from apps.common.layout import address_n_to_str, show_address, show_qr async def get_address(ctx, msg: RippleGetAddress): @@ -13,10 +13,11 @@ async def get_address(ctx, msg: RippleGetAddress): address = helpers.address_from_public_key(pubkey) if msg.show_display: + desc = address_n_to_str(msg.address_n) while True: - if await show_address(ctx, address, msg.address_n): + if await show_address(ctx, address, desc=desc): break - if await show_qr(ctx, address.upper()): + if await show_qr(ctx, address.upper(), desc=desc): break return RippleAddress(address=address) diff --git a/src/apps/stellar/get_address.py b/src/apps/stellar/get_address.py index a28d5c76f..ee115c6dc 100644 --- a/src/apps/stellar/get_address.py +++ b/src/apps/stellar/get_address.py @@ -2,7 +2,7 @@ from trezor.messages.StellarAddress import StellarAddress from trezor.messages.StellarGetAddress import StellarGetAddress from apps.common import seed -from apps.common.layout import show_address, show_qr +from apps.common.layout import address_n_to_str, show_address, show_qr from apps.stellar import helpers @@ -12,10 +12,11 @@ async def get_address(ctx, msg: StellarGetAddress): address = helpers.address_from_public_key(pubkey) if msg.show_display: + desc = address_n_to_str(msg.address_n) while True: - if await show_address(ctx, address, msg.address_n): + if await show_address(ctx, address, desc=desc): break - if await show_qr(ctx, address.upper()): + if await show_qr(ctx, address.upper(), desc=desc): break return StellarAddress(address=address) diff --git a/src/apps/tezos/get_address.py b/src/apps/tezos/get_address.py index 76d05de15..a0389d2d9 100644 --- a/src/apps/tezos/get_address.py +++ b/src/apps/tezos/get_address.py @@ -2,7 +2,7 @@ from trezor.crypto import hashlib from trezor.messages.TezosAddress import TezosAddress from apps.common import seed -from apps.common.layout import show_address, show_qr +from apps.common.layout import address_n_to_str, show_address, show_qr from apps.tezos.helpers import ( TEZOS_CURVE, TEZOS_ED25519_ADDRESS_PREFIX, @@ -19,10 +19,11 @@ async def get_address(ctx, msg): address = base58_encode_check(pkh, prefix=TEZOS_ED25519_ADDRESS_PREFIX) if msg.show_display: + desc = address_n_to_str(msg.address_n) while True: - if await show_address(ctx, address, address_n): + if await show_address(ctx, address, desc=desc): break - if await show_qr(ctx, address): + if await show_qr(ctx, address, desc=desc): break return TezosAddress(address=address) diff --git a/src/apps/wallet/get_address.py b/src/apps/wallet/get_address.py index 6b1c1e648..90c3eb47e 100644 --- a/src/apps/wallet/get_address.py +++ b/src/apps/wallet/get_address.py @@ -2,7 +2,7 @@ from trezor.messages import InputScriptType from trezor.messages.Address import Address from apps.common import coins, seed -from apps.common.layout import show_address, show_qr +from apps.common.layout import address_n_to_str, show_address, show_qr from apps.wallet.sign_tx import addresses @@ -15,14 +15,19 @@ async def get_address(ctx, msg): address_short = addresses.address_short(coin, address) if msg.show_display: + if msg.multisig: + desc = "Multisig %d of %d" % (msg.multisig.m, len(msg.multisig.pubkeys)) + else: + desc = address_n_to_str(msg.address_n) while True: - if await show_address(ctx, address_short, msg.address_n): + if await show_address(ctx, address_short, desc=desc): break if await show_qr( ctx, address.upper() if msg.script_type == InputScriptType.SPENDWITNESS else address, + desc=desc, ): break