1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2025-03-27 13:35:44 +00:00

fix(python): simplify UI callbacks

This commit is contained in:
Martin Milata 2025-02-27 18:49:04 +01:00 committed by M1nd3r
parent 21b69d06c6
commit 7bcbe0aac4
3 changed files with 87 additions and 93 deletions

View File

@ -56,9 +56,11 @@ class ProtocolVersion(IntEnum):
class TrezorClient: class TrezorClient:
button_callback: t.Callable[[Session, t.Any], t.Any] | None = None button_callback: t.Callable[[Session, messages.ButtonRequest], t.Any] | None = None
passphrase_callback: t.Callable[[Session, t.Any], t.Any] | None = None passphrase_callback: (
pin_callback: t.Callable[[Session, t.Any], t.Any] | None = None t.Callable[[Session, messages.PassphraseRequest], t.Any] | None
) = None
pin_callback: t.Callable[[Session, messages.PinMatrixRequest], t.Any] | None = None
_seedless_session: Session | None = None _seedless_session: Session | None = None
_features: messages.Features | None = None _features: messages.Features | None = None

View File

@ -1065,9 +1065,6 @@ class SessionDebugWrapper(Session):
t.Type[protobuf.MessageType], t.Type[protobuf.MessageType],
t.Callable[[protobuf.MessageType], protobuf.MessageType] | None, t.Callable[[protobuf.MessageType], protobuf.MessageType] | None,
] = {} ] = {}
self.button_callback = self.client.button_callback
self.pin_callback = self.client.pin_callback
self.passphrase_callback = self._session.passphrase_callback
def __enter__(self) -> "SessionDebugWrapper": def __enter__(self) -> "SessionDebugWrapper":
# For usage in with/expected_responses # For usage in with/expected_responses
@ -1232,22 +1229,14 @@ class TrezorClientDebugLink(TrezorClient):
self.ui: DebugUI = DebugUI(self.debug) self.ui: DebugUI = DebugUI(self.debug)
self.in_with_statement = False self.in_with_statement = False
@property def button_callback(self, session: Session, msg: messages.ButtonRequest) -> t.Any:
def button_callback(self):
def _callback_button(session: Session, msg: messages.ButtonRequest) -> t.Any:
__tracebackhide__ = True # for pytest # pylint: disable=W0612 __tracebackhide__ = True # for pytest # pylint: disable=W0612
# do this raw - send ButtonAck first, notify UI later # do this raw - send ButtonAck first, notify UI later
session._write(messages.ButtonAck()) session._write(messages.ButtonAck())
self.ui.button_request(msg) self.ui.button_request(msg)
return session._read() return session._read()
return _callback_button def pin_callback(self, session: Session, msg: messages.PinMatrixRequest) -> t.Any:
@property
def pin_callback(self):
def _callback_pin(session: Session, msg: messages.PinMatrixRequest) -> t.Any:
try: try:
pin = self.ui.get_pin(msg.type) pin = self.ui.get_pin(msg.type)
except Cancelled: except Cancelled:
@ -1269,12 +1258,8 @@ class TrezorClientDebugLink(TrezorClient):
else: else:
return resp return resp
return _callback_pin def passphrase_callback(
self, session: Session, msg: messages.PassphraseRequest
@property
def passphrase_callback(self):
def _callback_passphrase(
session: Session, msg: messages.PassphraseRequest
) -> t.Any: ) -> t.Any:
available_on_device = ( available_on_device = (
Capability.PassphraseEntry in session.features.capabilities Capability.PassphraseEntry in session.features.capabilities
@ -1327,8 +1312,6 @@ class TrezorClientDebugLink(TrezorClient):
return send_passphrase(passphrase, on_device=False) return send_passphrase(passphrase, on_device=False)
return _callback_passphrase
def close_transport(self) -> None: def close_transport(self) -> None:
self.transport.close() self.transport.close()
self.debug.close() self.debug.close()

View File

@ -174,4 +174,13 @@ class SessionV1(Session):
def default_button_callback(session: Session, msg: t.Any) -> t.Any: def default_button_callback(session: Session, msg: t.Any) -> t.Any:
return session.call(messages.ButtonAck()) return session.call_raw(messages.ButtonAck())
def derive_seed(session: Session) -> None:
from ..btc import get_address
from ..client import PASSPHRASE_TEST_PATH
get_address(session, "Testnet", PASSPHRASE_TEST_PATH)
session.refresh_features()