mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-17 11:58:13 +00:00
68 lines
1.8 KiB
Python
68 lines
1.8 KiB
Python
from micropython import const
|
|
from ubinascii import hexlify
|
|
|
|
from trezor import ui
|
|
from trezor.messages import ButtonRequestType
|
|
from trezor.ui.container import Container
|
|
from trezor.ui.qr import Qr
|
|
from trezor.ui.text import Text
|
|
from trezor.utils import chunks
|
|
|
|
from apps.common import HARDENED
|
|
from apps.common.confirm import confirm, require_confirm
|
|
|
|
|
|
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))
|
|
return await confirm(
|
|
ctx, text, code=ButtonRequestType.Address, cancel="QR", cancel_style=ui.BTN_KEY
|
|
)
|
|
|
|
|
|
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(
|
|
desc if desc else "Confirm address", ui.ICON_RECEIVE, icon_color=ui.GREEN
|
|
)
|
|
content = Container(qr, text)
|
|
return await confirm(
|
|
ctx,
|
|
content,
|
|
code=ButtonRequestType.Address,
|
|
cancel="Address",
|
|
cancel_style=ui.BTN_KEY,
|
|
)
|
|
|
|
|
|
async def show_pubkey(ctx, pubkey: bytes):
|
|
lines = chunks(hexlify(pubkey).decode(), 18)
|
|
text = Text("Confirm public key", ui.ICON_RECEIVE, icon_color=ui.GREEN)
|
|
text.mono(*lines)
|
|
return await require_confirm(ctx, text, code=ButtonRequestType.PublicKey)
|
|
|
|
|
|
def split_address(address: str):
|
|
return chunks(address, 17)
|
|
|
|
|
|
def address_n_to_str(address_n: list) -> str:
|
|
def path_item(i: int):
|
|
if i & HARDENED:
|
|
return str(i ^ HARDENED) + "'"
|
|
else:
|
|
return str(i)
|
|
|
|
if not address_n:
|
|
return "m"
|
|
|
|
return "m/" + "/".join([path_item(i) for i in address_n])
|