1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2025-07-06 06:42:33 +00:00
trezor-firmware/src/apps/management/backup_device.py
2018-07-10 13:05:15 +02:00

37 lines
957 B
Python

from trezor import wire
from trezor.messages.Success import Success
from apps.common import storage
from apps.management.reset_device import (
check_mnemonic,
show_mnemonic,
show_warning,
show_wrong_entry,
)
async def backup_device(ctx, msg):
if not storage.is_initialized():
raise wire.ProcessError('Device is not initialized')
if not storage.needs_backup():
raise wire.ProcessError('Seed already backed up')
mnemonic = storage.get_mnemonic()
# warn user about mnemonic safety
await show_warning(ctx)
storage.set_unfinished_backup(True)
storage.set_backed_up()
while True:
# show mnemonic and require confirmation of a random word
await show_mnemonic(ctx, mnemonic)
if await check_mnemonic(ctx, mnemonic):
break
await show_wrong_entry(ctx)
storage.set_unfinished_backup(False)
return Success(message='Seed successfully backed up')