mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-18 13:38:12 +00:00
stellar: get address
including show_display var
This commit is contained in:
parent
93571e469f
commit
bcf77bd347
@ -18,7 +18,6 @@ async def get_address(ctx, msg):
|
||||
address = node.nem_address(network)
|
||||
|
||||
if msg.show_display:
|
||||
|
||||
while True:
|
||||
if await _show_address(ctx, address, network):
|
||||
break
|
||||
|
@ -1,8 +1,14 @@
|
||||
from trezor.wire import register, protobuf_workflow
|
||||
from trezor.messages.wire_types import StellarGetAddress
|
||||
from trezor.messages.wire_types import StellarGetPublicKey
|
||||
from trezor.messages.wire_types import StellarSignTx
|
||||
|
||||
|
||||
def dispatch_StellarGetAddress(*args, **kwargs):
|
||||
from .get_address import get_address
|
||||
return get_address(*args, **kwargs)
|
||||
|
||||
|
||||
def dispatch_StellarGetPublicKey(*args, **kwargs):
|
||||
from .get_public_key import get_public_key
|
||||
return get_public_key(*args, **kwargs)
|
||||
@ -14,5 +20,6 @@ def dispatch_StellarSignTx(*args, **kwargs):
|
||||
|
||||
|
||||
def boot():
|
||||
register(StellarGetAddress, protobuf_workflow, dispatch_StellarGetAddress)
|
||||
register(StellarGetPublicKey, protobuf_workflow, dispatch_StellarGetPublicKey)
|
||||
register(StellarSignTx, protobuf_workflow, dispatch_StellarSignTx)
|
||||
|
20
src/apps/stellar/get_address.py
Normal file
20
src/apps/stellar/get_address.py
Normal file
@ -0,0 +1,20 @@
|
||||
from apps.common import seed
|
||||
from apps.common.display_address import show_address, show_qr
|
||||
from apps.stellar import helpers
|
||||
from trezor.messages.StellarAddress import StellarAddress
|
||||
from trezor.messages.StellarGetAddress import StellarGetAddress
|
||||
|
||||
|
||||
async def get_address(ctx, msg: StellarGetAddress):
|
||||
node = await seed.derive_node(ctx, msg.address_n, helpers.STELLAR_CURVE)
|
||||
pubkey = seed.remove_ed25519_public_key_prefix(node.public_key()) # todo better?
|
||||
address = helpers.address_from_public_key(pubkey)
|
||||
|
||||
if msg.show_display:
|
||||
while True:
|
||||
if await show_address(ctx, address):
|
||||
break
|
||||
if await show_qr(ctx, address.upper()):
|
||||
break
|
||||
|
||||
return StellarAddress(address=address)
|
@ -1,31 +1,31 @@
|
||||
from apps.common import seed
|
||||
from apps.common.confirm import confirm
|
||||
from apps.common.display_address import split_address
|
||||
from apps.stellar import helpers
|
||||
from trezor import ui
|
||||
from trezor.messages.StellarPublicKey import StellarPublicKey
|
||||
from trezor.messages.StellarGetPublicKey import StellarGetPublicKey
|
||||
from trezor.messages import ButtonRequestType
|
||||
from trezor.ui.text import Text
|
||||
from trezor.utils import chunks
|
||||
|
||||
STELLAR_CURVE = 'ed25519'
|
||||
from ubinascii import hexlify
|
||||
|
||||
|
||||
async def get_public_key(ctx, msg: StellarGetPublicKey):
|
||||
node = await seed.derive_node(ctx, msg.address_n, STELLAR_CURVE)
|
||||
node = await seed.derive_node(ctx, msg.address_n, helpers.STELLAR_CURVE)
|
||||
pubkey = seed.remove_ed25519_public_key_prefix(node.public_key()) # todo better?
|
||||
|
||||
while True:
|
||||
if await _show(ctx, helpers.address_from_public_key(pubkey)):
|
||||
break
|
||||
if msg.show_display:
|
||||
while True:
|
||||
if await _show(ctx, pubkey):
|
||||
break
|
||||
|
||||
return StellarPublicKey(public_key=pubkey)
|
||||
|
||||
|
||||
async def _show(ctx, address: str):
|
||||
lines = _split_address(address)
|
||||
async def _show(ctx, pubkey: bytes):
|
||||
lines = split_address(hexlify(pubkey))
|
||||
content = Text('Export Stellar ID', ui.ICON_RECEIVE,
|
||||
ui.NORMAL, 'Share public account ID?',
|
||||
ui.NORMAL, 'Share public account ID?', # todo only two lines are displayed
|
||||
ui.MONO, *lines,
|
||||
icon_color=ui.GREEN)
|
||||
|
||||
@ -34,7 +34,3 @@ async def _show(ctx, address: str):
|
||||
content,
|
||||
code=ButtonRequestType.Address,
|
||||
cancel_style=ui.BTN_KEY)
|
||||
|
||||
|
||||
def _split_address(address: str): # todo merge with NEM
|
||||
return chunks(address, 17)
|
||||
|
@ -1,6 +1,8 @@
|
||||
from trezor.crypto import base32
|
||||
import ustruct
|
||||
|
||||
STELLAR_CURVE = 'ed25519'
|
||||
|
||||
|
||||
def address_from_public_key(pubkey: bytes):
|
||||
"""Returns the base32-encoded version of public key bytes (G...)"""
|
||||
|
Loading…
Reference in New Issue
Block a user