mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-23 06:48:16 +00:00
LoadDevice: validate mnemonic, import xprv
This commit is contained in:
parent
e62ded3a2f
commit
6b94511472
@ -4,6 +4,7 @@ from trezor.utils import unimport
|
|||||||
|
|
||||||
@unimport
|
@unimport
|
||||||
async def layout_load_device(message, session_id):
|
async def layout_load_device(message, session_id):
|
||||||
|
from trezor.crypto import bip39
|
||||||
from trezor.messages.Storage import Storage
|
from trezor.messages.Storage import Storage
|
||||||
from trezor.messages.Success import Success
|
from trezor.messages.Success import Success
|
||||||
from trezor.messages.FailureType import UnexpectedMessage, Other
|
from trezor.messages.FailureType import UnexpectedMessage, Other
|
||||||
@ -13,6 +14,15 @@ async def layout_load_device(message, session_id):
|
|||||||
|
|
||||||
if get_storage(session_id):
|
if get_storage(session_id):
|
||||||
raise wire.FailureError(UnexpectedMessage, 'Already initialized')
|
raise wire.FailureError(UnexpectedMessage, 'Already initialized')
|
||||||
|
storage = Storage()
|
||||||
|
storage.imported = True
|
||||||
|
|
||||||
|
if hasattr(message, 'node'):
|
||||||
|
storage.node = message.node
|
||||||
|
elif hasattr(message, 'mnemonic'):
|
||||||
|
if not message.skip_checksum and not bip39.check(message.mnemonic):
|
||||||
|
raise wire.FailureError(Other, 'Mnemonic is not valid')
|
||||||
|
storage.mnemonic = message.mnemonic
|
||||||
|
|
||||||
ui.display.clear()
|
ui.display.clear()
|
||||||
|
|
||||||
@ -21,18 +31,12 @@ async def layout_load_device(message, session_id):
|
|||||||
ui.BOLD, 'Loading private seed', 'is not recommended.',
|
ui.BOLD, 'Loading private seed', 'is not recommended.',
|
||||||
ui.NORMAL, 'Continue only if you', 'know what you are doing!'))
|
ui.NORMAL, 'Continue only if you', 'know what you are doing!'))
|
||||||
|
|
||||||
node = getattr(message, 'node', None)
|
storage.version = 1
|
||||||
mnemonic = getattr(message, 'mnemonic', None)
|
storage.pin = message.pin
|
||||||
|
storage.passphrase_protection = message.passphrase_protection,
|
||||||
|
storage.language = message.language
|
||||||
|
storage.label = message.label
|
||||||
|
|
||||||
# if node is not None:
|
|
||||||
# raise wire.FailureError(Other, 'XPRV import is not implemented')
|
|
||||||
# if mnemonic is not None and not message.skip_checksum:
|
|
||||||
# raise wire.FailureError(Other, 'Mnemonic checksum is not implemented')
|
|
||||||
|
|
||||||
storage = Storage(
|
|
||||||
version=1, imported=1, mnemonic=mnemonic, node=node,
|
|
||||||
pin=message.pin, passphrase_protection=message.passphrase_protection,
|
|
||||||
language=message.language, label=message.label)
|
|
||||||
set_storage(session_id, await storage.dumps())
|
set_storage(session_id, await storage.dumps())
|
||||||
|
|
||||||
return Success(message='Device loaded')
|
return Success(message='Device loaded')
|
||||||
|
Loading…
Reference in New Issue
Block a user