From b9160723892d42d6efac1f76c2f78a97cf34a35f Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 20 Feb 2020 12:10:03 +0100 Subject: [PATCH] common: restore PassphraseAck.state --- common/protob/messages-common.proto | 2 +- core/src/trezor/messages/PassphraseAck.py | 3 +++ docs/common/communication/passphrase-redesign-migration.md | 2 ++ legacy/firmware/protob/messages-common.options | 1 + python/src/trezorlib/messages/PassphraseAck.py | 3 +++ 5 files changed, 10 insertions(+), 1 deletion(-) diff --git a/common/protob/messages-common.proto b/common/protob/messages-common.proto index a627bd17c..17bfcba8a 100644 --- a/common/protob/messages-common.proto +++ b/common/protob/messages-common.proto @@ -120,7 +120,7 @@ message PassphraseRequest { */ message PassphraseAck { optional string passphrase = 1; - // optional bytes state = 2; DEPRECATED since 2.3.0 + optional bytes _state = 2 [deprecated=true]; // <2.3.0 optional bool on_device = 3; // user wants to enter passphrase on the device } diff --git a/core/src/trezor/messages/PassphraseAck.py b/core/src/trezor/messages/PassphraseAck.py index 791d6c54f..84d134c93 100644 --- a/core/src/trezor/messages/PassphraseAck.py +++ b/core/src/trezor/messages/PassphraseAck.py @@ -16,14 +16,17 @@ class PassphraseAck(p.MessageType): def __init__( self, passphrase: str = None, + _state: bytes = None, on_device: bool = None, ) -> None: self.passphrase = passphrase + self._state = _state self.on_device = on_device @classmethod def get_fields(cls) -> Dict: return { 1: ('passphrase', p.UnicodeType, 0), + 2: ('_state', p.BytesType, 0), 3: ('on_device', p.BoolType, 0), } diff --git a/docs/common/communication/passphrase-redesign-migration.md b/docs/common/communication/passphrase-redesign-migration.md index 40fbafe2a..8616fa1b1 100644 --- a/docs/common/communication/passphrase-redesign-migration.md +++ b/docs/common/communication/passphrase-redesign-migration.md @@ -43,6 +43,8 @@ The gist of the changes is: - `PassphraseRequest.on_device` was deprecated, and renamed to `_on_device`. New Devices will never send this field. - Corresponding field `PassphraseAck.on_device` was added. +- `PassphraseAck.state` was deprecated, and renamed to `_state`. It is retained for + code compatibility, but the field should never be set. - `PassphraseStateRequest`/`PassphraseStateAck` messages were deprecated, and renamed with a `Deprecated_` prefix. New Devices will not send or accept these messages. - `Initialize.state` was renamed to `Initialize.session_id`. diff --git a/legacy/firmware/protob/messages-common.options b/legacy/firmware/protob/messages-common.options index c31f9fb7e..9ef754dfa 100644 --- a/legacy/firmware/protob/messages-common.options +++ b/legacy/firmware/protob/messages-common.options @@ -6,6 +6,7 @@ PinMatrixAck.pin max_size:10 PassphraseAck.passphrase max_size:51 +PassphraseAck._state max_size:1 Deprecated_PassphraseStateRequest.state max_size:1 HDNodeType.chain_code max_size:32 diff --git a/python/src/trezorlib/messages/PassphraseAck.py b/python/src/trezorlib/messages/PassphraseAck.py index bc5f94c2d..ef00fa78e 100644 --- a/python/src/trezorlib/messages/PassphraseAck.py +++ b/python/src/trezorlib/messages/PassphraseAck.py @@ -16,14 +16,17 @@ class PassphraseAck(p.MessageType): def __init__( self, passphrase: str = None, + _state: bytes = None, on_device: bool = None, ) -> None: self.passphrase = passphrase + self._state = _state self.on_device = on_device @classmethod def get_fields(cls) -> Dict: return { 1: ('passphrase', p.UnicodeType, 0), + 2: ('_state', p.BytesType, 0), 3: ('on_device', p.BoolType, 0), }