2016-10-20 13:04:29 +00:00
|
|
|
from trezor import wire, ui
|
|
|
|
from trezor.utils import unimport
|
|
|
|
|
|
|
|
|
|
|
|
@unimport
|
2016-11-16 10:14:30 +00:00
|
|
|
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
|
2016-11-16 10:14:30 +00:00
|
|
|
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)
|
2016-11-16 10:14:30 +00:00
|
|
|
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
|
|
|
|
|
2016-11-16 10:14:30 +00:00
|
|
|
# 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)
|