fix(core): revert some UI changes for TT (PIN, wipecode, backup homescreen)

pull/3017/head
grdddj 1 year ago committed by Jiří Musil
parent 393bc48b6b
commit 019a3ced7d

@ -839,7 +839,8 @@ extern "C" fn new_confirm_modify_fee(n_args: usize, args: *const Obj, kwargs: *m
let sign: i32 = kwargs.get(Qstr::MP_QSTR_sign)?.try_into()?;
let user_fee_change: StrBuffer = kwargs.get(Qstr::MP_QSTR_user_fee_change)?.try_into()?;
let total_fee_new: StrBuffer = kwargs.get(Qstr::MP_QSTR_total_fee_new)?.try_into()?;
let fee_rate_amount: Option<StrBuffer> = kwargs
// TODO: use this, most probably in "i" icon
let _fee_rate_amount: Option<StrBuffer> = kwargs
.get(Qstr::MP_QSTR_fee_rate_amount)?
.try_into_option()?;
@ -849,22 +850,12 @@ extern "C" fn new_confirm_modify_fee(n_args: usize, args: *const Obj, kwargs: *m
_ => ("Your fee did not change.", StrBuffer::empty()),
};
let mut paragraphs_vec = ParagraphVecShort::new();
paragraphs_vec
.add(Paragraph::new(&theme::TEXT_NORMAL, description.into()))
.add(Paragraph::new(&theme::TEXT_MONO, change))
.add(Paragraph::new(
&theme::TEXT_NORMAL,
"Transaction fee:".into(),
))
.add(Paragraph::new(&theme::TEXT_MONO, total_fee_new));
if let Some(fee_rate_amount) = fee_rate_amount {
paragraphs_vec
.add(Paragraph::new(&theme::TEXT_NORMAL, "Fee rate:".into()))
.add(Paragraph::new(&theme::TEXT_MONO, fee_rate_amount));
}
let paragraphs = paragraphs_vec.into_paragraphs();
let paragraphs = Paragraphs::new([
Paragraph::new(&theme::TEXT_NORMAL, description.into()),
Paragraph::new(&theme::TEXT_MONO, change),
Paragraph::new(&theme::TEXT_NORMAL, "\nTransaction fee:".into()),
Paragraph::new(&theme::TEXT_MONO, total_fee_new),
]);
let obj = LayoutObj::new(Frame::left_aligned(
theme::label_title(),

@ -17,8 +17,6 @@ async def _request_sd_salt(
Is model-specific, because some models (like TR/T2B1) do not even
have SD card support (and we do not want to include SD-card connected code).
"""
from trezor import utils
if not utils.USE_SD_CARD:
return None
else:
@ -56,11 +54,10 @@ async def request_pin(
async def request_pin_confirm(ctx: Context, *args: Any, **kwargs: Any) -> str:
from trezor.ui.layouts import confirm_reenter_pin, pin_mismatch_popup
from trezor.ui.layouts import pin_mismatch_popup
while True:
pin1 = await request_pin(ctx, "Enter new PIN", *args, **kwargs)
await confirm_reenter_pin(ctx)
pin2 = await request_pin(ctx, "Re-enter new PIN", *args, **kwargs)
if pin1 == pin2:
return pin1

@ -101,7 +101,6 @@ def _require_confirm_action(
async def _request_wipe_code_confirm(ctx: Context, pin: str) -> str:
from apps.common.request_pin import request_pin
from trezor.ui.layouts import (
confirm_reenter_pin,
pin_mismatch_popup,
wipe_code_same_as_pin_popup,
)
@ -111,7 +110,6 @@ async def _request_wipe_code_confirm(ctx: Context, pin: str) -> str:
if code1 == pin:
await wipe_code_same_as_pin_popup(ctx)
continue
await confirm_reenter_pin(ctx, br_type="set_wipe_code", is_wipe_code=True)
code2 = await request_pin(ctx, "Re-enter wipe code")
if code1 == code2:
return code1

@ -65,11 +65,7 @@ async def _continue_recovery_process(ctx: GenericContext) -> Success:
if is_first_step:
# If we are starting recovery, ask for word count first...
# _request_word_count
await layout.homescreen_dialog(
ctx,
"Continue",
"First select the number of words in your recovery seed",
)
await layout.homescreen_dialog(ctx, "Select", "Select number of words")
# ask for the number of words
word_count = await layout.request_word_count(ctx, dry_run)
# ...and only then show the starting screen with word count.
@ -196,11 +192,11 @@ async def _request_share_first_screen(ctx: GenericContext, word_count: int) -> N
await _request_share_next_screen(ctx)
else:
await layout.homescreen_dialog(
ctx, "Continue", "Enter any share", f"({word_count} words)"
ctx, "Enter share", "Enter any share", f"({word_count} words)"
)
else: # BIP-39
await layout.homescreen_dialog(
ctx, "Continue", "Now enter your recovery seed", f"({word_count} words)"
ctx, "Enter seed", "Enter recovery seed", f"({word_count} words)"
)
@ -216,13 +212,13 @@ async def _request_share_next_screen(ctx: GenericContext) -> None:
if group_count > 1:
await layout.homescreen_dialog(
ctx,
"Continue",
"Enter",
"More shares needed",
info_func=_show_remaining_groups_and_shares,
)
else:
text = strings.format_plural("{count} more {plural}", remaining[0], "share")
await layout.homescreen_dialog(ctx, "Continue", text, "needed to enter")
await layout.homescreen_dialog(ctx, "Enter share", text, "needed to enter")
async def _show_remaining_groups_and_shares(ctx: GenericContext) -> None:

@ -91,7 +91,12 @@ async def show_dry_run_result(
from trezor.ui.layouts import show_success
if result:
text = "You have finished verifying your recovery seed"
if is_slip39:
text = "The entered recovery shares are valid and match what is currently in the device."
else:
text = (
"The entered recovery seed is valid and matches the one in the device."
)
await show_success(ctx, "success_dry_recovery", text, button="Continue")
else:
if is_slip39:

@ -1181,23 +1181,6 @@ async def request_pin_on_device(
return result
async def confirm_reenter_pin(
ctx: GenericContext,
br_type: str = "set_pin",
br_code: ButtonRequestType = BR_TYPE_OTHER,
is_wipe_code: bool = False,
) -> None:
title = "CHECK WIPE CODE" if is_wipe_code else "CHECK PIN"
return await confirm_action(
ctx,
br_type,
title,
action="Please re-enter to confirm.",
verb="BEGIN",
br_code=br_code,
)
async def pin_mismatch_popup(
ctx: GenericContext,
is_wipe_code: bool = False,
@ -1226,7 +1209,7 @@ async def confirm_set_new_pin(
br_type: str,
title: str,
description: str,
information: list[str],
information: list[str], # unused on TT
br_code: ButtonRequestType = BR_TYPE_OTHER,
) -> None:
await confirm_action(
@ -1237,16 +1220,3 @@ async def confirm_set_new_pin(
verb="ENABLE",
br_code=br_code,
)
if "wipe_code" in br_type:
title = "WIPE CODE INFO"
else:
title = "PIN INFORMATION"
return await confirm_action(
ctx,
br_type,
title=title,
description="\n\n".join(information),
br_code=br_code,
)

@ -26,7 +26,7 @@ def confirm_recovery(debug: "DebugLink") -> None:
def select_number_of_words(debug: "DebugLink", num_of_words: int = 20) -> None:
# select number of words
if not debug.legacy_ui and not debug.legacy_debug:
assert "select the number of words" in debug.read_layout().text_content()
assert "number of words" in debug.read_layout().text_content()
layout = debug.click(buttons.OK, wait=True)
if debug.legacy_ui:
assert layout.json_str == "WordSelector"
@ -49,7 +49,7 @@ def select_number_of_words(debug: "DebugLink", num_of_words: int = 20) -> None:
if num_of_words in (20, 33):
assert "Enter any share" in layout.text_content()
else:
assert "enter your recovery seed" in layout.text_content()
assert "Enter recovery seed" in layout.text_content()
def enter_share(debug: "DebugLink", share: str) -> "LayoutContent":
@ -82,7 +82,7 @@ def enter_shares(debug: "DebugLink", shares: list[str]) -> None:
def enter_seed(debug: "DebugLink", seed_words: list[str]) -> None:
assert "enter" in debug.read_layout().text_content()
assert "Enter" in debug.read_layout().text_content()
layout = debug.click(buttons.OK, wait=True)
assert layout.main_component() == "MnemonicKeyboard"

@ -226,7 +226,7 @@ def test_dryrun_locks_at_number_of_words(device_handler: "BackgroundDeviceHandle
device_handler.run(device.recover, dry_run=True) # type: ignore
layout = unlock_dry_run(debug)
assert "select the number of words " in layout.text_content()
assert "number of words " in layout.text_content()
# wait for autolock to trigger
time.sleep(10.1)
@ -244,7 +244,7 @@ def test_dryrun_locks_at_number_of_words(device_handler: "BackgroundDeviceHandle
assert layout is not None
# we are back at homescreen
assert "select the number of words" in layout.text_content()
assert "number of words" in layout.text_content()
@pytest.mark.setup_client(pin=PIN4)

@ -84,8 +84,6 @@ def prepare(
# Set new PIN
device_handler.run(device.change_pin) # type: ignore
assert "enable PIN protection" in debug.wait_layout().text_content()
layout = go_next(debug, wait=True)
assert "access this device" in layout.text_content()
go_next(debug)
elif situation == Situation.PIN_CHANGE:
# Change PIN
@ -100,8 +98,6 @@ def prepare(
if old_pin:
_input_see_confirm(debug, old_pin)
assert "enable wipe code" in debug.wait_layout().text_content()
layout = go_next(debug, wait=True)
assert "erase all data" in layout.text_content()
go_next(debug)
if old_pin:
debug.wait_layout()
@ -170,8 +166,6 @@ def _input_see_confirm(debug: "DebugLink", pin: str) -> None:
def _enter_two_times(debug: "DebugLink", pin1: str, pin2: str) -> None:
_input_see_confirm(debug, pin1)
# Please re-enter
debug.click(buttons.OK, wait=True)
_input_see_confirm(debug, pin2)

@ -166,11 +166,6 @@ def test_failed_pin(client: Client):
client.debug.input("654")
ret = client.call_raw(messages.ButtonAck())
# Re-enter PIN
assert isinstance(ret, messages.ButtonRequest)
client.debug.press_yes()
ret = client.call_raw(messages.ButtonAck())
# Enter PIN for second time
assert isinstance(ret, messages.ButtonRequest)
client.debug.input("456")

@ -39,7 +39,7 @@ def _check_wipe_code(client: Client, pin: str, wipe_code: str):
with client, pytest.raises(TrezorFailure):
client.use_pin_sequence([pin, wipe_code, wipe_code])
client.set_expected_responses(
[messages.ButtonRequest()] * 6
[messages.ButtonRequest()] * 5
+ [messages.Failure(code=messages.FailureType.PinInvalid)]
)
device.change_pin(client)
@ -63,7 +63,7 @@ def test_set_remove_wipe_code(client: Client):
with client:
client.set_expected_responses(
[messages.ButtonRequest()] * 7 + [messages.Success, messages.Features]
[messages.ButtonRequest()] * 5 + [messages.Success, messages.Features]
)
client.use_pin_sequence([PIN4, WIPE_CODE_MAX, WIPE_CODE_MAX])
device.change_wipe_code(client)
@ -75,7 +75,7 @@ def test_set_remove_wipe_code(client: Client):
# Test change wipe code.
with client:
client.set_expected_responses(
[messages.ButtonRequest()] * 6 + [messages.Success, messages.Features]
[messages.ButtonRequest()] * 5 + [messages.Success, messages.Features]
)
client.use_pin_sequence([PIN4, WIPE_CODE6, WIPE_CODE6])
device.change_wipe_code(client)
@ -114,7 +114,7 @@ def test_set_wipe_code_to_pin(client: Client):
with client:
client.set_expected_responses(
[messages.ButtonRequest()] * 9 + [messages.Success, messages.Features]
[messages.ButtonRequest()] * 7 + [messages.Success, messages.Features]
)
client.use_pin_sequence([PIN4, PIN4, WIPE_CODE4, WIPE_CODE4])
device.change_wipe_code(client)
@ -128,7 +128,7 @@ def test_set_pin_to_wipe_code(client: Client):
# Set wipe code.
with client:
client.set_expected_responses(
[messages.ButtonRequest()] * 6 + [messages.Success, messages.Features]
[messages.ButtonRequest()] * 4 + [messages.Success, messages.Features]
)
client.use_pin_sequence([WIPE_CODE4, WIPE_CODE4])
device.change_wipe_code(client)
@ -136,7 +136,7 @@ def test_set_pin_to_wipe_code(client: Client):
# Try to set the PIN to the current wipe code value.
with client, pytest.raises(TrezorFailure):
client.set_expected_responses(
[messages.ButtonRequest()] * 6
[messages.ButtonRequest()] * 4
+ [messages.Failure(code=messages.FailureType.PinInvalid)]
)
client.use_pin_sequence([WIPE_CODE4, WIPE_CODE4])

@ -64,7 +64,7 @@ def test_set_pin(client: Client):
with client:
client.use_pin_sequence([PIN_MAX, PIN_MAX])
client.set_expected_responses(
[messages.ButtonRequest] * 6 + [messages.Success, messages.Features]
[messages.ButtonRequest] * 4 + [messages.Success, messages.Features]
)
device.change_pin(client)
@ -84,7 +84,7 @@ def test_change_pin(client: Client):
with client:
client.use_pin_sequence([PIN4, PIN_MAX, PIN_MAX])
client.set_expected_responses(
[messages.ButtonRequest] * 6 + [messages.Success, messages.Features]
[messages.ButtonRequest] * 5 + [messages.Success, messages.Features]
)
device.change_pin(client)

@ -139,7 +139,6 @@ def test_change_pin_t2(client: Client):
messages.ButtonRequest,
_pin_request(client),
_pin_request(client),
messages.ButtonRequest,
_pin_request(client),
messages.ButtonRequest,
messages.Success,

@ -86,10 +86,6 @@ def test_sd_protect_unlock(client: Client):
assert layout().main_component() == "PinKeyboard"
client.debug.input("1234")
yield # re-enter to confirm
assert "re-enter to confirm" in layout().text_content()
client.debug.press_yes()
yield # enter new PIN again
assert layout().main_component() == "PinKeyboard"
client.debug.input("1234")

@ -85,15 +85,11 @@ class InputFlowSetupDevicePINWIpeCode(InputFlowBase):
def input_flow_tt(self) -> GeneratorType:
yield # do you want to set/change the wipe code?
self.debug.press_yes()
yield from swipe_if_necessary(self.debug) # wipe code info
self.debug.press_yes()
yield # enter current pin
self.debug.input(self.pin)
yield # enter new wipe code
self.debug.input(self.wipe_code)
yield # please reenter
self.debug.press_yes()
yield # enter new wipe code again
self.debug.input(self.wipe_code)
yield # success
@ -114,14 +110,10 @@ class InputFlowNewCodeMismatch(InputFlowBase):
def input_flow_tt(self) -> GeneratorType:
yield # do you want to set/change the pin/wipe code?
self.debug.press_yes()
yield from swipe_if_necessary(self.debug) # pin/wipe code info
self.debug.press_yes()
def input_two_different_pins():
yield # enter new PIN/wipe_code
self.debug.input(self.first_code)
yield # Please re-enter PIN to confirm
self.debug.press_yes()
yield # enter new PIN/wipe_code again (but different)
self.debug.input(self.second_code)
@ -157,8 +149,6 @@ class InputFlowCodeChangeFail(InputFlowBase):
yield # enter new pin
self.debug.input(self.new_pin_1)
yield # Please re-enter PIN to confirm
self.debug.press_yes()
yield # enter new pin again (but different)
self.debug.input(self.new_pin_2)
@ -644,9 +634,6 @@ class InputFlowBip39ResetPIN(InputFlowBase):
yield # Enter new PIN
self.debug.input("654")
yield # Re-enter PIN
self.debug.press_yes()
yield # Confirm PIN
self.debug.input("654")
@ -873,7 +860,7 @@ def enter_recovery_seed_dry_run(debug: DebugLink, mnemonic: list[str]) -> Genera
debug.click(buttons.OK)
yield
assert "select the number of words" in debug.wait_layout().text_content()
assert "number of words" in debug.wait_layout().text_content()
debug.click(buttons.OK)
yield
@ -885,7 +872,7 @@ def enter_recovery_seed_dry_run(debug: DebugLink, mnemonic: list[str]) -> Genera
debug.click(buttons.grid34(index % 3, index // 3))
yield
assert "enter your recovery seed" in debug.wait_layout().text_content()
assert "Enter recovery seed" in debug.wait_layout().text_content()
debug.click(buttons.OK)
yield
@ -921,7 +908,7 @@ class InputFlowBip39RecoveryDryRunInvalid(InputFlowBase):
self.debug.click(buttons.OK)
yield # retry screen
assert "select the number of words" in self.layout().text_content()
assert "number of words" in self.layout().text_content()
self.debug.click(buttons.CANCEL)
yield
@ -942,16 +929,12 @@ def bip39_recovery_possible_pin(
assert debug.wait_layout().main_component() == "PinKeyboard"
debug.input(pin)
yield
assert "re-enter to confirm" in debug.wait_layout().text_content()
debug.press_yes()
yield
assert debug.wait_layout().main_component() == "PinKeyboard"
debug.input(pin)
yield
assert "select the number of words" in debug.wait_layout().text_content()
assert "number of words" in debug.wait_layout().text_content()
debug.press_yes()
yield
@ -959,7 +942,7 @@ def bip39_recovery_possible_pin(
debug.input(str(len(mnemonic)))
yield
assert "enter your recovery seed" in debug.wait_layout().text_content()
assert "Enter recovery seed" in debug.wait_layout().text_content()
debug.press_yes()
yield
@ -1090,8 +1073,6 @@ def slip39_recovery_possible_pin(
if pin is not None:
yield # Enter PIN
debug.input(pin)
yield # Please re-enter PIN to confirm
debug.press_yes()
yield # Enter PIN again
debug.input(pin)

@ -45,7 +45,7 @@ def test_abort(core_emulator: Emulator):
assert debug.wait_layout().title() == "WALLET RECOVERY"
layout = debug.click(buttons.OK, wait=True)
assert "select the number of words" in layout.text_content()
assert "number of words" in layout.text_content()
debug = _restart(device_handler, core_emulator)
features = device_handler.features()
@ -53,7 +53,7 @@ def test_abort(core_emulator: Emulator):
assert features.recovery_mode is True
# no waiting for layout because layout doesn't change
assert "select the number of words" in debug.read_layout().text_content()
assert "number of words" in debug.read_layout().text_content()
layout = debug.click(buttons.CANCEL, wait=True)
assert layout.title() == "ABORT RECOVERY"

@ -702,9 +702,9 @@
"TT_test_autolock.py::test_autolock_interrupts_passphrase": "d1f797544d62708739c340dd4aa4ee28cfc65e9b643f595a55706de5917ee82f",
"TT_test_autolock.py::test_autolock_interrupts_signing": "ae4d3cc00fd5482b4499eff1c73aec75f4153e34950db910d4f787cc5f9b4208",
"TT_test_autolock.py::test_autolock_passphrase_keyboard": "d1be209e13144850fc8b2cca8fded027cd53d2a9990af3c5be1db489995dc821",
"TT_test_autolock.py::test_dryrun_enter_word_slowly": "d3f2dc99db5a3fea22c075a74f15e8cf6a1ca655be29042eb845f033851edf78",
"TT_test_autolock.py::test_dryrun_locks_at_number_of_words": "b9a320b598b73d52a4d9e117e3c7c962ccaccb8a386f52a836add95be0f897b6",
"TT_test_autolock.py::test_dryrun_locks_at_word_entry": "092e18ed76d31d6b608a6a4b8ca2d742d070903c2c0090ef3760d2b9ae70f238",
"TT_test_autolock.py::test_dryrun_enter_word_slowly": "9835b603e1624e148347e618eb38d4bdfa728681b60b11a439b9a5dea0ad750c",
"TT_test_autolock.py::test_dryrun_locks_at_number_of_words": "291602248c995df043e528c87beefca2fcd5c24dd8a74e32e8c3e724e93520c2",
"TT_test_autolock.py::test_dryrun_locks_at_word_entry": "1eaa319d362b383d8140703ab3b9dfc64c54ad26351124f3118120c70b776d31",
"TT_test_lock.py::test_hold_to_lock": "d4ce48aa165c4b38b94ffe36715cf79d2af828657e414fadbe2447acf29da120",
"TT_test_passphrase_tt.py::test_cycle_through_last_character": "2ab71b7dbf4cad81d68042bc92ab7b39a4b70504c373543d34942872b01f5ccc",
"TT_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "1e8778a6aece69bdaa3fc5678e74bd282f7633f95c4f34e288472086950233c7",
@ -721,19 +721,19 @@
"TT_test_passphrase_tt.py::test_passphrase_loop_all_characters": "d29136fd1fcb4bd5575b9225e30b455e7a0798bb0887dcdf17a689dfe485fdb3",
"TT_test_passphrase_tt.py::test_passphrase_prompt_disappears": "4b16a81abd2c3eef2263e97952c535b40b1b64e4b175285a73135b0c675a4d9e",
"TT_test_pin.py::test_pin_cancel": "8f40ce02fb129962837393ffcd6ad19e07a3e81870b4e50205f2b64f9c8b1cf1",
"TT_test_pin.py::test_pin_change": "173c9d4eb264c5ea676a39891639ed23f3f3957d1e6e6259dcd52054bf305592",
"TT_test_pin.py::test_pin_change": "dec0c305bfd16511438d0ac5a8bbc2edfd7fd4b8deeeacb6f9129d1d45054f39",
"TT_test_pin.py::test_pin_incorrect": "8daa7625b896f4faa3c9dd4f8a254af1cc6b66fc71edd2a0d968db1ee424f5d9",
"TT_test_pin.py::test_pin_long": "34692638906727bd3ebf89468aa8d4658866f1aac7775e8cae28bb337d588b3d",
"TT_test_pin.py::test_pin_long_delete": "eea0b6485700cce2bc6c13e6d1971e4add11355aa155edf2fcb9bb699dfb0654",
"TT_test_pin.py::test_pin_longer_than_max": "6a7e55fd6d3ff117ee5deb40f1c07cf8d3248931a29e4de6498d813744af2981",
"TT_test_pin.py::test_pin_same_as_wipe_code": "f309e8ffbb4e55a934038b73c8c4f1d250f66b6136d806ddb82fda88aa62648b",
"TT_test_pin.py::test_pin_setup": "470ba3c1e991f14b99ef0256774dcb25ec8efa2e24951f923e9439e1f5d9e71d",
"TT_test_pin.py::test_pin_setup_mismatch": "2f4de6411cddb4cc29dad201de1b388267aa0a579652c87ada7b22661debe343",
"TT_test_pin.py::test_pin_same_as_wipe_code": "f7e9e7972d9f637b4720faa8b5c14c69c652435394973f0bf6fd72362bea184a",
"TT_test_pin.py::test_pin_setup": "20ed44b33f73842332341fec605e9c98a4f52032193ca2b0185a5243353d5d5b",
"TT_test_pin.py::test_pin_setup_mismatch": "216df6811f6742ee387a7fd2bcbbeed9341425d2d3f67454ad539363ff75ba90",
"TT_test_pin.py::test_pin_short": "b5377990e4a1f324133601e3ca4726cde7af50b3e2c3f53738022ed9108a6a79",
"TT_test_pin.py::test_wipe_code_same_as_pin": "d6257f611689fa0e5616bd47861dcc4dad6c48d2d1f642ce923a66cae3dbb236",
"TT_test_pin.py::test_wipe_code_setup": "677797c95ed903fbf03f6e872610855aec253ac5a45bd211dbda96e02464df60",
"TT_test_recovery.py::test_recovery_bip39": "614e9204c01c379b4b88ba618addd50f22cf9f75492f2363cdca14acee1c883f",
"TT_test_recovery.py::test_recovery_slip39_basic": "73e2c4e4c4cb75206a5b739e4196035a4a3eef83a434a880ac27a8c7b5a3a0e2",
"TT_test_pin.py::test_wipe_code_same_as_pin": "cb8aa7d781b689452e863a3e704c1df06d217cbf8761b698cd912e0417da1513",
"TT_test_pin.py::test_wipe_code_setup": "353855511c20bcf4f8ec01d141c11a108472dc64e3dac06c5f567b42bddbaba9",
"TT_test_recovery.py::test_recovery_bip39": "85f92b26902f1ce64913d6ca9874a508fcb21fff8411145c438de69077a4989a",
"TT_test_recovery.py::test_recovery_slip39_basic": "53fa3abfe1ce7b11ec189fa359f463763b53802ae5925e84a6593271fe4e8f9a",
"TT_test_reset_bip39.py::test_reset_bip39": "01547ca97308b6b3b54fab9c8f18d4d43a8ca0637a95f4de6e0690808342fe4c",
"TT_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "4ddcb8eeb9062e739926998abb0bbed918b63cf1065c61199194f99034d54968",
"TT_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "39ef6d9d132f5489a790521cdbcefcd98abb1c3e85f9e847b307550c0f26d509",
@ -1107,20 +1107,20 @@
"TT_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "f97a9ce841c7ceddbe8e1fd4c39a68c40b4606058eab4cc2c02c1d2143c60a38",
"TT_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "f97a9ce841c7ceddbe8e1fd4c39a68c40b4606058eab4cc2c02c1d2143c60a38",
"TT_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "11f992c1ee9aebb9c672be1ff0b6606368b84ecb340cfdde2a085c89db712657",
"TT_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "692f4cca2459fc7b8073ac8830544ce419e056950961cdcc9326c63138ea8b30",
"TT_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "cb16f892983cd65056453906176fb8d8d716d07e072e3d3d0c8dcb6c5970df59",
"TT_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "cb16f892983cd65056453906176fb8d8d716d07e072e3d3d0c8dcb6c5970df59",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "4e2b66b8f6c61f0b0f5f0e2e724798e65c2c52cec79d5bf774ac54a8470c45a8",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "d476ca5a4940aa1b4b795855847cc56d39260b966451dc97a2bc17497b57a72c",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "ee706688d02ae06e0cf85fec88a0d65c87214c8a9bef84a1548eda5e3d01b2ef",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "4e2b66b8f6c61f0b0f5f0e2e724798e65c2c52cec79d5bf774ac54a8470c45a8",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "09946589efe2f3e225f5c488d6d632f555591ed8d9c6c609ca750698c4659fde",
"TT_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "fbf869ddec563f34f168eaa42a7e4c2c6764d21541d3199ce38660639d5ca094",
"TT_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "036353f716b4cc3dfe8159896e5fbbda99083428d20529a0e0bdadee3b065f9b",
"TT_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "036353f716b4cc3dfe8159896e5fbbda99083428d20529a0e0bdadee3b065f9b",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "b6cc31733a28894d9a9e4399f544ca87a3d36b80aa4eb405bba87c93f366f533",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "b713534ff7d9daab50ed23497cc40f24d9f97d967980045f37e8f61c1c282813",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "bd04e0c7d675c9fdb92cbd35e6fff88ecfc99900e6f2e1aaa71ee73e74da1ad6",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "b6cc31733a28894d9a9e4399f544ca87a3d36b80aa4eb405bba87c93f366f533",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "5ba37ea0a488085f84a977ab26bc892c4ef592a7ef16e7b248781637e493d9bb",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "86967f42e1e91312cf364a9e9b0b99d9c3cf01ceb7d5c6eb94c0925fd7220fc8",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "86967f42e1e91312cf364a9e9b0b99d9c3cf01ceb7d5c6eb94c0925fd7220fc8",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "86967f42e1e91312cf364a9e9b0b99d9c3cf01ceb7d5c6eb94c0925fd7220fc8",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "add03281e9f3e6e36373a29407cee636fff9d9d01beca020cf0ccdb4c2944d0f",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "30f6706f52ef795d528909cab43fd9e07dd9382b8bf2d77228c998ad4d0be62c",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "86967f42e1e91312cf364a9e9b0b99d9c3cf01ceb7d5c6eb94c0925fd7220fc8",
"TT_bitcoin-test_signtx_replacement.py::test_tx_meld": "f66b985ec3e849a4082298b7db993929b8cf57ad25bb84c6c6c1a8483a9b826f",
"TT_bitcoin-test_signtx_replacement.py::test_tx_meld": "1d4c6f043bfff920d09b8da2201ddffe84d970756a603ff54b9f9b59696c3ef6",
"TT_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "64771558b8dfb4f6317f95a1bc87c77e8461a7fd7ef6fee39770330984b55373",
"TT_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "b1230b100c552e5be052c169f46a5cdd5a2fe37c4e9e8051600fed6d91399cd1",
"TT_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "4f66563032c2db963ad141655c8f362d54360902bc401d5d1101fa243b67dbc6",
@ -1658,37 +1658,37 @@
"TT_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3",
"TT_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3",
"TT_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3",
"TT_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "0b0170ed69e5866584e073de9a9f0823b4d01f5a72e0d33a011309ce26f6cd69",
"TT_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "af55ffb0c92877ba7a43f40703db67580c03b2b7b7bdf1a1bbc45581d930f06d",
"TT_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "391aeec7fd7ddbea6a175497f5af019a30f1b1f3db5efc9153ab639b545930af",
"TT_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "a6bb86ea88a3a70da10cfe9ead2c693a67c50bb6c8eba131d9b68a73bb0f3386",
"TT_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "0cf1479f503749cac5f601b0c3daa279b20788cf8af425e05e3ee1767c988287",
"TT_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "ace9103b7e4912b788772a803b1fc31e5287945fbd42b0f61f5c10853bd596cd",
"TT_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "e00c46a70bc5bbfdd3bb6da5a712698e7c79bc8ebd78262ec0f13ef9ee6aec95",
"TT_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3",
"TT_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "8f5de27a24566ae782a2ec36cfaee0a7ce68df70e906265c7aecf8a0d1394668",
"TT_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "bcf8453956861c5a0ac2ad07867a47f8124da9023dd412950b9afe78e8b6788d",
"TT_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "29dc32c11147d2c188c3f02a8f71e27697725bd5aecb235d9b40133ba7cced88",
"TT_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "cde8f02f6919a9977f8fcecfe99032a5b6c6ba6285fc9de3bf41c547dbe526fb",
"TT_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "80d4525071c4bc97cdc328742bbf7941f85024f6e7b01c4193c96ac9190acf5e",
"TT_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "396db603bdde875ec3a09076de6dc901fe77bbe127630fd75a1cdb27b9bbf4dd",
"TT_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "6b2e5c465d5b8b2db86071ace9e24bebcbcd2544e6ddc9a670c962b115ba3bc6",
"TT_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "dd7204af9eadef054c2791359267f133fda0ef670cb0db2139a866eefa2b23c0",
"TT_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "34f22bbdc35ef4a6304ab912fb8b0d029b0f70e4fc839571b7b87696c7b72b23",
"TT_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "ec0eadac5cfedcddcbb7681481153466bd18da3285a99ca186e44bd1f8f7128a",
"TT_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "1570412176424e8c249695b172374756950e66eecc3f794f98afcd205ab64882",
"TT_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "6ea32de65a7fe719c07999194d20106b7cbbedef3b7be3b5563d21319df5efcf",
"TT_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "9fc71f7b07a2885b60a483432a4ebbe518da3fb0a37ba733de0a6d267300d768",
"TT_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "5d385812a83b6f3266612d656fda122589d64f00bafb99396ca7235974eb70f8",
"TT_reset_recovery-test_recovery_slip39_basic.py::test_abort": "29dc32c11147d2c188c3f02a8f71e27697725bd5aecb235d9b40133ba7cced88",
"TT_reset_recovery-test_recovery_slip39_basic.py::test_ask_word_number": "e8676679df9669f9600e5f9dc529281ed92baf649931e43f26bea27f61d6df3b",
"TT_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "7746b0b8f35f9f4e92f94cdfa56234eb68a690b5b13d08c65ba20374fe70db1b",
"TT_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "013cad86dade9124a15dcf48655286b35cdcc6f7dc68b04a511667b4430c8dc4",
"TT_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "2d81d019d189dc7891681dd72353066ddaa2307a130b706ec355c283dcb8c7e3",
"TT_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "161a65258ca114842f62da005e7c9e28fad1113e97b5645e7e9176c4f8b8603d",
"TT_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "80013dd24a02c1c64ae94a9b859068b06b39abc59db83f4293ca7c310962c9dc",
"TT_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "26c1519b5e6040d47f21cd160d24edd05104fb026a8b1430fa2f043ffdc9f1f0",
"TT_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "2356419ef36825741912156765ae7d822eca37ac60108feaf4690cd7519a4a34",
"TT_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "a5b63261a5d3f93e2dd48cdca681af51d0b56e4daab327c13463e07ffd3e5a05",
"TT_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "cae3961be48c58ddc0b65a3747c9cfca4923d0360b615aeaf76b592d6ac14dfb",
"TT_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "52ff36a8a1d0be21746018e270b0558635b69294be9ede2e2fd9b1b3f99761a8",
"TT_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "5a9de868c46bcd142b787055dec14d4021e1e9b739a7caddc6b0e6310e75c779",
"TT_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "48713e0cce260b57158bd0ccc7e1afbd78a462e40dfb5d3565dd73b8e9f03db1",
"TT_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "298566438821aba89609e87bab5db4b1b0f970daeff582cefda03ebd13249ad7",
"TT_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "5d12077928e7d64b19ec269d4acb966ea5e0b25fd63018dafff8fc59ea697541",
"TT_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "e22a581c54ac6d1483d2b439d1c70507d2219d537ae40b73d83e173902fdc36e",
"TT_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "8c30677e2140fb4dd6356cc5accca86c3b1165b556c6429f4ec1da3046b95c09",
"TT_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "1e3ed9ed33d53badc71daa3c64cde25e4065bee1ab1397f6afeb8c8fbd579252",
"TT_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "7f65ee03efccb79784dc67db341c89d3a3d9320282198895ddaadeb9787c1530",
"TT_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "1aee3a12001dfdeeb074ead1902bf687540021ebd30d68caca499e2f7a72a08f",
"TT_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "8be5e4e0f50b470183b8f7fa81b89c1cc34e5ccc9870d4b74f4338f1f16eff6d",
"TT_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "6858b02b98439d6d39cf1a6140886f4f3bf60c83c3f7da719c9a7f37c8ffda7e",
"TT_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "2424ec3ff74afe05bdd8eecfe319edbf6e02d9b9ec99c74285cfd531cfc329e2",
"TT_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "0d4d106399303bd2b91021ad200bb8127071ac0da20fe743bae012c3c954064a",
"TT_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "0aec95e491b414b5a9e35655d5bdd96c957f04c327b9ee5d7aae9cec1438af30",
"TT_reset_recovery-test_recovery_slip39_basic.py::test_abort": "298566438821aba89609e87bab5db4b1b0f970daeff582cefda03ebd13249ad7",
"TT_reset_recovery-test_recovery_slip39_basic.py::test_ask_word_number": "f741ca408166a991ecfed4be1603d63dcd9e8c074c081716ec9cc5fe1d7acad1",
"TT_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "08f76f65cd88dbb795860a439f1687a5cab259fa1081591bd06834e6ea1a470e",
"TT_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "06c8f0b25b010fb2a13b720b1fdca30c3cfed20dc7fb00a5631fdcb4dcd97e19",
"TT_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "66a7a9ba1a9a040285fd2a217411205ecd8921ae68044b85495fe84a704292ca",
"TT_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "14a54cbc1fd02e1cd8f9339ebab8da85fa0e427b211facd48bc87ab06a1ccbf6",
"TT_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "e56168efe1ffb2dcef749748ee3f0ec843005afbee86579f6c73e6a337cf6ce1",
"TT_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "518f09692194650323eaf16bb49b39fcf63b20bd3ae8c633b91552cb6ce88c69",
"TT_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "69ef06c06a149aff209d6dc8491de8362fac7b1537c5d94f11a1e276003646df",
"TT_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "b2cd7038d3e0a3098f3d91e08dcdf8b52909f9931c4d5ebef8ea4b64919b9bcc",
"TT_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "87718399c69d11e8656d4af3af448f542970fbfca524a53955adcd911903efd0",
"TT_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "0fbabbe652adc6a4e0d7285b165687dce0ad617762ed228f6a21d56de409d799",
"TT_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "31342942033bfb5fa25003467cff9c21767ec2534d439225e5b8e15852bbf4c2",
"TT_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "4efa25214bb6972a833e3ab3dc1754f80844fbc0116321daa5f08acc42f49bf8",
"TT_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "8bf5619172299ec2b031f408e24850c8e8c564414d62761b573282acf9e150c9",
@ -1696,14 +1696,14 @@
"TT_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "dbadedde1fd638f72f33590ae32425a0a645c9a0818a5030f0bd9adbe961c2bf",
"TT_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "245fafadd5b9181f1a512414ce9c486fff2b9c76044c4855bc143e4f5fd28592",
"TT_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3",
"TT_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "1902731b7775c17a45864707b5609c61b5f3de702391357b89dc85a424774301",
"TT_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "3ec95417936f90e01b92ab89b50d1a5acb98befb51c5767914f501298e1a794c",
"TT_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "fa804eaa19c56485ae7f156ba47a3c9642aa70e65295a19e018cf7e0c7156d25",
"TT_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "cf6b6b9b6c760f229725028cb9413ffc8fe31563045d8b13361a17c040e8a41f",
"TT_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "73f2cc80c5a9d03fb31b6508cbe20832db16dbb32b6edab5aaf108ba062fd840",
"TT_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "c4a8bf133da655de8b9f56d79e5c390a7eda43fbf49cc43e91688e3f09b4a846",
"TT_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "3fb31bd98acab477867d855a434e10db27daefeab6574c9eb6d6fabd55a011d1",
"TT_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "073c3113141888ed30dbf42ef0f68e6c4dcbaec2f779f41ebd39d1c441033ee6",
"TT_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "e3df92d0ce3c7e3052d152b74f3ea8d72cb0a18af089805bd9bce19a43d353ad",
"TT_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "727eaa2a38c555353e85eb0bcbea434aa5a690c5d58995d03c7238cc8930e992",
"TT_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "704d1d6eb72c545e56007882356fbf64a70e071efb8eedded6d4f771cad93e21",
"TT_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "13ec15333838611fcd996e8c6b78973b7e2a965d2cd9e18c45dbcdf1f9290aa8",
"TT_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "707ce5ce7f1bf07b0316db19bd82ffe45f26862bbfb3d8b96020ec7597cd5264",
"TT_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "68555d1b1da91289c2841d015166ec4643e14268c0a597bd6f6eb968e7fa2a4d",
"TT_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "438e9f0555ec91b6bdd416404f084a71d287591c4b7efe06c996c25c742feca0",
"TT_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "3b30eaaffa00672b6ebfd60a34f1c0356aaef063ac8c40357b24cf86bd772314",
@ -1799,16 +1799,16 @@
"TT_test_msg_backup_device.py::test_interrupt_backup_fails": "cdf801e16b046079569e4055f43a86a45d7eace58793427ef5433f71e75961f9",
"TT_test_msg_backup_device.py::test_no_backup_fails": "fada9d38ec099b3c6a4fd8bf994bb1f3431e40085128b4e0cd9deb8344dec53e",
"TT_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "e00c46a70bc5bbfdd3bb6da5a712698e7c79bc8ebd78262ec0f13ef9ee6aec95",
"TT_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "a9bd775d5fa279ae44eb9498b59eb6af5a78f6ebcae46563ab0d33962d50c82f",
"TT_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "36ce2fa2d74131cc8fed47d335ff485524402d30fe0f5de14e6f9e590ddc00e4",
"TT_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "4882e50989dd4dcebaba685785c713f0ee54b80be13cf66c8c2d4ab111062f33",
"TT_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "a98ad32b9cf93579b798a76aa60370e2444493307c5743093351edd03b15b008",
"TT_test_msg_changepin_t2.py::test_change_failed": "565e26dcb8d24f1ad18f4fe03ac8d114fda94a46a0c31f7960497777718845b4",
"TT_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "b3abe56cbc85b9012e1fa27dce0e869f0a01de7a72db24e44177690a57392b52",
"TT_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "2e2cdd155ac500a8ef6136eb1c972c049c8dfb83ce7e8e8e51bc4e0cb51f2b13",
"TT_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "b40c8acdfa2042070a2f725afde819971a55116848b9316abf12683f7098ab11",
"TT_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "8a6bba7707e9513487b37a7b8200cba78f84643c878c8b5c48c47e663c75788e",
"TT_test_msg_changepin_t2.py::test_change_failed": "6ff23099b5621b79a8ca25f3e3137dbf32073a445a89198b6abc64b94532385a",
"TT_test_msg_changepin_t2.py::test_change_invalid_current": "c11d3f8d788f61a7213bb2dba71ae0517e686e6cb73653addafa5f60d611afbe",
"TT_test_msg_changepin_t2.py::test_change_pin": "4897e28024f677075b5a2fe941876e87bf6ffe5a1ec40d3658d643f6c042aabb",
"TT_test_msg_changepin_t2.py::test_change_pin": "fa711ce2b0259f853f43c55573dd38ca6d5cb593fb1f55bba7ff9e9e95760054",
"TT_test_msg_changepin_t2.py::test_remove_pin": "1a415b1d0d626bf52c08f948f8761ad84f18550931ba34e422c0ee58862f060e",
"TT_test_msg_changepin_t2.py::test_set_failed": "59e8d307d78714fabc1fabf86d0ff763407b951ccb90883df5e1f2ef03d2ea09",
"TT_test_msg_changepin_t2.py::test_set_pin": "9c9787d1fe80cf530e6c92079a36d440effca54587eb9f5a6b7fdd34406dae17",
"TT_test_msg_changepin_t2.py::test_set_failed": "ca78b60d44956e7e9626315bb5b282305914f05db17414f39b02aef5175bc4ce",
"TT_test_msg_changepin_t2.py::test_set_pin": "0319bceb94bf789e5cfd34c733f088bf4c5e538f1a578a380e760073bf2da37f",
"TT_test_msg_loaddevice.py::test_load_device_1": "3643774c15de3f99b82fff125bc05b9af066f5c08b7861a117f0c05da79ba1c5",
"TT_test_msg_loaddevice.py::test_load_device_2": "e37151e13b8a880033a82c065a41271d19f8c4a2b3c34985a7f5f04c1f4f0010",
"TT_test_msg_loaddevice.py::test_load_device_slip39_advanced": "3643774c15de3f99b82fff125bc05b9af066f5c08b7861a117f0c05da79ba1c5",
@ -1818,7 +1818,7 @@
"TT_test_msg_sd_protect.py::test_enable_disable": "0f1bde609b1b5b7521d7560673ee8d287c3c8fe61982bcc6931282b20ad1cd7b",
"TT_test_msg_sd_protect.py::test_refresh": "48ae62a7db380712cebdbb52672031eaf65de1eae404c2f4d146831c069269d9",
"TT_test_msg_sd_protect.py::test_wipe": "47c6292187ad5a81613c74ae5d7b9d5483be59269a13a5b94078286057b9c58d",
"TT_test_msg_wipedevice.py::test_autolock_not_retained": "dd36178513b69226f94d87ebf6eedb71df79b1d4a88d7b0d91c9f34e4ee99c56",
"TT_test_msg_wipedevice.py::test_autolock_not_retained": "208f3d181dc0753496e5241931dafd1bca62942a37856cfbef48ddbbd31ddebf",
"TT_test_msg_wipedevice.py::test_wipe_device": "4c7862bedbc9de710152f7b7ab15256ac9885f3c9f8082e6d04125acca6a71d7",
"TT_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "1bd915d8dd1b00fcf945b46053ad73f6471f29c5af7fc437090c755e176810c3",
"TT_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "1bd915d8dd1b00fcf945b46053ad73f6471f29c5af7fc437090c755e176810c3",
@ -1829,7 +1829,7 @@
"TT_test_pin.py::test_incorrect_pin_t2": "a876b9361f82c8921f9e0f6139f6603171d1a2f072d397be62af9c01fad3f562",
"TT_test_pin.py::test_no_protection": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3",
"TT_test_protection_levels.py::test_apply_settings": "f21279b8f97c74260ccbe823e8e71b475ed6f631966c977fd56197e182b26c41",
"TT_test_protection_levels.py::test_change_pin_t2": "d69ce2d65669bec7f2e06c79c99aed13aebdf7f54de586595113287207c0af7b",
"TT_test_protection_levels.py::test_change_pin_t2": "990124ab2de328f9f2080ee8936d96e0d0d62d52ee64b453553af9e54bea1d59",
"TT_test_protection_levels.py::test_get_address": "79930e3c2d8e3e87934f7f06d09daa27508beb1e5ed413006533ce03bc3c45ce",
"TT_test_protection_levels.py::test_get_entropy": "a820cf9c173f1aa5b446ef9f40910594e1346bfb94219d7204254bc5b1a38909",
"TT_test_protection_levels.py::test_get_public_key": "79930e3c2d8e3e87934f7f06d09daa27508beb1e5ed413006533ce03bc3c45ce",
@ -1845,7 +1845,7 @@
"TT_test_protection_levels.py::test_wipe_device": "af075bdd0d287154aeee0aa6f8a1066be24f2aab8a6f5f4ab7e1bdd26af380e9",
"TT_test_sdcard.py::test_sd_format": "45731c43d45fd5d86cdc462a1dbbde1ad83a02fdb5abffa2e8bf54af2f0cd1ee",
"TT_test_sdcard.py::test_sd_no_format": "3590feffa9193c304105fba0afae84bc93e54f1a4706490bd63b9d56a202a1a7",
"TT_test_sdcard.py::test_sd_protect_unlock": "674dd28470342a9cffe39da611f55dd0ae217db3d965da99bc3cbef8f8521bbf",
"TT_test_sdcard.py::test_sd_protect_unlock": "4e744c259c67aada41c7b0762fd76bf9bcf6b15ca8d5ba1f7fbc5bdc48cec1ea",
"TT_test_session.py::test_cannot_resume_ended_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3",
"TT_test_session.py::test_clear_session": "4978f02d2c97e997eaf8417e511dfdfdbe9675f82e7d849117ba5cf6ce653c53",
"TT_test_session.py::test_derive_cardano_empty_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3",
@ -1896,11 +1896,11 @@
"TT_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "d4a6d7692b341f8c2cfc9aea6b842f5410f0a53174944085c42e894daa270fef",
"TT_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "6bb0fd358d92a42b1945c2488a954f1cadc4d84f20e93f587cb8eb8ff69ee9b3",
"TT_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "8ed84fa3ffad4f6c3432780ad5553e3672f9097d327a32dee714579eece05d20",
"TT_test_shamir_persistence.py::test_abort": "5e4afe9b4289c461b1bc35390737c7044a47e9f4c73ce4d5329eb675cc2bb8df",
"TT_test_shamir_persistence.py::test_recovery_multiple_resets": "6ab3f62f67fa1ad57a582aba3381406aad1cd1e774fd0857e573289c54a0479a",
"TT_test_shamir_persistence.py::test_recovery_on_old_wallet": "6f745fc62114300e6fdade8c1debd7e1af581c2661d0f0caba82391881f77e97",
"TT_test_shamir_persistence.py::test_recovery_single_reset": "683646e6457b758e03ca562594c032104d6f671b00eb0d42e1afe593ab90616c",
"TT_test_wipe_code.py::test_wipe_code_activate_core": "0d91ee22164bb6b79194cad1a80f9890750c4518bdc55dcd787ef48d9e81f652"
"TT_test_shamir_persistence.py::test_abort": "01ffa622b60df60bac7a7c3d7b89c0c9991cd92c98c7f6fecc4968547074e42a",
"TT_test_shamir_persistence.py::test_recovery_multiple_resets": "18cb949c09521d33e5c75bed30989ce458060b76b857043dce20a0362168596e",
"TT_test_shamir_persistence.py::test_recovery_on_old_wallet": "9b1f56ff82f9e6fbe9a1ec92e812dcf3cf06382a0123e4bb4d2831f72f965913",
"TT_test_shamir_persistence.py::test_recovery_single_reset": "b486ae0ebbab7a29b334b46f1fbe45f2f1364ad0b84bce9799d9b7037baa8ad0",
"TT_test_wipe_code.py::test_wipe_code_activate_core": "820d443b371a32dd7e108bc52df0b3c3e4a3a6c1a896ba2f75e6c46774281b3d"
}
}
}

Loading…
Cancel
Save