mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-07-09 16:18:10 +00:00
refactor(core): turn show_address, show_pubkey, show_xpub into layouts
This commit is contained in:
parent
03699f5639
commit
391602ae99
@ -1,9 +1,10 @@
|
|||||||
from trezor.messages.BinanceAddress import BinanceAddress
|
from trezor.messages.BinanceAddress import BinanceAddress
|
||||||
from trezor.messages.BinanceGetAddress import BinanceGetAddress
|
from trezor.messages.BinanceGetAddress import BinanceGetAddress
|
||||||
|
from trezor.ui.layouts import show_address
|
||||||
|
|
||||||
from apps.common import paths
|
from apps.common import paths
|
||||||
from apps.common.keychain import Keychain, auto_keychain
|
from apps.common.keychain import Keychain, auto_keychain
|
||||||
from apps.common.layout import address_n_to_str, show_address, show_qr
|
from apps.common.layout import address_n_to_str
|
||||||
|
|
||||||
from .helpers import address_from_public_key
|
from .helpers import address_from_public_key
|
||||||
|
|
||||||
@ -19,10 +20,6 @@ async def get_address(ctx, msg: BinanceGetAddress, keychain: Keychain):
|
|||||||
address = address_from_public_key(pubkey, HRP)
|
address = address_from_public_key(pubkey, HRP)
|
||||||
if msg.show_display:
|
if msg.show_display:
|
||||||
desc = address_n_to_str(msg.address_n)
|
desc = address_n_to_str(msg.address_n)
|
||||||
while True:
|
await show_address(ctx, address=address, address_qr=address, desc=desc)
|
||||||
if await show_address(ctx, address, desc=desc):
|
|
||||||
break
|
|
||||||
if await show_qr(ctx, address, desc=desc):
|
|
||||||
break
|
|
||||||
|
|
||||||
return BinanceAddress(address=address)
|
return BinanceAddress(address=address)
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
|
from ubinascii import hexlify
|
||||||
|
|
||||||
from trezor.messages.BinanceGetPublicKey import BinanceGetPublicKey
|
from trezor.messages.BinanceGetPublicKey import BinanceGetPublicKey
|
||||||
from trezor.messages.BinancePublicKey import BinancePublicKey
|
from trezor.messages.BinancePublicKey import BinancePublicKey
|
||||||
|
from trezor.ui.layouts import require, show_pubkey
|
||||||
|
|
||||||
from apps.common import layout, paths
|
from apps.common import paths
|
||||||
from apps.common.keychain import Keychain, auto_keychain
|
from apps.common.keychain import Keychain, auto_keychain
|
||||||
|
|
||||||
|
|
||||||
@ -12,6 +15,6 @@ async def get_public_key(ctx, msg: BinanceGetPublicKey, keychain: Keychain):
|
|||||||
pubkey = node.public_key()
|
pubkey = node.public_key()
|
||||||
|
|
||||||
if msg.show_display:
|
if msg.show_display:
|
||||||
await layout.show_pubkey(ctx, pubkey)
|
await require(show_pubkey(ctx, hexlify(pubkey).decode()))
|
||||||
|
|
||||||
return BinancePublicKey(public_key=pubkey)
|
return BinancePublicKey(public_key=pubkey)
|
||||||
|
@ -2,8 +2,9 @@ from trezor import wire
|
|||||||
from trezor.messages import InputScriptType
|
from trezor.messages import InputScriptType
|
||||||
from trezor.messages.HDNodeType import HDNodeType
|
from trezor.messages.HDNodeType import HDNodeType
|
||||||
from trezor.messages.PublicKey import PublicKey
|
from trezor.messages.PublicKey import PublicKey
|
||||||
|
from trezor.ui.layouts import require, show_xpub
|
||||||
|
|
||||||
from apps.common import coins, layout, paths
|
from apps.common import coins, paths
|
||||||
from apps.common.keychain import get_keychain
|
from apps.common.keychain import get_keychain
|
||||||
|
|
||||||
if False:
|
if False:
|
||||||
@ -58,7 +59,7 @@ async def get_public_key(ctx: wire.Context, msg: GetPublicKey) -> PublicKey:
|
|||||||
)
|
)
|
||||||
|
|
||||||
if msg.show_display:
|
if msg.show_display:
|
||||||
await layout.show_xpub(ctx, node_xpub, "XPUB", "Cancel")
|
await require(show_xpub(ctx, node_xpub, "XPUB", "Cancel"))
|
||||||
|
|
||||||
return PublicKey(
|
return PublicKey(
|
||||||
node=node_type,
|
node=node_type,
|
||||||
|
@ -3,8 +3,9 @@ from ubinascii import hexlify
|
|||||||
from trezor import log, wire
|
from trezor import log, wire
|
||||||
from trezor.messages.CardanoPublicKey import CardanoPublicKey
|
from trezor.messages.CardanoPublicKey import CardanoPublicKey
|
||||||
from trezor.messages.HDNodeType import HDNodeType
|
from trezor.messages.HDNodeType import HDNodeType
|
||||||
|
from trezor.ui.layouts import require, show_pubkey
|
||||||
|
|
||||||
from apps.common import layout, paths
|
from apps.common import paths
|
||||||
from apps.common.seed import remove_ed25519_prefix
|
from apps.common.seed import remove_ed25519_prefix
|
||||||
|
|
||||||
from . import seed
|
from . import seed
|
||||||
@ -35,7 +36,7 @@ async def get_public_key(
|
|||||||
raise wire.ProcessError("Deriving public key failed")
|
raise wire.ProcessError("Deriving public key failed")
|
||||||
|
|
||||||
if msg.show_display:
|
if msg.show_display:
|
||||||
await layout.show_pubkey(ctx, key.node.public_key)
|
await require(show_pubkey(ctx, hexlify(key.node.public_key).decode()))
|
||||||
return key
|
return key
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
from micropython import const
|
from micropython import const
|
||||||
from ubinascii import hexlify
|
|
||||||
|
|
||||||
from trezor import ui
|
from trezor import ui
|
||||||
from trezor.messages import ButtonRequestType
|
from trezor.messages import ButtonRequestType
|
||||||
@ -11,34 +10,13 @@ from trezor.ui.qr import Qr
|
|||||||
from trezor.utils import chunks
|
from trezor.utils import chunks
|
||||||
|
|
||||||
from apps.common import HARDENED
|
from apps.common import HARDENED
|
||||||
from apps.common.confirm import confirm, require_confirm
|
from apps.common.confirm import confirm
|
||||||
|
|
||||||
if False:
|
if False:
|
||||||
from typing import Iterable, Iterator, List, Union
|
from typing import Iterable, Iterator, List, Union
|
||||||
from trezor import wire
|
from trezor import wire
|
||||||
|
|
||||||
|
|
||||||
async def show_address(
|
|
||||||
ctx: wire.Context,
|
|
||||||
address: str,
|
|
||||||
desc: str = "Confirm address",
|
|
||||||
cancel: str = "QR",
|
|
||||||
network: str = None,
|
|
||||||
) -> bool:
|
|
||||||
text = Text(desc, ui.ICON_RECEIVE, ui.GREEN)
|
|
||||||
if network is not None:
|
|
||||||
text.normal("%s network" % network)
|
|
||||||
text.mono(*split_address(address))
|
|
||||||
|
|
||||||
return await confirm(
|
|
||||||
ctx,
|
|
||||||
text,
|
|
||||||
code=ButtonRequestType.Address,
|
|
||||||
cancel=cancel,
|
|
||||||
cancel_style=ButtonDefault,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
async def show_qr(
|
async def show_qr(
|
||||||
ctx: wire.Context,
|
ctx: wire.Context,
|
||||||
address: str,
|
address: str,
|
||||||
@ -62,13 +40,6 @@ async def show_qr(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
async def show_pubkey(ctx: wire.Context, pubkey: bytes) -> None:
|
|
||||||
lines = chunks(hexlify(pubkey).decode(), 18)
|
|
||||||
text = Text("Confirm public key", ui.ICON_RECEIVE, ui.GREEN)
|
|
||||||
text.mono(*lines)
|
|
||||||
await require_confirm(ctx, text, ButtonRequestType.PublicKey)
|
|
||||||
|
|
||||||
|
|
||||||
def split_address(address: str) -> Iterator[str]:
|
def split_address(address: str) -> Iterator[str]:
|
||||||
return chunks(address, 17)
|
return chunks(address, 17)
|
||||||
|
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
from trezor.crypto.curve import secp256k1
|
from trezor.crypto.curve import secp256k1
|
||||||
from trezor.crypto.hashlib import sha3_256
|
from trezor.crypto.hashlib import sha3_256
|
||||||
from trezor.messages.EthereumAddress import EthereumAddress
|
from trezor.messages.EthereumAddress import EthereumAddress
|
||||||
|
from trezor.ui.layouts import show_address
|
||||||
|
|
||||||
from apps.common import paths
|
from apps.common import paths
|
||||||
from apps.common.layout import address_n_to_str, show_address, show_qr
|
from apps.common.layout import address_n_to_str
|
||||||
|
|
||||||
from . import networks
|
from . import networks
|
||||||
from .address import address_from_bytes
|
from .address import address_from_bytes
|
||||||
@ -27,10 +28,6 @@ async def get_address(ctx, msg, keychain):
|
|||||||
|
|
||||||
if msg.show_display:
|
if msg.show_display:
|
||||||
desc = address_n_to_str(msg.address_n)
|
desc = address_n_to_str(msg.address_n)
|
||||||
while True:
|
await show_address(ctx, address=address, address_qr=address, desc=desc)
|
||||||
if await show_address(ctx, address, desc=desc):
|
|
||||||
break
|
|
||||||
if await show_qr(ctx, address, desc=desc):
|
|
||||||
break
|
|
||||||
|
|
||||||
return EthereumAddress(address=address)
|
return EthereumAddress(address=address)
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
|
from ubinascii import hexlify
|
||||||
|
|
||||||
from trezor.messages.EthereumPublicKey import EthereumPublicKey
|
from trezor.messages.EthereumPublicKey import EthereumPublicKey
|
||||||
from trezor.messages.HDNodeType import HDNodeType
|
from trezor.messages.HDNodeType import HDNodeType
|
||||||
|
from trezor.ui.layouts import require, show_pubkey
|
||||||
|
|
||||||
from apps.common import coins, layout, paths
|
from apps.common import coins, paths
|
||||||
|
|
||||||
from .keychain import with_keychain_from_path
|
from .keychain import with_keychain_from_path
|
||||||
|
|
||||||
@ -27,6 +30,6 @@ async def get_public_key(ctx, msg, keychain):
|
|||||||
)
|
)
|
||||||
|
|
||||||
if msg.show_display:
|
if msg.show_display:
|
||||||
await layout.show_pubkey(ctx, pubkey)
|
await require(show_pubkey(ctx, hexlify(pubkey).decode()))
|
||||||
|
|
||||||
return EthereumPublicKey(node=node_type, xpub=node_xpub)
|
return EthereumPublicKey(node=node_type, xpub=node_xpub)
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
from trezor.messages.LiskAddress import LiskAddress
|
from trezor.messages.LiskAddress import LiskAddress
|
||||||
|
from trezor.ui.layouts import show_address
|
||||||
|
|
||||||
from apps.common import paths
|
from apps.common import paths
|
||||||
from apps.common.keychain import auto_keychain
|
from apps.common.keychain import auto_keychain
|
||||||
from apps.common.layout import address_n_to_str, show_address, show_qr
|
from apps.common.layout import address_n_to_str
|
||||||
|
|
||||||
from .helpers import get_address_from_public_key
|
from .helpers import get_address_from_public_key
|
||||||
|
|
||||||
@ -18,10 +19,6 @@ async def get_address(ctx, msg, keychain):
|
|||||||
|
|
||||||
if msg.show_display:
|
if msg.show_display:
|
||||||
desc = address_n_to_str(msg.address_n)
|
desc = address_n_to_str(msg.address_n)
|
||||||
while True:
|
await show_address(ctx, address=address, address_qr=address, desc=desc)
|
||||||
if await show_address(ctx, address, desc=desc):
|
|
||||||
break
|
|
||||||
if await show_qr(ctx, address, desc=desc):
|
|
||||||
break
|
|
||||||
|
|
||||||
return LiskAddress(address=address)
|
return LiskAddress(address=address)
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
from trezor.messages.LiskPublicKey import LiskPublicKey
|
from ubinascii import hexlify
|
||||||
|
|
||||||
from apps.common import layout, paths
|
from trezor.messages.LiskPublicKey import LiskPublicKey
|
||||||
|
from trezor.ui.layouts import require, show_pubkey
|
||||||
|
|
||||||
|
from apps.common import paths
|
||||||
from apps.common.keychain import auto_keychain
|
from apps.common.keychain import auto_keychain
|
||||||
|
|
||||||
|
|
||||||
@ -13,6 +16,6 @@ async def get_public_key(ctx, msg, keychain):
|
|||||||
pubkey = pubkey[1:] # skip ed25519 pubkey marker
|
pubkey = pubkey[1:] # skip ed25519 pubkey marker
|
||||||
|
|
||||||
if msg.show_display:
|
if msg.show_display:
|
||||||
await layout.show_pubkey(ctx, pubkey)
|
await require(show_pubkey(ctx, hexlify(pubkey).decode()))
|
||||||
|
|
||||||
return LiskPublicKey(public_key=pubkey)
|
return LiskPublicKey(public_key=pubkey)
|
||||||
|
@ -1,11 +1,14 @@
|
|||||||
|
from ubinascii import hexlify
|
||||||
|
|
||||||
from trezor import ui
|
from trezor import ui
|
||||||
from trezor.messages import ButtonRequestType
|
from trezor.messages import ButtonRequestType
|
||||||
from trezor.strings import format_amount
|
from trezor.strings import format_amount
|
||||||
from trezor.ui.components.tt.text import Text
|
from trezor.ui.components.tt.text import Text
|
||||||
|
from trezor.ui.layouts import require, show_pubkey
|
||||||
from trezor.utils import chunks
|
from trezor.utils import chunks
|
||||||
|
|
||||||
from apps.common.confirm import require_confirm, require_hold_to_confirm
|
from apps.common.confirm import require_confirm, require_hold_to_confirm
|
||||||
from apps.common.layout import show_pubkey, split_address
|
from apps.common.layout import split_address
|
||||||
|
|
||||||
from .helpers import get_vote_tx_text
|
from .helpers import get_vote_tx_text
|
||||||
|
|
||||||
@ -33,7 +36,7 @@ async def require_confirm_vote_tx(ctx, votes):
|
|||||||
|
|
||||||
|
|
||||||
async def require_confirm_public_key(ctx, public_key):
|
async def require_confirm_public_key(ctx, public_key):
|
||||||
return await show_pubkey(ctx, public_key)
|
return await require(show_pubkey(ctx, hexlify(public_key).decode()))
|
||||||
|
|
||||||
|
|
||||||
async def require_confirm_multisig(ctx, multisignature):
|
async def require_confirm_multisig(ctx, multisignature):
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
from trezor.messages.NEMAddress import NEMAddress
|
from trezor.messages.NEMAddress import NEMAddress
|
||||||
|
from trezor.ui.layouts import show_address
|
||||||
|
|
||||||
from apps.common.keychain import with_slip44_keychain
|
from apps.common.keychain import with_slip44_keychain
|
||||||
from apps.common.layout import address_n_to_str, show_address, show_qr
|
from apps.common.layout import address_n_to_str
|
||||||
from apps.common.paths import validate_path
|
from apps.common.paths import validate_path
|
||||||
|
|
||||||
from . import CURVE, PATTERNS, SLIP44_ID
|
from . import CURVE, PATTERNS, SLIP44_ID
|
||||||
@ -21,12 +22,12 @@ async def get_address(ctx, msg, keychain):
|
|||||||
|
|
||||||
if msg.show_display:
|
if msg.show_display:
|
||||||
desc = address_n_to_str(msg.address_n)
|
desc = address_n_to_str(msg.address_n)
|
||||||
while True:
|
await show_address(
|
||||||
if await show_address(
|
ctx,
|
||||||
ctx, address, desc=desc, network=get_network_str(network)
|
address=address,
|
||||||
):
|
address_qr=address.upper(),
|
||||||
break
|
desc=desc,
|
||||||
if await show_qr(ctx, address.upper(), desc=desc):
|
network=get_network_str(network),
|
||||||
break
|
)
|
||||||
|
|
||||||
return NEMAddress(address=address)
|
return NEMAddress(address=address)
|
||||||
|
@ -11,7 +11,8 @@ from trezor.messages import (
|
|||||||
from trezor.ui.components.tt.scroll import Paginated
|
from trezor.ui.components.tt.scroll import Paginated
|
||||||
from trezor.ui.components.tt.text import Text
|
from trezor.ui.components.tt.text import Text
|
||||||
|
|
||||||
from apps.common.layout import require_confirm, split_address
|
from apps.common.confirm import require_confirm
|
||||||
|
from apps.common.layout import split_address
|
||||||
|
|
||||||
from ..layout import (
|
from ..layout import (
|
||||||
require_confirm_content,
|
require_confirm_content,
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
from trezor.messages.RippleAddress import RippleAddress
|
from trezor.messages.RippleAddress import RippleAddress
|
||||||
from trezor.messages.RippleGetAddress import RippleGetAddress
|
from trezor.messages.RippleGetAddress import RippleGetAddress
|
||||||
|
from trezor.ui.layouts import show_address
|
||||||
|
|
||||||
from apps.common import paths
|
from apps.common import paths
|
||||||
from apps.common.keychain import auto_keychain
|
from apps.common.keychain import auto_keychain
|
||||||
from apps.common.layout import address_n_to_str, show_address, show_qr
|
from apps.common.layout import address_n_to_str
|
||||||
|
|
||||||
from .helpers import address_from_public_key
|
from .helpers import address_from_public_key
|
||||||
|
|
||||||
@ -18,10 +19,6 @@ async def get_address(ctx, msg: RippleGetAddress, keychain):
|
|||||||
|
|
||||||
if msg.show_display:
|
if msg.show_display:
|
||||||
desc = address_n_to_str(msg.address_n)
|
desc = address_n_to_str(msg.address_n)
|
||||||
while True:
|
await show_address(ctx, address=address, address_qr=address, desc=desc)
|
||||||
if await show_address(ctx, address, desc=desc):
|
|
||||||
break
|
|
||||||
if await show_qr(ctx, address, desc=desc):
|
|
||||||
break
|
|
||||||
|
|
||||||
return RippleAddress(address=address)
|
return RippleAddress(address=address)
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
from trezor.messages.StellarAddress import StellarAddress
|
from trezor.messages.StellarAddress import StellarAddress
|
||||||
from trezor.messages.StellarGetAddress import StellarGetAddress
|
from trezor.messages.StellarGetAddress import StellarGetAddress
|
||||||
|
from trezor.ui.layouts import show_address
|
||||||
|
|
||||||
from apps.common import paths, seed
|
from apps.common import paths, seed
|
||||||
from apps.common.keychain import auto_keychain
|
from apps.common.keychain import auto_keychain
|
||||||
from apps.common.layout import address_n_to_str, show_address, show_qr
|
from apps.common.layout import address_n_to_str
|
||||||
|
|
||||||
from . import helpers
|
from . import helpers
|
||||||
|
|
||||||
@ -18,10 +19,6 @@ async def get_address(ctx, msg: StellarGetAddress, keychain):
|
|||||||
|
|
||||||
if msg.show_display:
|
if msg.show_display:
|
||||||
desc = address_n_to_str(msg.address_n)
|
desc = address_n_to_str(msg.address_n)
|
||||||
while True:
|
await show_address(ctx, address=address, address_qr=address.upper(), desc=desc)
|
||||||
if await show_address(ctx, address, desc=desc):
|
|
||||||
break
|
|
||||||
if await show_qr(ctx, address.upper(), desc=desc):
|
|
||||||
break
|
|
||||||
|
|
||||||
return StellarAddress(address=address)
|
return StellarAddress(address=address)
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
from trezor.crypto import hashlib
|
from trezor.crypto import hashlib
|
||||||
from trezor.messages.TezosAddress import TezosAddress
|
from trezor.messages.TezosAddress import TezosAddress
|
||||||
|
from trezor.ui.layouts import show_address
|
||||||
|
|
||||||
from apps.common import paths, seed
|
from apps.common import paths, seed
|
||||||
from apps.common.keychain import with_slip44_keychain
|
from apps.common.keychain import with_slip44_keychain
|
||||||
from apps.common.layout import address_n_to_str, show_address, show_qr
|
from apps.common.layout import address_n_to_str
|
||||||
|
|
||||||
from . import CURVE, PATTERNS, SLIP44_ID, helpers
|
from . import CURVE, PATTERNS, SLIP44_ID, helpers
|
||||||
|
|
||||||
@ -22,10 +23,6 @@ async def get_address(ctx, msg, keychain):
|
|||||||
|
|
||||||
if msg.show_display:
|
if msg.show_display:
|
||||||
desc = address_n_to_str(msg.address_n)
|
desc = address_n_to_str(msg.address_n)
|
||||||
while True:
|
await show_address(ctx, address=address, address_qr=address, desc=desc)
|
||||||
if await show_address(ctx, address, desc=desc):
|
|
||||||
break
|
|
||||||
if await show_qr(ctx, address, desc=desc):
|
|
||||||
break
|
|
||||||
|
|
||||||
return TezosAddress(address=address)
|
return TezosAddress(address=address)
|
||||||
|
@ -1,11 +1,7 @@
|
|||||||
from trezor import ui
|
|
||||||
from trezor.messages import ButtonRequestType
|
|
||||||
from trezor.messages.TezosPublicKey import TezosPublicKey
|
from trezor.messages.TezosPublicKey import TezosPublicKey
|
||||||
from trezor.ui.components.tt.text import Text
|
from trezor.ui.layouts import require, show_pubkey
|
||||||
from trezor.utils import chunks
|
|
||||||
|
|
||||||
from apps.common import paths, seed
|
from apps.common import paths, seed
|
||||||
from apps.common.confirm import require_confirm
|
|
||||||
from apps.common.keychain import with_slip44_keychain
|
from apps.common.keychain import with_slip44_keychain
|
||||||
|
|
||||||
from . import CURVE, PATTERNS, SLIP44_ID, helpers
|
from . import CURVE, PATTERNS, SLIP44_ID, helpers
|
||||||
@ -20,13 +16,6 @@ async def get_public_key(ctx, msg, keychain):
|
|||||||
pk_prefixed = helpers.base58_encode_check(pk, prefix=helpers.TEZOS_PUBLICKEY_PREFIX)
|
pk_prefixed = helpers.base58_encode_check(pk, prefix=helpers.TEZOS_PUBLICKEY_PREFIX)
|
||||||
|
|
||||||
if msg.show_display:
|
if msg.show_display:
|
||||||
await _show_tezos_pubkey(ctx, pk_prefixed)
|
await require(show_pubkey(ctx, pk_prefixed))
|
||||||
|
|
||||||
return TezosPublicKey(public_key=pk_prefixed)
|
return TezosPublicKey(public_key=pk_prefixed)
|
||||||
|
|
||||||
|
|
||||||
async def _show_tezos_pubkey(ctx, pubkey):
|
|
||||||
lines = chunks(pubkey, 18)
|
|
||||||
text = Text("Confirm public key", ui.ICON_RECEIVE, ui.GREEN)
|
|
||||||
text.mono(*lines)
|
|
||||||
await require_confirm(ctx, text, code=ButtonRequestType.PublicKey)
|
|
||||||
|
@ -39,7 +39,9 @@ __all__ = (
|
|||||||
"confirm_backup",
|
"confirm_backup",
|
||||||
"confirm_path_warning",
|
"confirm_path_warning",
|
||||||
"show_address",
|
"show_address",
|
||||||
|
"show_pubkey",
|
||||||
"show_success",
|
"show_success",
|
||||||
|
"show_xpub",
|
||||||
"show_warning",
|
"show_warning",
|
||||||
"confirm_output",
|
"confirm_output",
|
||||||
"confirm_hex",
|
"confirm_hex",
|
||||||
@ -199,6 +201,14 @@ def _show_xpub(xpub: str, desc: str, cancel: str) -> Paginated:
|
|||||||
return content
|
return content
|
||||||
|
|
||||||
|
|
||||||
|
def show_xpub(
|
||||||
|
ctx: wire.GenericContext, xpub: str, desc: str, cancel: str
|
||||||
|
) -> LayoutType:
|
||||||
|
return interact(
|
||||||
|
ctx, _show_xpub(xpub, desc, cancel), "show_xpub", ButtonRequestType.PublicKey
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
async def show_address(
|
async def show_address(
|
||||||
ctx: wire.GenericContext,
|
ctx: wire.GenericContext,
|
||||||
address: str,
|
address: str,
|
||||||
@ -252,6 +262,16 @@ async def show_address(
|
|||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
# FIXME: this is basically same as confirm_hex
|
||||||
|
# TODO: pagination for long keys
|
||||||
|
def show_pubkey(
|
||||||
|
ctx: wire.Context, pubkey: str, title: str = "Confirm public key"
|
||||||
|
) -> LayoutType:
|
||||||
|
text = Text(title, ui.ICON_RECEIVE, ui.GREEN)
|
||||||
|
text.mono(*_hex_lines(pubkey))
|
||||||
|
return interact(ctx, Confirm(text), "show_pubkey", ButtonRequestType.PublicKey)
|
||||||
|
|
||||||
|
|
||||||
def show_warning(
|
def show_warning(
|
||||||
ctx: wire.GenericContext,
|
ctx: wire.GenericContext,
|
||||||
br_type: str,
|
br_type: str,
|
||||||
|
Loading…
Reference in New Issue
Block a user