parent
4ef79ca48b
commit
375a95c214
@ -1,7 +1,7 @@
|
|||||||
async def apply_flags(ctx, msg):
|
from trezor.messages.Success import Success
|
||||||
from trezor.messages.Success import Success
|
from apps.common import storage
|
||||||
from ..common import storage
|
|
||||||
|
|
||||||
storage.set_flags(msg.flags)
|
|
||||||
|
|
||||||
|
async def apply_flags(ctx, msg):
|
||||||
|
storage.set_flags(msg.flags)
|
||||||
return Success(message='Flags applied')
|
return Success(message='Flags applied')
|
||||||
|
@ -1,58 +1,62 @@
|
|||||||
from micropython import const
|
from micropython import const
|
||||||
from trezor import ui
|
from trezor import ui
|
||||||
|
from trezor.messages import ButtonRequestType, InputScriptType
|
||||||
|
from trezor.messages.Address import Address
|
||||||
|
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 coins, seed
|
||||||
|
from apps.common.confirm import confirm
|
||||||
|
from apps.wallet.sign_tx import addresses
|
||||||
|
|
||||||
|
|
||||||
async def get_address(ctx, msg):
|
async def get_address(ctx, msg):
|
||||||
from trezor.messages.Address import Address
|
|
||||||
from trezor.messages.InputScriptType import SPENDWITNESS
|
|
||||||
from ..common import coins
|
|
||||||
from ..common import seed
|
|
||||||
from ..wallet.sign_tx import addresses
|
|
||||||
|
|
||||||
address_n = msg.address_n or ()
|
|
||||||
coin_name = msg.coin_name or 'Bitcoin'
|
coin_name = msg.coin_name or 'Bitcoin'
|
||||||
coin = coins.by_name(coin_name)
|
coin = coins.by_name(coin_name)
|
||||||
|
|
||||||
node = await seed.derive_node(ctx, address_n)
|
node = await seed.derive_node(ctx, msg.address_n)
|
||||||
address = addresses.get_address(msg.script_type, coin, node, msg.multisig)
|
address = addresses.get_address(msg.script_type, coin, node, msg.multisig)
|
||||||
|
|
||||||
if msg.show_display:
|
if msg.show_display:
|
||||||
while True:
|
while True:
|
||||||
if await _show_address(ctx, address):
|
if await _show_address(ctx, address):
|
||||||
break
|
break
|
||||||
if await _show_qr(ctx, address if msg.script_type != SPENDWITNESS else address.upper()):
|
if await _show_qr(ctx, address, msg.script_type):
|
||||||
break
|
break
|
||||||
|
|
||||||
return Address(address=address)
|
return Address(address=address)
|
||||||
|
|
||||||
|
|
||||||
async def _show_address(ctx, address):
|
async def _show_address(ctx, address: str):
|
||||||
from trezor.messages.ButtonRequestType import Address
|
|
||||||
from trezor.ui.text import Text
|
|
||||||
from ..common.confirm import confirm
|
|
||||||
|
|
||||||
lines = _split_address(address)
|
lines = _split_address(address)
|
||||||
content = Text('Confirm address', ui.ICON_DEFAULT, ui.MONO, *lines)
|
content = Text('Confirm address', ui.ICON_DEFAULT, ui.MONO, *lines)
|
||||||
return await confirm(ctx, content, code=Address, cancel='QR', cancel_style=ui.BTN_KEY)
|
return await confirm(
|
||||||
|
ctx,
|
||||||
|
content,
|
||||||
|
code=ButtonRequestType.Address,
|
||||||
|
cancel='QR',
|
||||||
|
cancel_style=ui.BTN_KEY)
|
||||||
|
|
||||||
|
|
||||||
async def _show_qr(ctx, address):
|
async def _show_qr(ctx, address: str, script_type: int):
|
||||||
from trezor.messages.ButtonRequestType import Address
|
|
||||||
from trezor.ui.text import Text
|
|
||||||
from trezor.ui.qr import Qr
|
|
||||||
from trezor.ui.container import Container
|
|
||||||
from ..common.confirm import confirm
|
|
||||||
|
|
||||||
qr_x = const(120)
|
qr_x = const(120)
|
||||||
qr_y = const(115)
|
qr_y = const(115)
|
||||||
qr_coef = const(4)
|
qr_coef = const(4)
|
||||||
|
|
||||||
|
if script_type == InputScriptType.SPENDWITNESS:
|
||||||
|
address = address.upper()
|
||||||
|
|
||||||
content = Container(
|
content = Container(
|
||||||
Qr(address, (qr_x, qr_y), qr_coef),
|
Qr(address, (qr_x, qr_y), qr_coef),
|
||||||
Text('Confirm address', ui.ICON_DEFAULT, ui.MONO))
|
Text('Confirm address', ui.ICON_DEFAULT, ui.MONO))
|
||||||
return await confirm(ctx, content, code=Address, cancel='Address', cancel_style=ui.BTN_KEY)
|
return await confirm(
|
||||||
|
ctx,
|
||||||
|
content,
|
||||||
|
code=ButtonRequestType.Address,
|
||||||
|
cancel='Address',
|
||||||
|
cancel_style=ui.BTN_KEY)
|
||||||
|
|
||||||
|
|
||||||
def _split_address(address):
|
def _split_address(address: str):
|
||||||
from trezor.utils import chunks
|
|
||||||
return chunks(address, 17)
|
return chunks(address, 17)
|
||||||
|
@ -1,24 +1,20 @@
|
|||||||
from trezor import ui
|
from trezor import ui
|
||||||
|
from trezor.crypto import random
|
||||||
|
from trezor.messages import ButtonRequestType
|
||||||
|
from trezor.messages.Entropy import Entropy
|
||||||
|
from trezor.ui.text import Text
|
||||||
|
from apps.common.confirm import require_confirm
|
||||||
|
|
||||||
|
|
||||||
async def get_entropy(ctx, msg):
|
async def get_entropy(ctx, msg):
|
||||||
from trezor.messages.Entropy import Entropy
|
|
||||||
from trezor.crypto import random
|
|
||||||
|
|
||||||
l = min(msg.size, 1024)
|
|
||||||
|
|
||||||
await _show_entropy(ctx)
|
|
||||||
|
|
||||||
return Entropy(entropy=random.bytes(l))
|
|
||||||
|
|
||||||
|
|
||||||
async def _show_entropy(ctx):
|
|
||||||
from trezor.messages.ButtonRequestType import ProtectCall
|
|
||||||
from trezor.ui.text import Text
|
|
||||||
from ..common.confirm import require_confirm
|
|
||||||
|
|
||||||
await require_confirm(ctx, Text(
|
await require_confirm(ctx, Text(
|
||||||
'Confirm entropy', ui.ICON_DEFAULT,
|
'Confirm entropy', ui.ICON_DEFAULT,
|
||||||
ui.BOLD, 'Do you really want', 'to send entropy?',
|
ui.BOLD, 'Do you really want', 'to send entropy?',
|
||||||
ui.NORMAL, 'Continue only if you', 'know what you are doing!'),
|
ui.NORMAL, 'Continue only if you', 'know what you are doing!'),
|
||||||
code=ProtectCall)
|
code=ButtonRequestType.ProtectCall)
|
||||||
|
|
||||||
|
size = min(msg.size, 1024)
|
||||||
|
entropy = random.bytes(size)
|
||||||
|
|
||||||
|
return Entropy(entropy=entropy)
|
||||||
|
Loading…
Reference in new issue