diff --git a/common/protob/messages-management.proto b/common/protob/messages-management.proto index d6008a5da..47905dec4 100644 --- a/common/protob/messages-management.proto +++ b/common/protob/messages-management.proto @@ -165,7 +165,7 @@ message WipeDevice { * @next Failure */ message LoadDevice { - optional string mnemonic = 1; // seed encoded as BIP-39 mnemonic (12, 18 or 24 words) + repeated string mnemonics = 1; // seed encoded as mnemonic (12, 18 or 24 words for BIP39, 20 or 33 for SLIP39) optional hw.trezor.messages.common.HDNodeType node = 2; // BIP-32 node optional string pin = 3; // set PIN protection optional bool passphrase_protection = 4; // enable master node encryption using passphrase diff --git a/core/src/trezor/messages/LoadDevice.py b/core/src/trezor/messages/LoadDevice.py index 285951745..936ae0b99 100644 --- a/core/src/trezor/messages/LoadDevice.py +++ b/core/src/trezor/messages/LoadDevice.py @@ -16,7 +16,7 @@ class LoadDevice(p.MessageType): def __init__( self, - mnemonic: str = None, + mnemonics: List[str] = None, node: HDNodeType = None, pin: str = None, passphrase_protection: bool = None, @@ -25,7 +25,7 @@ class LoadDevice(p.MessageType): skip_checksum: bool = None, u2f_counter: int = None, ) -> None: - self.mnemonic = mnemonic + self.mnemonics = mnemonics if mnemonics is not None else [] self.node = node self.pin = pin self.passphrase_protection = passphrase_protection @@ -37,7 +37,7 @@ class LoadDevice(p.MessageType): @classmethod def get_fields(cls) -> Dict: return { - 1: ('mnemonic', p.UnicodeType, 0), + 1: ('mnemonics', p.UnicodeType, p.FLAG_REPEATED), 2: ('node', HDNodeType, 0), 3: ('pin', p.UnicodeType, 0), 4: ('passphrase_protection', p.BoolType, 0), diff --git a/python/trezorlib/messages/LoadDevice.py b/python/trezorlib/messages/LoadDevice.py index 70b894ed3..db283519b 100644 --- a/python/trezorlib/messages/LoadDevice.py +++ b/python/trezorlib/messages/LoadDevice.py @@ -16,7 +16,7 @@ class LoadDevice(p.MessageType): def __init__( self, - mnemonic: str = None, + mnemonics: List[str] = None, node: HDNodeType = None, pin: str = None, passphrase_protection: bool = None, @@ -25,7 +25,7 @@ class LoadDevice(p.MessageType): skip_checksum: bool = None, u2f_counter: int = None, ) -> None: - self.mnemonic = mnemonic + self.mnemonics = mnemonics if mnemonics is not None else [] self.node = node self.pin = pin self.passphrase_protection = passphrase_protection @@ -37,7 +37,7 @@ class LoadDevice(p.MessageType): @classmethod def get_fields(cls) -> Dict: return { - 1: ('mnemonic', p.UnicodeType, 0), + 1: ('mnemonics', p.UnicodeType, p.FLAG_REPEATED), 2: ('node', HDNodeType, 0), 3: ('pin', p.UnicodeType, 0), 4: ('passphrase_protection', p.BoolType, 0),