1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2025-02-23 13:02:03 +00:00
trezor-firmware/src/apps/wallet/layout_get_address.py

42 lines
1.2 KiB
Python
Raw Normal View History

2016-10-20 13:04:29 +00:00
from trezor import wire, ui
from trezor.utils import unimport
@unimport
async def layout_get_address(msg, session_id):
2016-10-20 13:04:29 +00:00
from trezor.messages.Address import Address
from trezor.messages.FailureType import Other
from ..common.seed import get_node
from ..common import coins
2016-10-20 13:04:29 +00:00
2016-11-23 13:51:05 +00:00
if msg.multisig:
2016-10-20 13:04:29 +00:00
raise wire.FailureError(Other, 'GetAddress.multisig is unsupported')
2016-11-23 13:51:05 +00:00
address_n = msg.address_n or ()
coin_name = msg.coin_name or 'Bitcoin'
2016-10-20 13:04:29 +00:00
node = await get_node(session_id, address_n)
coin = coins.by_name(coin_name)
address = node.address(coin.address_type)
2016-10-20 13:04:29 +00:00
2016-11-23 13:51:05 +00:00
if msg.show_display:
2016-10-20 13:04:29 +00:00
await _show_address(session_id, address)
2016-11-23 13:51:05 +00:00
2016-10-20 13:04:29 +00:00
return Address(address=address)
async def _show_address(session_id, address):
from trezor.messages.ButtonRequestType import Address
from trezor.ui.text import Text
from ..common.confirm import require_confirm
# TODO: qr code
2016-10-20 13:04:29 +00:00
content = Text('Confirm address', ui.ICON_RESET,
ui.MONO, *_split_address(address))
await require_confirm(session_id, content, code=Address)
def _split_address(address):
from trezor.utils import chunks
return chunks(address, 17)