diff --git a/core/embed/rust/src/ui/model_tr/layout.rs b/core/embed/rust/src/ui/model_tr/layout.rs index bdf4f5592..73e20b251 100644 --- a/core/embed/rust/src/ui/model_tr/layout.rs +++ b/core/embed/rust/src/ui/model_tr/layout.rs @@ -349,6 +349,14 @@ extern "C" fn new_confirm_blob(n_args: usize, args: *const Obj, kwargs: *mut Map .unwrap_or_else(|_| Obj::const_none()) .try_into_option()?; let hold: bool = kwargs.get_or(Qstr::MP_QSTR_hold, false)?; + let chunkify: bool = kwargs.get_or(Qstr::MP_QSTR_chunkify, false)?; + + let style = if chunkify { + // Chunkifying the address into smaller pieces when requested + &theme::TEXT_MONO_ADDRESS_CHUNKS + } else { + &theme::TEXT_MONO_DATA + }; let paragraphs = ConfirmBlob { description: description.unwrap_or_else(StrBuffer::empty), @@ -356,7 +364,7 @@ extern "C" fn new_confirm_blob(n_args: usize, args: *const Obj, kwargs: *mut Map data: data.try_into()?, description_font: &theme::TEXT_BOLD, extra_font: &theme::TEXT_NORMAL, - data_font: &theme::TEXT_MONO_DATA, + data_font: style, } .into_paragraphs(); @@ -740,6 +748,7 @@ extern "C" fn new_confirm_ethereum_tx(n_args: usize, args: *const Obj, kwargs: * let total_amount: StrBuffer = kwargs.get(Qstr::MP_QSTR_total_amount)?.try_into()?; let maximum_fee: StrBuffer = kwargs.get(Qstr::MP_QSTR_maximum_fee)?.try_into()?; let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; + let chunkify: bool = kwargs.get_or(Qstr::MP_QSTR_chunkify, false)?; let get_page = move |page_index| { match page_index { @@ -748,7 +757,14 @@ extern "C" fn new_confirm_ethereum_tx(n_args: usize, args: *const Obj, kwargs: * let btn_layout = ButtonLayout::cancel_none_text("CONTINUE".into()); let btn_actions = ButtonActions::cancel_none_next(); - let ops = OpTextLayout::new(theme::TEXT_MONO_DATA).text_mono(recipient.clone()); + let style = if chunkify { + // Chunkifying the address into smaller pieces when requested + theme::TEXT_MONO_ADDRESS_CHUNKS + } else { + theme::TEXT_MONO_DATA + }; + + let ops = OpTextLayout::new(style).text_mono(recipient.clone()); let formatted = FormattedText::new(ops).vertically_centered(); Page::new(btn_layout, btn_actions, formatted).with_title("RECIPIENT".into()) @@ -1643,6 +1659,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// verb: str = "CONFIRM", /// verb_cancel: str | None = None, /// hold: bool = False, + /// chunkify: bool = False, /// ) -> object: /// """Confirm byte sequence data.""" Qstr::MP_QSTR_confirm_blob => obj_fn_kw!(0, new_confirm_blob).as_obj(), @@ -1758,6 +1775,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// total_amount: str, /// maximum_fee: str, /// items: Iterable[Tuple[str, str]], + /// chunkify: bool = False, /// ) -> object: /// """Confirm details about Ethereum transaction.""" Qstr::MP_QSTR_confirm_ethereum_tx => obj_fn_kw!(0, new_confirm_ethereum_tx).as_obj(), diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index 22a9f9fd5..6252ef922 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -552,9 +552,11 @@ extern "C" fn new_confirm_blob(n_args: usize, args: *const Obj, kwargs: *mut Map .unwrap_or_else(|_| Obj::const_none()) .try_into_option()?; let hold: bool = kwargs.get_or(Qstr::MP_QSTR_hold, false)?; + let chunkify: bool = kwargs.get_or(Qstr::MP_QSTR_chunkify, false)?; ConfirmBlobParams::new(title, data, description, verb, verb_cancel, hold) .with_extra(extra) + .with_chunkify(chunkify) .into_layout() }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -1642,6 +1644,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// verb: str | None = None, /// verb_cancel: str | None = None, /// hold: bool = False, + /// chunkify: bool = False, /// ) -> object: /// """Confirm byte sequence data.""" Qstr::MP_QSTR_confirm_blob => obj_fn_kw!(0, new_confirm_blob).as_obj(), diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 66d85354a..75b35d7d0 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -48,6 +48,7 @@ def confirm_blob( verb: str = "CONFIRM", verb_cancel: str | None = None, hold: bool = False, + chunkify: bool = False, ) -> object: """Confirm byte sequence data.""" @@ -174,6 +175,7 @@ def confirm_ethereum_tx( total_amount: str, maximum_fee: str, items: Iterable[Tuple[str, str]], + chunkify: bool = False, ) -> object: """Confirm details about Ethereum transaction.""" @@ -503,6 +505,7 @@ def confirm_blob( verb: str | None = None, verb_cancel: str | None = None, hold: bool = False, + chunkify: bool = False, ) -> object: """Confirm byte sequence data.""" diff --git a/core/src/apps/ethereum/layout.py b/core/src/apps/ethereum/layout.py index 2d3632bd3..71e5f0736 100644 --- a/core/src/apps/ethereum/layout.py +++ b/core/src/apps/ethereum/layout.py @@ -30,11 +30,13 @@ async def require_confirm_tx( gas_limit: int, network: EthereumNetworkInfo, token: EthereumTokenInfo | None, + chunkify: bool, ) -> None: if to_bytes: to_str = address_from_bytes(to_bytes, network) else: to_str = "new contract?" + chunkify = False total_amount = format_ethereum_amount(value, token, network) maximum_fee = format_ethereum_amount(gas_price * gas_limit, None, network) @@ -46,7 +48,9 @@ async def require_confirm_tx( ("Gas price:", gas_price_str), ) - await confirm_ethereum_tx(to_str, total_amount, maximum_fee, items) + await confirm_ethereum_tx( + to_str, total_amount, maximum_fee, items, chunkify=chunkify + ) async def require_confirm_tx_eip1559( @@ -57,12 +61,14 @@ async def require_confirm_tx_eip1559( gas_limit: int, network: EthereumNetworkInfo, token: EthereumTokenInfo | None, + chunkify: bool, ) -> None: if to_bytes: to_str = address_from_bytes(to_bytes, network) else: to_str = "new contract?" + chunkify = False total_amount = format_ethereum_amount(value, token, network) maximum_fee = format_ethereum_amount(max_gas_fee * gas_limit, None, network) @@ -76,7 +82,9 @@ async def require_confirm_tx_eip1559( ("Priority fee:", max_priority_fee_str), ) - await confirm_ethereum_tx(to_str, total_amount, maximum_fee, items) + await confirm_ethereum_tx( + to_str, total_amount, maximum_fee, items, chunkify=chunkify + ) def require_confirm_unknown_token(address_bytes: bytes) -> Awaitable[None]: diff --git a/core/src/apps/ethereum/sign_tx.py b/core/src/apps/ethereum/sign_tx.py index 7dec659ab..f843e7ef0 100644 --- a/core/src/apps/ethereum/sign_tx.py +++ b/core/src/apps/ethereum/sign_tx.py @@ -59,6 +59,7 @@ async def sign_tx( int.from_bytes(msg.gas_limit, "big"), defs.network, token, + bool(msg.chunkify), ) data = bytearray() diff --git a/core/src/apps/ethereum/sign_tx_eip1559.py b/core/src/apps/ethereum/sign_tx_eip1559.py index 13bbff111..d9954ad12 100644 --- a/core/src/apps/ethereum/sign_tx_eip1559.py +++ b/core/src/apps/ethereum/sign_tx_eip1559.py @@ -71,6 +71,7 @@ async def sign_tx_eip1559( int.from_bytes(gas_limit, "big"), defs.network, token, + bool(msg.chunkify), ) data = bytearray() diff --git a/core/src/trezor/ui/layouts/tr/__init__.py b/core/src/trezor/ui/layouts/tr/__init__.py index e912dc642..c275905e0 100644 --- a/core/src/trezor/ui/layouts/tr/__init__.py +++ b/core/src/trezor/ui/layouts/tr/__init__.py @@ -771,6 +771,7 @@ async def confirm_blob( hold: bool = False, br_code: ButtonRequestType = BR_TYPE_OTHER, ask_pagination: bool = False, + chunkify: bool = False, ) -> None: title = title.upper() description = description or "" @@ -783,6 +784,7 @@ async def confirm_blob( verb=verb, verb_cancel=verb_cancel, hold=hold, + chunkify=chunkify, ) ) @@ -996,6 +998,7 @@ async def confirm_ethereum_tx( items: Iterable[tuple[str, str]], br_type: str = "confirm_ethereum_tx", br_code: ButtonRequestType = ButtonRequestType.SignTx, + chunkify: bool = False, ) -> None: await raise_if_not_confirmed( interact( @@ -1005,6 +1008,7 @@ async def confirm_ethereum_tx( total_amount=total_amount, maximum_fee=maximum_fee, items=items, + chunkify=chunkify, ) ), br_type, diff --git a/core/src/trezor/ui/layouts/tt/__init__.py b/core/src/trezor/ui/layouts/tt/__init__.py index ab0cbf725..0b5ce499a 100644 --- a/core/src/trezor/ui/layouts/tt/__init__.py +++ b/core/src/trezor/ui/layouts/tt/__init__.py @@ -749,6 +749,7 @@ async def confirm_blob( hold: bool = False, br_code: ButtonRequestType = BR_TYPE_OTHER, ask_pagination: bool = False, + chunkify: bool = False, ) -> None: title = title.upper() description = description or "" @@ -761,6 +762,7 @@ async def confirm_blob( hold=hold, verb=verb, verb_cancel=verb_cancel, + chunkify=chunkify, ) ) @@ -935,6 +937,7 @@ async def confirm_ethereum_tx( items: Iterable[tuple[str, str]], br_type: str = "confirm_ethereum_tx", br_code: ButtonRequestType = ButtonRequestType.SignTx, + chunkify: bool = False, ) -> None: total_layout = RustLayout( trezorui2.confirm_total( @@ -961,6 +964,7 @@ async def confirm_ethereum_tx( "RECIPIENT", recipient, verb="CONTINUE", + chunkify=chunkify, ) try: diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 1e39b2b7c..adb899bd8 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -1656,27 +1656,27 @@ "TR_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "daa8f8a145d85ea0065efca1ef5e727c6f7a247b13ab78106007cd65cbf26168", "TR_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "47d2dfe8bf76e81d5004d41d5129078630172c3b68adc51a0543cbb15ccb2d20", "TR_ethereum-test_signtx.py::test_signtx[False-wanchain]": "a0903e52fb3cf84ec909d03452f10655cb8019279d04f37da2ce8fba3ab662d7", -"TR_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "16c842adfb793ccc79bdef3ec1bce71ff82e49d9d87c771c343215755a8c8b5c", -"TR_ethereum-test_signtx.py::test_signtx[True-ETC]": "3187e16f10d547f1b46224abd82b340e8f04310a2b03b9e2554c817139b1a3c0", -"TR_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "0956f8f473f6267cb5a087079d1ce55c4572e37f84deb5d54925d24b27ca3e77", -"TR_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "775ae7d89071cae390fea4069fd3eaf9616fb98cad792de0f31efa7888b0492e", -"TR_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "0956f8f473f6267cb5a087079d1ce55c4572e37f84deb5d54925d24b27ca3e77", -"TR_ethereum-test_signtx.py::test_signtx[True-Palm]": "16c842adfb793ccc79bdef3ec1bce71ff82e49d9d87c771c343215755a8c8b5c", -"TR_ethereum-test_signtx.py::test_signtx[True-Pirl]": "16c842adfb793ccc79bdef3ec1bce71ff82e49d9d87c771c343215755a8c8b5c", -"TR_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "124c91e03b54f5c82c9c40d14c3b94c5e9aceb5b78b5d22c30050c080d661768", -"TR_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "124c91e03b54f5c82c9c40d14c3b94c5e9aceb5b78b5d22c30050c080d661768", -"TR_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "16c842adfb793ccc79bdef3ec1bce71ff82e49d9d87c771c343215755a8c8b5c", -"TR_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "16c842adfb793ccc79bdef3ec1bce71ff82e49d9d87c771c343215755a8c8b5c", -"TR_ethereum-test_signtx.py::test_signtx[True-data_1]": "9ca83f2be46dbac7e1ee6de003064e08505b2eec50bc5b1f68e805f26d9d6ac4", -"TR_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "9ef439e09b189a61ccf1c46e44588565b227410a62bb7f7d79bd43a9aec7f972", -"TR_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "b37283ff47057c5a7b2750066f26729f3933807eb15803296575f20c127fa7fb", -"TR_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "16c842adfb793ccc79bdef3ec1bce71ff82e49d9d87c771c343215755a8c8b5c", -"TR_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "16c842adfb793ccc79bdef3ec1bce71ff82e49d9d87c771c343215755a8c8b5c", -"TR_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "16c842adfb793ccc79bdef3ec1bce71ff82e49d9d87c771c343215755a8c8b5c", +"TR_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "46042105e15556750a3bbbc496f4c17d2a9d3dfd1bee1d059c5f54936a234e29", +"TR_ethereum-test_signtx.py::test_signtx[True-ETC]": "88087e65b791d96e9b47c4af01ac67c0fc04f500306a8530f4ed7ba44567f0a0", +"TR_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "2b4db6c81e44c8b3da09913d97d837f1dedd5d3dc006395da34a43ae5c97b825", +"TR_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "7f2d6e0813ccceca5d45b146cc73462799e5f30032f798f4d62d336abd9f6147", +"TR_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "2b4db6c81e44c8b3da09913d97d837f1dedd5d3dc006395da34a43ae5c97b825", +"TR_ethereum-test_signtx.py::test_signtx[True-Palm]": "46042105e15556750a3bbbc496f4c17d2a9d3dfd1bee1d059c5f54936a234e29", +"TR_ethereum-test_signtx.py::test_signtx[True-Pirl]": "46042105e15556750a3bbbc496f4c17d2a9d3dfd1bee1d059c5f54936a234e29", +"TR_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "438b850e0d0a9ce257738963d61c41894a8a9c56985eea1de046aeb948a1318b", +"TR_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "438b850e0d0a9ce257738963d61c41894a8a9c56985eea1de046aeb948a1318b", +"TR_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "46042105e15556750a3bbbc496f4c17d2a9d3dfd1bee1d059c5f54936a234e29", +"TR_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "46042105e15556750a3bbbc496f4c17d2a9d3dfd1bee1d059c5f54936a234e29", +"TR_ethereum-test_signtx.py::test_signtx[True-data_1]": "7722763533047e5c6983b1de65c3d1d5eeb7e55793e2fb8bcd298357b66e477a", +"TR_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "7616c80236cfdb802199764ae835b588cb3cd5a2cb307a55d02c36222967a29c", +"TR_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "7080c9cb52fd847b4432a4f2269e043b74c1edfb69f187a97202fa092f2e949e", +"TR_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "46042105e15556750a3bbbc496f4c17d2a9d3dfd1bee1d059c5f54936a234e29", +"TR_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "46042105e15556750a3bbbc496f4c17d2a9d3dfd1bee1d059c5f54936a234e29", +"TR_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "46042105e15556750a3bbbc496f4c17d2a9d3dfd1bee1d059c5f54936a234e29", "TR_ethereum-test_signtx.py::test_signtx[True-newcontract]": "5e43d085de9ceca68ea77da4981bb2930fade59e2c26287628291ff3a6b3e225", -"TR_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "daa8f8a145d85ea0065efca1ef5e727c6f7a247b13ab78106007cd65cbf26168", -"TR_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "47d2dfe8bf76e81d5004d41d5129078630172c3b68adc51a0543cbb15ccb2d20", -"TR_ethereum-test_signtx.py::test_signtx[True-wanchain]": "a0903e52fb3cf84ec909d03452f10655cb8019279d04f37da2ce8fba3ab662d7", +"TR_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "9f6f4631cfe916b98a0419bdce3f34714ab1c4a0c19cb16e3176d5116110761d", +"TR_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "825a1549502862888fdb666b99af27c00117c5baeadc48566e16df650398c66d", +"TR_ethereum-test_signtx.py::test_signtx[True-wanchain]": "ad16b748d6601ab5778782fd64fcff4a5000e0497cb96bf28a9d0dcfd47568b3", "TR_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "c1c0ed86a9947cc06b66929a189a78cd40c3bd6c15b72c6ce9b5aca91e4f853b", "TR_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "fe89e174ef1dcb7bd5b7457c6d0a5abfc125d7359678d6cf3a2d6e3cf200422b", "TR_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "2b96578a51534dd018f887b1de4531ef96cc8dcee0cfe240ca84283f9aa810a9", @@ -1687,13 +1687,13 @@ "TR_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "14b43f7e0b3c0eaab1c2946ab44247cecc190561177b866e110a335ad66f8545", "TR_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "29e3e74029f69413943f67ccfb1fef1278385638d114b4179e64d917467c55d8", "TR_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "dd22a6444092e36d8f1c66f96c947d0219421daac029991dac288b5ba13381d1", -"TR_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "dd22a6444092e36d8f1c66f96c947d0219421daac029991dac288b5ba13381d1", -"TR_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "e1b8cf156d89250efbe3ccfffd7c5e02a6c8878f2b4b1e66e727906de4daeb29", -"TR_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "06a0e952406f0401eb5a4e434acfcd032999494e5e57c81a3a8f1104dc5afd00", -"TR_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "1ac10c976195d3e631101bf76478a25041696585a34045ae42bd0a2e1d80143c", -"TR_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "14b43f7e0b3c0eaab1c2946ab44247cecc190561177b866e110a335ad66f8545", -"TR_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "29e3e74029f69413943f67ccfb1fef1278385638d114b4179e64d917467c55d8", -"TR_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "dd22a6444092e36d8f1c66f96c947d0219421daac029991dac288b5ba13381d1", +"TR_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "7e2b1cb1f840d8f7a8d081f774aee7d67ada6cf586bfb9b6a61a82944f4331b2", +"TR_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "404f5e74d4b2dffbeaef0b8220038e82c62a665fc92566422059c282b209e1ad", +"TR_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "8718e49401f57f5bcb12a3057b14c233fdffdc139568fdba006604626998dd5c", +"TR_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "bf672468f063973b46c1cd206df50a63b37cc85fa0cd70d2914b6b48719503af", +"TR_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "4e609212c234b7ec1a5837d51e4c2c827f651fe30ba3cd2bc314e712a4e4a737", +"TR_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "2b43ee4d593688570198668fdf2e2f3ccb4d0fc00fad89ef2f78def6d574e411", +"TR_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "7e2b1cb1f840d8f7a8d081f774aee7d67ada6cf586bfb9b6a61a82944f4331b2", "TR_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "b6034c12854236ba96f002859814ee3098f5750c33732a81c0674e4e44f5866c", "TR_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "b6034c12854236ba96f002859814ee3098f5750c33732a81c0674e4e44f5866c", "TR_ethereum-test_signtx.py::test_signtx_fee_info": "18af368ec44c0069b1be6e64f59fb1a2ede672efb24b4dc4f8ae73f4a18525f8", @@ -2043,7 +2043,7 @@ "TT_test_pin.py::test_pin_cancel": "05f5f819be61fec8c7c4341fd23c1bccf78cff93f05d573dd4f528bb0f1edbf5", "TT_test_pin.py::test_pin_change": "3f2aaff0a0ddfa44e623ba68cb64c7941354707972532ff8db110df539afed71", "TT_test_pin.py::test_pin_delete_hold": "110a0144f65b65956e5a06f71888d4696fb35fcd4ea5f9f8b9e2bfdecac06116", -"TT_test_pin.py::test_pin_empty_cannot_send": "197c595eab9757f72ed59642b7bea57728397ffe072a762a126d20833d0b9278", +"TT_test_pin.py::test_pin_empty_cannot_send": "33637ee3964af923f76ce4cb0731f8203927ff0658286e1218fb4cbaa71a1b22", "TT_test_pin.py::test_pin_incorrect": "739e082079cd057f4a72e3d4f6a15bf447d099273e3a5c284f85fb688e596096", "TT_test_pin.py::test_pin_long": "795a3ea7d9661924c334ae32c3da99d4cc27909b905808a422a240d221af0775", "TT_test_pin.py::test_pin_long_delete": "8fc0b6b0b80505d2e701c52c23498cf23584b7f9557dde7e7b3eab2eb4b7c447", @@ -2979,27 +2979,27 @@ "TT_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "c81aab95508fd8ecdba3fe41778e4e7be17cda80b3840151839c9dc9329cb924", "TT_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "2f22d59bffb56e1cf2ba2353a6cd6c96cf5d04c95eec1b7d25bf223077008772", "TT_ethereum-test_signtx.py::test_signtx[False-wanchain]": "3ad938f73145a9eae5303218fe98f832e98e4d94e525d6f3bfdbdcb698549657", -"TT_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"TT_ethereum-test_signtx.py::test_signtx[True-ETC]": "70f61cbd4bbed46fadcdb3405b47ea23129026bfd99eb209ed8c5c2c3a03dc12", -"TT_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "089129c3cf550128d8f2c9f54e50a0705f6094a1944a17a9575dca950cd57a22", -"TT_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "88fa5319d82eda664c0e33f665aef10d782d6df42cff31bda8e170239013170a", -"TT_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "089129c3cf550128d8f2c9f54e50a0705f6094a1944a17a9575dca950cd57a22", -"TT_ethereum-test_signtx.py::test_signtx[True-Palm]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"TT_ethereum-test_signtx.py::test_signtx[True-Pirl]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"TT_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "b2ca4fea79015cdb99b128ee137b6a2e6a7f6baac44c4d26e1eeb0a9b08f1315", -"TT_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "b2ca4fea79015cdb99b128ee137b6a2e6a7f6baac44c4d26e1eeb0a9b08f1315", -"TT_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"TT_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"TT_ethereum-test_signtx.py::test_signtx[True-data_1]": "c2977250dbd06ad14031de715da17175f5c9db6ddbc3abf3f41b641c68f2e954", -"TT_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "fa47e3639c860f5865382e2b4ba55d833989b6a0f41ed81fa1066a57105f8c59", -"TT_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "3ee1b6b209c139b60a71ee0eaa3fdfe342290dc0fd850396a85e6a018cd95403", -"TT_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"TT_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"TT_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", +"TT_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", +"TT_ethereum-test_signtx.py::test_signtx[True-ETC]": "0ef31079e8df1fa01e872a2fac2daa28b1df648bad515a69d9c6014951119308", +"TT_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "d672cf971c908bb336356df29037283651ab3ce88e998e25435fd84aeac6fefe", +"TT_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "1399e2245a8348e03f95dd1a439df497c13a74fbb7e60b31b909c243c1bdbb4e", +"TT_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "d672cf971c908bb336356df29037283651ab3ce88e998e25435fd84aeac6fefe", +"TT_ethereum-test_signtx.py::test_signtx[True-Palm]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", +"TT_ethereum-test_signtx.py::test_signtx[True-Pirl]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", +"TT_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "f5d7bab7cb8b1cab1e1856c91a0af105fe034383c6699cc3395c3efc6fc9dc9f", +"TT_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "f5d7bab7cb8b1cab1e1856c91a0af105fe034383c6699cc3395c3efc6fc9dc9f", +"TT_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", +"TT_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", +"TT_ethereum-test_signtx.py::test_signtx[True-data_1]": "1f28dfb98015aca1acdee20dff8a1100892ca40b3a7ba5df80c21629c7cbdfdf", +"TT_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "f9cf7d0ac69d056e77d5b8eea556d25357b8bbf18576fbe537cf7c480031e217", +"TT_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "e31b5fed748116b585b5e86a6f9e842615516759cae407ebe561956d70afad35", +"TT_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", +"TT_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", +"TT_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", "TT_ethereum-test_signtx.py::test_signtx[True-newcontract]": "c68a2f214969822dbc0e96c938263565c38b0609743ff9dbeec33ee170058f72", -"TT_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "c81aab95508fd8ecdba3fe41778e4e7be17cda80b3840151839c9dc9329cb924", -"TT_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "2f22d59bffb56e1cf2ba2353a6cd6c96cf5d04c95eec1b7d25bf223077008772", -"TT_ethereum-test_signtx.py::test_signtx[True-wanchain]": "3ad938f73145a9eae5303218fe98f832e98e4d94e525d6f3bfdbdcb698549657", +"TT_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "ac146a14d60488c3f201e11398fb6ad810c088614a9ce1d529319812e6d4d86e", +"TT_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "2cc8a86f5940e557e838c23f85c899fa5e21663ffb9ab2e5420a30c75b850b84", +"TT_ethereum-test_signtx.py::test_signtx[True-wanchain]": "76b402adf767f9f34bc237dc37ccfdc48ca1c22fffb117ae8732636965a68d4e", "TT_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "ed8d6281f2d3565529281cad6b75da67dba088f1e410e1702d13ef112115d631", "TT_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "204d5cd1960d0da1770d6d5478ae130f765a07cd42d4051410e92166d94e2fbd", "TT_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "0310349fb18c476ec82e058667d8e6bf69adc14696a3755d878e7bae3bf108fb", @@ -3010,13 +3010,13 @@ "TT_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "997848a3ecc4f0c5ed8004867a8d5deae48e832c12d4e90bc192f28394a704fb", "TT_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "6c238bf8ecd05787dac6139614f04b553982d7f8a5734f9cd7b1ccae9577e4c8", "TT_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "c81aab95508fd8ecdba3fe41778e4e7be17cda80b3840151839c9dc9329cb924", -"TT_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "c81aab95508fd8ecdba3fe41778e4e7be17cda80b3840151839c9dc9329cb924", -"TT_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "c2977250dbd06ad14031de715da17175f5c9db6ddbc3abf3f41b641c68f2e954", -"TT_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "97fac4b6db7a446f53c3f1fa27ba925c1651a8831e76db7d220efbf414482139", -"TT_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "3ee1b6b209c139b60a71ee0eaa3fdfe342290dc0fd850396a85e6a018cd95403", -"TT_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "997848a3ecc4f0c5ed8004867a8d5deae48e832c12d4e90bc192f28394a704fb", -"TT_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "6c238bf8ecd05787dac6139614f04b553982d7f8a5734f9cd7b1ccae9577e4c8", -"TT_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "c81aab95508fd8ecdba3fe41778e4e7be17cda80b3840151839c9dc9329cb924", +"TT_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "ac146a14d60488c3f201e11398fb6ad810c088614a9ce1d529319812e6d4d86e", +"TT_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "1f28dfb98015aca1acdee20dff8a1100892ca40b3a7ba5df80c21629c7cbdfdf", +"TT_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "7838bcd3a0bbeeb327aa639e93ad0a938ecd3db27ae3086b5b8d7d1a2cf6970e", +"TT_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "e31b5fed748116b585b5e86a6f9e842615516759cae407ebe561956d70afad35", +"TT_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "2bd40660815fee49cfb00de9b8e64040cca5b61398b9c38a136225ac50e6830c", +"TT_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "d1a25de92c81d2dae67fb897356e8eb13b6c8fbb5d71fd8045959e5e848689a3", +"TT_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "ac146a14d60488c3f201e11398fb6ad810c088614a9ce1d529319812e6d4d86e", "TT_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "243010310ac5a4c70c627507ea8501cc61c2e20728eb06bc796f093132bebb4f", "TT_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "243010310ac5a4c70c627507ea8501cc61c2e20728eb06bc796f093132bebb4f", "TT_ethereum-test_signtx.py::test_signtx_fee_info": "c0e5bcb26ef58d6bd7659c58d1cc69f18f074997262d143e73324ded905c323f",