diff --git a/core/src/apps/management/recovery_device.py b/core/src/apps/management/recovery_device.py index ecb1dfff0..8366db54a 100644 --- a/core/src/apps/management/recovery_device.py +++ b/core/src/apps/management/recovery_device.py @@ -10,6 +10,7 @@ from trezor.ui.mnemonic_slip39 import Slip39Keyboard from trezor.ui.text import Text from trezor.ui.word_select import WordSelector from trezor.utils import format_ordinal +from trezor.crypto import slip39 from apps.common import mnemonic, storage from apps.common.confirm import require_confirm @@ -69,7 +70,10 @@ async def recovery_device(ctx, msg): words = await request_mnemonic( ctx, wordcount, mnemonic_module == mnemonic.slip39 ) - secret = mnemonic_module.process_single(words) + try: + secret = mnemonic_module.process_single(words) + except slip39.MnemonicError as e: + raise wire.ProcessError("Mnemonic is not valid: " + str(e)) # show a number of remaining mnemonics for SLIP39 if secret is None and mnemonic_module == mnemonic.slip39: await show_remaining_slip39_mnemonics(