diff --git a/core/src/apps/common/storage/recovery.py b/core/src/apps/common/storage/recovery.py index fc771ee54..6c7ae212d 100644 --- a/core/src/apps/common/storage/recovery.py +++ b/core/src/apps/common/storage/recovery.py @@ -16,7 +16,6 @@ _SLIP39_THRESHOLD = const(0x04) # int _REMAINING = const(0x05) # int _SLIP39_ITERATION_EXPONENT = const(0x06) # int _SLIP39_GROUP_COUNT = const(0x07) # int -_SLIP39_GROUP_THRESHOLD = const(0x08) # int # Deprecated Keys: # _WORD_COUNT = const(0x02) # int @@ -95,15 +94,6 @@ def get_slip39_group_count() -> Optional[int]: ) -def set_slip39_group_threshold(group_threshold: int) -> None: - common.set_uint8(_NAMESPACE, _SLIP39_GROUP_THRESHOLD, group_threshold) - - -def get_slip39_group_threshold() -> Optional[int]: - _require_progress() - return common.get_uint8(_NAMESPACE, _SLIP39_GROUP_THRESHOLD) - - def set_slip39_remaining_shares(shares_remaining: int, group_index: int) -> None: """ We store the remaining shares as a bytearray of length group_count. @@ -153,5 +143,4 @@ def end_progress() -> None: common.delete(_NAMESPACE, _REMAINING) common.delete(_NAMESPACE, _SLIP39_ITERATION_EXPONENT) common.delete(_NAMESPACE, _SLIP39_GROUP_COUNT) - common.delete(_NAMESPACE, _SLIP39_GROUP_THRESHOLD) recovery_shares.delete() diff --git a/core/src/apps/management/recovery_device/homescreen.py b/core/src/apps/management/recovery_device/homescreen.py index c55334693..9b72f5216 100644 --- a/core/src/apps/management/recovery_device/homescreen.py +++ b/core/src/apps/management/recovery_device/homescreen.py @@ -1,6 +1,6 @@ from trezor import loop, utils, wire +from trezor.crypto import slip39 from trezor.crypto.hashlib import sha256 -from trezor.crypto.slip39 import MAX_SHARE_COUNT from trezor.errors import MnemonicError from trezor.messages import BackupType from trezor.messages.Success import Success @@ -209,14 +209,18 @@ async def _show_remaining_groups_and_shares(ctx: wire.Context) -> None: identifiers = [] first_entered_index = -1 for i in range(len(shares_remaining)): - if shares_remaining[i] < MAX_SHARE_COUNT: + if shares_remaining[i] < slip39.MAX_SHARE_COUNT: first_entered_index = i + share = None for i, r in enumerate(shares_remaining): - if 0 < r < MAX_SHARE_COUNT: - identifier = storage.recovery_shares.fetch_group(i)[0].split(" ")[0:3] + if 0 < r < slip39.MAX_SHARE_COUNT: + if not share: + m = storage.recovery_shares.fetch_group(i)[0] + share = slip39.decode_mnemonic(m) + identifier = mnemonic.split(" ")[0:3] identifiers.append([r, identifier]) - elif r == MAX_SHARE_COUNT: + elif r == slip39.MAX_SHARE_COUNT: identifier = storage.recovery_shares.fetch_group(first_entered_index)[ 0 ].split(" ")[0:2] @@ -226,4 +230,6 @@ async def _show_remaining_groups_and_shares(ctx: wire.Context) -> None: except ValueError: identifiers.append([r, identifier]) - return await layout.show_remaining_shares(ctx, identifiers, shares_remaining) + return await layout.show_remaining_shares( + ctx, identifiers, shares_remaining, share.group_threshold + ) diff --git a/core/src/apps/management/recovery_device/layout.py b/core/src/apps/management/recovery_device/layout.py index 9ac1cbf7f..67bfd583b 100644 --- a/core/src/apps/management/recovery_device/layout.py +++ b/core/src/apps/management/recovery_device/layout.py @@ -154,8 +154,8 @@ async def show_remaining_shares( ctx: wire.Context, groups: List[int, List[str]], # remaining + list 3 words shares_remaining: List[int], + group_threshold: int, ) -> None: - group_threshold = storage.recovery.get_slip39_group_threshold() pages = [] for remaining, group in groups: if 0 < remaining < MAX_SHARE_COUNT: diff --git a/core/src/apps/management/recovery_device/recover.py b/core/src/apps/management/recovery_device/recover.py index 0fd71357e..f558c97f0 100644 --- a/core/src/apps/management/recovery_device/recover.py +++ b/core/src/apps/management/recovery_device/recover.py @@ -35,7 +35,6 @@ def process_slip39(words: str) -> Tuple[Optional[bytes], slip39.Share]: # if this is the first share, parse and store metadata if not remaining: storage.recovery.set_slip39_group_count(share.group_count) - storage.recovery.set_slip39_group_threshold(share.group_threshold) storage.recovery.set_slip39_iteration_exponent(share.iteration_exponent) storage.recovery.set_slip39_identifier(share.identifier) storage.recovery.set_slip39_threshold(share.threshold)