src/apps/management/recovery_device: constant time mnemonic checking in dry run

pull/25/head
Pavol Rusnak 5 years ago
parent 6233cc0720
commit 0751c667c3
No known key found for this signature in database
GPG Key ID: 91F3B339B9A02A3D

@ -1,5 +1,6 @@
from trezor import config, ui, wire from trezor import config, ui, wire
from trezor.crypto import bip39 from trezor.crypto import bip39
from trezor.crypto.hashlib import sha256
from trezor.messages.ButtonRequest import ButtonRequest from trezor.messages.ButtonRequest import ButtonRequest
from trezor.messages.ButtonRequestType import ( from trezor.messages.ButtonRequestType import (
MnemonicInput, MnemonicInput,
@ -12,7 +13,7 @@ from trezor.pin import pin_to_int
from trezor.ui.mnemonic import MnemonicKeyboard from trezor.ui.mnemonic import MnemonicKeyboard
from trezor.ui.text import Text from trezor.ui.text import Text
from trezor.ui.word_select import WordSelector from trezor.ui.word_select import WordSelector
from trezor.utils import format_ordinal from trezor.utils import consteq, format_ordinal
from apps.common import storage from apps.common import storage
from apps.common.confirm import require_confirm from apps.common.confirm import require_confirm
@ -54,7 +55,9 @@ async def recovery_device(ctx, msg):
# dry run # dry run
if msg.dry_run: if msg.dry_run:
if storage.get_mnemonic() == mnemonic: digest_input = sha256(mnemonic).digest()
digest_stored = sha256(storage.get_mnemonic()).digest()
if consteq(digest_stored, digest_input):
return Success( return Success(
message="The seed is valid and matches the one in the device" message="The seed is valid and matches the one in the device"
) )

@ -7,6 +7,7 @@ from trezorutils import ( # noqa: F401
VERSION_MAJOR, VERSION_MAJOR,
VERSION_MINOR, VERSION_MINOR,
VERSION_PATCH, VERSION_PATCH,
consteq,
halt, halt,
memcpy, memcpy,
set_mode_unprivileged, set_mode_unprivileged,

Loading…
Cancel
Save