1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2025-02-22 20:42:03 +00:00
trezor-firmware/src/apps/wallet/get_address.py

46 lines
1.3 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
2016-12-08 15:18:12 +00:00
async def layout_get_address(session_id, msg):
2016-10-20 13:04:29 +00:00
from trezor.messages.Address import Address
from trezor.messages.FailureType import Other
from ..common import coins
2016-12-08 15:18:12 +00:00
from ..common import seed
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-12-12 14:19:51 +00:00
node = await seed.get_root(session_id)
node.derive_path(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 trezor.ui.qr import Qr
from trezor.ui.container import Container
2016-10-20 13:04:29 +00:00
from ..common.confirm import require_confirm
lines = _split_address(address)
content = Container(
2017-03-28 13:12:15 +00:00
Qr(address, (120, 135), 3),
Text('Confirm address', ui.ICON_RESET, ui.MONO, *lines))
2016-10-20 13:04:29 +00:00
await require_confirm(session_id, content, code=Address)
def _split_address(address):
from trezor.utils import chunks
return chunks(address, 17)