1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-11-22 07:28:10 +00:00

fix(python): fallback for trezorctl device setup on older firmwares

fixes #3956
[no changelog] because the slip39-single feature was not yet released
This commit is contained in:
matejcik 2024-06-19 10:31:34 +02:00
parent 32d26933a6
commit d1981e745e

View File

@ -214,7 +214,7 @@ def recover(
@click.option("-u", "--u2f-counter", default=0) @click.option("-u", "--u2f-counter", default=0)
@click.option("-s", "--skip-backup", is_flag=True) @click.option("-s", "--skip-backup", is_flag=True)
@click.option("-n", "--no-backup", is_flag=True) @click.option("-n", "--no-backup", is_flag=True)
@click.option("-b", "--backup-type", type=ChoiceType(BACKUP_TYPE), default="single") @click.option("-b", "--backup-type", type=ChoiceType(BACKUP_TYPE))
@with_client @with_client
def setup( def setup(
client: "TrezorClient", client: "TrezorClient",
@ -226,22 +226,33 @@ def setup(
u2f_counter: int, u2f_counter: int,
skip_backup: bool, skip_backup: bool,
no_backup: bool, no_backup: bool,
backup_type: messages.BackupType, backup_type: messages.BackupType | None,
) -> str: ) -> str:
"""Perform device setup and generate new seed.""" """Perform device setup and generate new seed."""
if strength: if strength:
strength = int(strength) strength = int(strength)
BT = messages.BackupType
if backup_type is None:
if client.version >= (2, 7, 1):
# SLIP39 extendable was introduced in 2.7.1
backup_type = BT.Slip39_Single_Extendable
else:
# this includes both T1 and older trezor-cores
backup_type = BT.Bip39
if ( if (
backup_type == messages.BackupType.Slip39_Basic backup_type
in (BT.Slip39_Single_Extendable, BT.Slip39_Basic, BT.Slip39_Basic_Extendable)
and messages.Capability.Shamir not in client.features.capabilities and messages.Capability.Shamir not in client.features.capabilities
) or ( ) or (
backup_type == messages.BackupType.Slip39_Advanced backup_type in (BT.Slip39_Advanced, BT.Slip39_Advanced_Extendable)
and messages.Capability.ShamirGroups not in client.features.capabilities and messages.Capability.ShamirGroups not in client.features.capabilities
): ):
click.echo( click.echo(
"WARNING: Your Trezor device does not indicate support for the requested\n" "WARNING: Your Trezor device does not indicate support for the requested\n"
"backup type. Traditional single-seed backup may be generated instead." "backup type. Traditional BIP39 backup may be generated instead."
) )
return device.reset( return device.reset(