mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-07-23 06:58:13 +00:00
common: add {needs,no}_backup flags to LoadDevice, make it debug only
This commit is contained in:
parent
0a0cd797e3
commit
16af7f1353
@ -223,6 +223,8 @@ message LoadDevice {
|
|||||||
optional string label = 6; // device label
|
optional string label = 6; // device label
|
||||||
optional bool skip_checksum = 7; // do not test mnemonic for valid BIP-39 checksum
|
optional bool skip_checksum = 7; // do not test mnemonic for valid BIP-39 checksum
|
||||||
optional uint32 u2f_counter = 8; // U2F counter
|
optional uint32 u2f_counter = 8; // U2F counter
|
||||||
|
optional bool needs_backup = 9; // set "needs backup" flag
|
||||||
|
optional bool no_backup = 10; // indicate that no backup is going to be made
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -232,17 +234,16 @@ message LoadDevice {
|
|||||||
* @next Failure
|
* @next Failure
|
||||||
*/
|
*/
|
||||||
message ResetDevice {
|
message ResetDevice {
|
||||||
optional bool display_random = 1; // display entropy generated by the device before asking for additional entropy
|
optional bool display_random = 1; // display entropy generated by the device before asking for additional entropy
|
||||||
optional uint32 strength = 2 [default=256]; // strength of seed in bits
|
optional uint32 strength = 2 [default=256]; // strength of seed in bits
|
||||||
optional bool passphrase_protection = 3; // enable master node encryption using passphrase
|
optional bool passphrase_protection = 3; // enable master node encryption using passphrase
|
||||||
optional bool pin_protection = 4; // enable PIN protection
|
optional bool pin_protection = 4; // enable PIN protection
|
||||||
optional string language = 5 [default='english']; // device language
|
optional string language = 5 [default='english']; // device language
|
||||||
optional string label = 6; // device label
|
optional string label = 6; // device label
|
||||||
optional uint32 u2f_counter = 7; // U2F counter
|
optional uint32 u2f_counter = 7; // U2F counter
|
||||||
optional bool skip_backup = 8; // postpone seed backup to BackupDevice workflow
|
optional bool skip_backup = 8; // postpone seed backup to BackupDevice workflow
|
||||||
optional bool no_backup = 9; // indicate that no backup is going to be made
|
optional bool no_backup = 9; // indicate that no backup is going to be made
|
||||||
// type of the mnemonic backup
|
optional BackupType backup_type = 10 [default=Bip39]; // type of the mnemonic backup
|
||||||
optional BackupType backup_type = 10 [default=Bip39];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -37,7 +37,10 @@ async def load_device(ctx, msg):
|
|||||||
storage.device.set_slip39_iteration_exponent(iteration_exponent)
|
storage.device.set_slip39_iteration_exponent(iteration_exponent)
|
||||||
|
|
||||||
storage.device.store_mnemonic_secret(
|
storage.device.store_mnemonic_secret(
|
||||||
secret, backup_type, needs_backup=True, no_backup=False
|
secret,
|
||||||
|
backup_type,
|
||||||
|
needs_backup=msg.needs_backup is True,
|
||||||
|
no_backup=msg.no_backup is True,
|
||||||
)
|
)
|
||||||
storage.device.load_settings(
|
storage.device.load_settings(
|
||||||
use_passphrase=msg.passphrase_protection, label=msg.label
|
use_passphrase=msg.passphrase_protection, label=msg.label
|
||||||
|
@ -25,6 +25,8 @@ class LoadDevice(p.MessageType):
|
|||||||
label: str = None,
|
label: str = None,
|
||||||
skip_checksum: bool = None,
|
skip_checksum: bool = None,
|
||||||
u2f_counter: int = None,
|
u2f_counter: int = None,
|
||||||
|
needs_backup: bool = None,
|
||||||
|
no_backup: bool = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
self.mnemonics = mnemonics if mnemonics is not None else []
|
self.mnemonics = mnemonics if mnemonics is not None else []
|
||||||
self.node = node
|
self.node = node
|
||||||
@ -34,6 +36,8 @@ class LoadDevice(p.MessageType):
|
|||||||
self.label = label
|
self.label = label
|
||||||
self.skip_checksum = skip_checksum
|
self.skip_checksum = skip_checksum
|
||||||
self.u2f_counter = u2f_counter
|
self.u2f_counter = u2f_counter
|
||||||
|
self.needs_backup = needs_backup
|
||||||
|
self.no_backup = no_backup
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_fields(cls) -> Dict:
|
def get_fields(cls) -> Dict:
|
||||||
@ -46,4 +50,6 @@ class LoadDevice(p.MessageType):
|
|||||||
6: ('label', p.UnicodeType, 0),
|
6: ('label', p.UnicodeType, 0),
|
||||||
7: ('skip_checksum', p.BoolType, 0),
|
7: ('skip_checksum', p.BoolType, 0),
|
||||||
8: ('u2f_counter', p.UVarintType, 0),
|
8: ('u2f_counter', p.UVarintType, 0),
|
||||||
|
9: ('needs_backup', p.BoolType, 0),
|
||||||
|
10: ('no_backup', p.BoolType, 0),
|
||||||
}
|
}
|
||||||
|
@ -460,6 +460,7 @@ static void config_setNode(const HDNodeType *node) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if DEBUG_LINK
|
#if DEBUG_LINK
|
||||||
|
|
||||||
bool config_dumpNode(HDNodeType *node) {
|
bool config_dumpNode(HDNodeType *node) {
|
||||||
memzero(node, sizeof(HDNodeType));
|
memzero(node, sizeof(HDNodeType));
|
||||||
|
|
||||||
@ -488,7 +489,6 @@ bool config_dumpNode(HDNodeType *node) {
|
|||||||
memzero(&storageNode, sizeof(storageNode));
|
memzero(&storageNode, sizeof(storageNode));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
void config_loadDevice(const LoadDevice *msg) {
|
void config_loadDevice(const LoadDevice *msg) {
|
||||||
session_clear(false);
|
session_clear(false);
|
||||||
@ -517,8 +517,18 @@ void config_loadDevice(const LoadDevice *msg) {
|
|||||||
if (msg->has_u2f_counter) {
|
if (msg->has_u2f_counter) {
|
||||||
config_setU2FCounter(msg->u2f_counter);
|
config_setU2FCounter(msg->u2f_counter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (msg->has_needs_backup) {
|
||||||
|
config_setNeedsBackup(msg->needs_backup);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (msg->has_no_backup && msg->no_backup) {
|
||||||
|
config_setNoBackup();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
void config_setLabel(const char *label) {
|
void config_setLabel(const char *label) {
|
||||||
if (label == NULL || label[0] == '\0') {
|
if (label == NULL || label[0] == '\0') {
|
||||||
storage_delete(KEY_LABEL);
|
storage_delete(KEY_LABEL);
|
||||||
|
@ -54,7 +54,9 @@ void fsm_msgPing(const Ping *msg);
|
|||||||
void fsm_msgChangePin(const ChangePin *msg);
|
void fsm_msgChangePin(const ChangePin *msg);
|
||||||
void fsm_msgWipeDevice(const WipeDevice *msg);
|
void fsm_msgWipeDevice(const WipeDevice *msg);
|
||||||
void fsm_msgGetEntropy(const GetEntropy *msg);
|
void fsm_msgGetEntropy(const GetEntropy *msg);
|
||||||
|
#if DEBUG_LINK
|
||||||
void fsm_msgLoadDevice(const LoadDevice *msg);
|
void fsm_msgLoadDevice(const LoadDevice *msg);
|
||||||
|
#endif
|
||||||
void fsm_msgResetDevice(const ResetDevice *msg);
|
void fsm_msgResetDevice(const ResetDevice *msg);
|
||||||
void fsm_msgEntropyAck(const EntropyAck *msg);
|
void fsm_msgEntropyAck(const EntropyAck *msg);
|
||||||
void fsm_msgBackupDevice(const BackupDevice *msg);
|
void fsm_msgBackupDevice(const BackupDevice *msg);
|
||||||
|
@ -216,6 +216,8 @@ void fsm_msgGetEntropy(const GetEntropy *msg) {
|
|||||||
layoutHome();
|
layoutHome();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG_LINK
|
||||||
|
|
||||||
void fsm_msgLoadDevice(const LoadDevice *msg) {
|
void fsm_msgLoadDevice(const LoadDevice *msg) {
|
||||||
CHECK_PIN
|
CHECK_PIN
|
||||||
|
|
||||||
@ -245,6 +247,8 @@ void fsm_msgLoadDevice(const LoadDevice *msg) {
|
|||||||
layoutHome();
|
layoutHome();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
void fsm_msgResetDevice(const ResetDevice *msg) {
|
void fsm_msgResetDevice(const ResetDevice *msg) {
|
||||||
CHECK_PIN
|
CHECK_PIN
|
||||||
|
|
||||||
|
@ -25,6 +25,8 @@ class LoadDevice(p.MessageType):
|
|||||||
label: str = None,
|
label: str = None,
|
||||||
skip_checksum: bool = None,
|
skip_checksum: bool = None,
|
||||||
u2f_counter: int = None,
|
u2f_counter: int = None,
|
||||||
|
needs_backup: bool = None,
|
||||||
|
no_backup: bool = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
self.mnemonics = mnemonics if mnemonics is not None else []
|
self.mnemonics = mnemonics if mnemonics is not None else []
|
||||||
self.node = node
|
self.node = node
|
||||||
@ -34,6 +36,8 @@ class LoadDevice(p.MessageType):
|
|||||||
self.label = label
|
self.label = label
|
||||||
self.skip_checksum = skip_checksum
|
self.skip_checksum = skip_checksum
|
||||||
self.u2f_counter = u2f_counter
|
self.u2f_counter = u2f_counter
|
||||||
|
self.needs_backup = needs_backup
|
||||||
|
self.no_backup = no_backup
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_fields(cls) -> Dict:
|
def get_fields(cls) -> Dict:
|
||||||
@ -46,4 +50,6 @@ class LoadDevice(p.MessageType):
|
|||||||
6: ('label', p.UnicodeType, 0),
|
6: ('label', p.UnicodeType, 0),
|
||||||
7: ('skip_checksum', p.BoolType, 0),
|
7: ('skip_checksum', p.BoolType, 0),
|
||||||
8: ('u2f_counter', p.UVarintType, 0),
|
8: ('u2f_counter', p.UVarintType, 0),
|
||||||
|
9: ('needs_backup', p.BoolType, 0),
|
||||||
|
10: ('no_backup', p.BoolType, 0),
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user