1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-11-17 21:22:10 +00:00

tests: get rid of skip_ui (fixes #1409)

This commit is contained in:
matejcik 2021-02-03 12:35:37 +01:00 committed by matejcik
parent 81ae1d0ec0
commit cdf55d2fac
24 changed files with 129 additions and 67 deletions

View File

@ -91,7 +91,6 @@ def test_autolock_default_value(client):
assert client.features.auto_lock_delay_ms == 60 * 10 * 1000
@pytest.mark.skip_ui
@pytest.mark.parametrize(
"seconds",
[0, 1, 9, 536871, 2 ** 22],

View File

@ -21,8 +21,6 @@ from trezorlib.exceptions import Cancelled
from ..common import TEST_ADDRESS_N
pytestmark = pytest.mark.skip_ui
@pytest.mark.parametrize(
"message",

View File

@ -51,7 +51,6 @@ class TestDebuglink:
assert isinstance(resp, messages.Address)
@pytest.mark.skip_ui
@pytest.mark.skip_t1
def test_softlock_instability(client):
def load_device():

View File

@ -151,7 +151,6 @@ class TestMsgApplysettings:
b"TOIf\x80\x00\x80\x00~\x00\x00\x00\xed\xd2\xcb\r\x83@\x10D\xc1^.\xde#!\xac31\x99\x10\x8aC%\x14~\x16\x92Y9\x02WI3\x01<\xf5cI2d\x1es(\xe1[\xdbn\xba\xca\xe8s7\xa4\xd5\xd4\xb3\x13\xbdw\xf6:\xf3\xd1\xe7%\xc7]\xdd_\xb3\x9e\x9f\x9e\x9fN\xed\xaaE\xef\xdc\xcf$D\xa7\xa4X\r\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0OV",
],
)
@pytest.mark.skip_ui
@pytest.mark.skip_t1
def test_apply_homescreen_toif_fail(self, client, toif_data):
with pytest.raises(exceptions.TrezorFailure), client:

View File

@ -423,7 +423,6 @@ def test_cancel_authorization(client):
)
@pytest.mark.skip_ui
def test_multisession_authorization(client):
# Authorize CoinJoin with www.example1.com in session 1.
btc.authorize_coinjoin(

View File

@ -33,7 +33,6 @@ def getmultisig(chain, nr, xpubs, signatures=[b"", b"", b""]):
)
@pytest.mark.skip_ui
class TestMsgGetaddress:
def test_btc(self, client):
assert (
@ -219,7 +218,6 @@ class TestMsgGetaddress:
@pytest.mark.skip_t1
@pytest.mark.skip_ui
def test_invalid_path(client):
with pytest.raises(TrezorFailure, match="Forbidden key path"):
# slip44 id mismatch
@ -276,7 +274,6 @@ def test_unknown_path_t1(client):
@pytest.mark.altcoin
@pytest.mark.skip_ui
def test_crw(client):
assert (
btc.get_address(client, "Crown", parse_path("44'/72'/0'/0/0"))

View File

@ -23,7 +23,6 @@ from trezorlib.tools import parse_path
pytestmark = pytest.mark.skip_t1
@pytest.mark.skip_ui
def test_ownership_id(client):
ownership_id = btc.get_ownership_id(
client,
@ -37,7 +36,6 @@ def test_ownership_id(client):
)
@pytest.mark.skip_ui
def test_p2wpkh_ownership_proof(client):
ownership_proof, _ = btc.get_ownership_proof(
client,
@ -51,7 +49,6 @@ def test_p2wpkh_ownership_proof(client):
)
@pytest.mark.skip_ui
def test_fake_ownership_id(client):
with pytest.raises(TrezorFailure, match="Invalid ownership identifier"):
btc.get_ownership_proof(

View File

@ -22,8 +22,6 @@ from trezorlib.tools import parse_path
from .. import bip32
pytestmark = pytest.mark.skip_ui
VECTORS_BITCOIN = ( # coin_name, xpub_magic, path, xpub
(
"Bitcoin",

View File

@ -20,8 +20,6 @@ from trezorlib import btc
from trezorlib.exceptions import TrezorFailure
from trezorlib.tools import parse_path
pytestmark = pytest.mark.skip_ui
PATH_PRIVATE = parse_path("m/17h/0h/1h/2h/3h")
PATH_PUBLIC = parse_path("m/17h/0h/1h/2h/3h/42")

View File

@ -14,12 +14,9 @@
# You should have received a copy of the License along with this library.
# If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>.
import pytest
from trezorlib import messages
@pytest.mark.skip_ui
def test_ping(client):
with client:
client.set_expected_responses([messages.Success()])

View File

@ -430,7 +430,6 @@ class TestMsgSigntx:
== "6f9775545830731a316a4c2a39515b1890e9c8ab0f9e21e7c6a6ca2c1499116d"
)
@pytest.mark.skip_ui
@pytest.mark.slow
def test_lots_of_inputs(self, client):
# Tests if device implements serialization of len(inputs) correctly
@ -458,7 +457,6 @@ class TestMsgSigntx:
== "f90cdc2224366312be28166e2afe198ece7a60e86e25f5a50f5b14d811713da8"
)
@pytest.mark.skip_ui
@pytest.mark.slow
def test_lots_of_outputs(self, client):
# Tests if device implements serialization of len(outputs) correctly
@ -1131,7 +1129,6 @@ class TestMsgSigntx:
prev_txes=TX_CACHE_TESTNET,
)
@pytest.mark.skip_ui
def test_not_enough_vouts(self, client):
prev_tx = TX_CACHE_MAINNET[TXHASH_157041]
@ -1187,7 +1184,6 @@ class TestMsgSigntx:
("branch_id", 13),
),
)
@pytest.mark.skip_ui
def test_prevtx_forbidden_fields(self, client, field, value):
inp0 = messages.TxInputType(
address_n=parse_path("44h/0h/0h/0/0"),
@ -1215,7 +1211,6 @@ class TestMsgSigntx:
"field, value",
(("expiry", 9), ("timestamp", 42), ("version_group_id", 69), ("branch_id", 13)),
)
@pytest.mark.skip_ui
def test_signtx_forbidden_fields(self, client, field, value):
inp0 = messages.TxInputType(
address_n=parse_path("44h/0h/0h/0/0"),
@ -1242,7 +1237,6 @@ class TestMsgSigntx:
"script_type",
(messages.InputScriptType.SPENDADDRESS, messages.InputScriptType.EXTERNAL),
)
@pytest.mark.skip_ui
def test_incorrect_input_script_type(self, client, script_type):
address_n = parse_path("44'/1'/0'/0/0")
attacker_multisig_public_key = bytes.fromhex(
@ -1298,7 +1292,6 @@ class TestMsgSigntx:
messages.OutputScriptType.PAYTOSCRIPTHASH,
),
)
@pytest.mark.skip_ui
def test_incorrect_output_script_type(self, client, script_type):
address_n = parse_path("44'/1'/0'/0/0")
attacker_multisig_public_key = bytes.fromhex(

View File

@ -14,8 +14,6 @@
# You should have received a copy of the License along with this library.
# If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>.
import pytest
from trezorlib import btc, messages
from trezorlib.tools import parse_path
@ -37,7 +35,6 @@ TXHASH_31bc1c = bytes.fromhex(
)
@pytest.mark.skip_ui
def test_non_segwit_segwit_inputs(client):
# First is non-segwit, second is segwit.
@ -80,7 +77,6 @@ def test_non_segwit_segwit_inputs(client):
)
@pytest.mark.skip_ui
def test_segwit_non_segwit_inputs(client):
# First is segwit, second is non-segwit.
@ -123,7 +119,6 @@ def test_segwit_non_segwit_inputs(client):
)
@pytest.mark.skip_ui
def test_segwit_non_segwit_segwit_inputs(client):
# First is segwit, second is non-segwit and third is segwit again.
@ -177,7 +172,6 @@ def test_segwit_non_segwit_segwit_inputs(client):
)
@pytest.mark.skip_ui
def test_non_segwit_segwit_non_segwit_inputs(client):
# First is non-segwit, second is segwit and third is non-segwit again.

View File

@ -65,7 +65,6 @@ def test_timestamp_included(client):
@pytest.mark.altcoin
@pytest.mark.peercoin
@pytest.mark.skip_ui
def test_timestamp_missing(client):
inp1 = messages.TxInputType(
address_n=parse_path("m/44'/6'/0'/0/0"),
@ -104,7 +103,6 @@ def test_timestamp_missing(client):
@pytest.mark.altcoin
@pytest.mark.peercoin
@pytest.mark.skip_ui
def test_timestamp_missing_prevtx(client):
inp1 = messages.TxInputType(
address_n=parse_path("m/44'/6'/0'/0/0"),

View File

@ -80,7 +80,6 @@ def _check_error_message(value: bytes, model: str, message: str):
assert message.endswith("Encountered invalid prevhash")
@pytest.mark.skip_ui
@pytest.mark.parametrize("prev_hash", (None, b"", b"x", b"hello world", b"x" * 33))
def test_invalid_prev_hash(client, prev_hash):
inp1 = messages.TxInputType(
@ -101,7 +100,6 @@ def test_invalid_prev_hash(client, prev_hash):
_check_error_message(prev_hash, client.features.model, e.value.message)
@pytest.mark.skip_ui
@pytest.mark.parametrize("prev_hash", (None, b"", b"x", b"hello world", b"x" * 33))
def test_invalid_prev_hash_attack(client, prev_hash):
# prepare input with a valid prev-hash
@ -144,7 +142,6 @@ def test_invalid_prev_hash_attack(client, prev_hash):
_check_error_message(prev_hash, client.features.model, e.value.message)
@pytest.mark.skip_ui
@pytest.mark.parametrize("prev_hash", (None, b"", b"x", b"hello world", b"x" * 33))
def test_invalid_prev_hash_in_prevtx(client, prev_hash):
cache = TxCache("Bitcoin")

View File

@ -561,7 +561,6 @@ def test_tx_meld(client):
)
@pytest.mark.skip_ui
def test_attack_steal_change(client):
# Attempt to steal amount equivalent to the change in the original transaction by
# hiding the fact that an output in the original transaction is a change-output.
@ -633,7 +632,6 @@ def test_attack_steal_change(client):
@pytest.mark.skip_t1
@pytest.mark.skip_ui
def test_attack_false_internal(client):
# Falsely claim that an external input is internal in the original transaction.
# If this were possible, it would allow an attacker to make it look like the
@ -685,7 +683,6 @@ def test_attack_false_internal(client):
)
@pytest.mark.skip_ui
def test_attack_fake_int_input_amount(client):
# Give a fake input amount for an original internal input while giving the correct
# amount for the replacement input. If an attacker could increase the amount of an
@ -741,7 +738,6 @@ def test_attack_fake_int_input_amount(client):
@pytest.mark.skip_t1
@pytest.mark.skip_ui
def test_attack_fake_ext_input_amount(client):
# Give a fake input amount for an original external input while giving the correct
# amount for the replacement input. If an attacker could decrease the amount of an
@ -812,7 +808,6 @@ def test_attack_fake_ext_input_amount(client):
)
@pytest.mark.skip_ui
def test_p2wpkh_invalid_signature(client):
# Ensure that transaction replacement fails when the original signature is invalid.

View File

@ -56,7 +56,6 @@ TXHASH_v4 = bytes.fromhex(
@pytest.mark.altcoin
@pytest.mark.zcash
class TestMsgSigntxZcash:
@pytest.mark.skip_ui
def test_v3_not_supported(self, client):
# prevout: aaf51e4606c264e47e5c42c958fe4cf1539c5172684721e38e69f4ef634d75dc:1
# input 1: 3.0 TAZ
@ -142,7 +141,6 @@ class TestMsgSigntxZcash:
== "0400008085202f890168039326c180fa7b1e999392e25a3ec6a8aec83c11b787ddb1746922020682e3000000006b483045022100f28298891f48706697a6f898ac18e39ce2c7cebe547b585d51cc22d80b1b21a602201a807b8a18544832d95d1e3ada82c0617bc6d97d3f24d1fb4801ac396647aa880121030e669acac1f280d1ddf441cd2ba5e97417bf2689e4bbec86df4f831bf9f7ffd0ffffffff016c9be111000000001976a9145b157a678a10021243307e4bb58f36375aa80e1088ac00000000000000000000000000000000000000"
)
@pytest.mark.skip_ui
def test_version_group_id_missing(self, client):
inp1 = proto.TxInputType(
# tmQoJ3PTXgQLaRRZZYT6xk8XtjRbr2kCqwu

View File

@ -44,7 +44,6 @@ class TestMsgStellarGetAddress:
)
assert address == "GBAW5XGWORWVFE2XTJYDTLDHXTY2Q2MO73HYCGB3XMFMQ562Q2W2GJQX"
@pytest.mark.skip_ui
def test_stellar_get_address_fail(self, client):
with pytest.raises(TrezorFailure) as exc:
stellar.get_address(client, parse_path("m/0/1"))

View File

@ -83,7 +83,6 @@ class TestOpReturn:
== "010000000182488650ef25a58fef6788bd71b8212038d7f2bbe4750bc7bcb44701e85ef6d5000000006b483045022100bc36e1227b334e856c532bbef86d30a96823a5f2461738f4dbf969dfbcf1b40b022078c5353ec9a4bce2bb05bd1ec466f2ab379c1aad926e208738407bba4e09784b012103330236b68aa6fdcaca0ea72e11b360c84ed19a338509aa527b678a7ec9076882ffffffff0260cc0500000000001976a914de9b2a8da088824e8fe51debea566617d851537888ac00000000000000001c6a1a74657374206f6620746865206f705f72657475726e206461746100000000"
)
@pytest.mark.skip_ui
def test_nonzero_opreturn(self, client):
inp1 = proto.TxInputType(
address_n=parse_path("44'/0'/10'/0/5"),
@ -108,7 +107,6 @@ class TestOpReturn:
):
btc.sign_tx(client, "Bitcoin", [inp1], [out1], prev_txes=TX_API)
@pytest.mark.skip_ui
def test_opreturn_address(self, client):
inp1 = proto.TxInputType(
address_n=parse_path("44'/0'/0'/0/2"),

View File

@ -27,7 +27,6 @@ from ..common import EXTERNAL_ENTROPY, click_through, read_and_confirm_mnemonic
@pytest.mark.skip_t1
@pytest.mark.skip_ui
@pytest.mark.setup_client(uninitialized=True)
def test_reset_recovery(client):
mnemonic = reset(client)

View File

@ -31,7 +31,6 @@ from ..common import (
@pytest.mark.skip_t1
@pytest.mark.skip_ui
@pytest.mark.setup_client(uninitialized=True)
def test_reset_recovery(client):
mnemonics = reset(client)

View File

@ -15,6 +15,7 @@
# If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>.
import itertools
from unittest import mock
import pytest
@ -24,10 +25,13 @@ from trezorlib.tools import parse_path
from ..common import click_through, read_and_confirm_mnemonic, recovery_enter_shares
EXTERNAL_ENTROPY = b"zlutoucky kun upel divoke ody" * 2
MOCK_OS_URANDOM = mock.Mock(return_value=EXTERNAL_ENTROPY)
@pytest.mark.skip_t1
@pytest.mark.skip_ui
@pytest.mark.setup_client(uninitialized=True)
@mock.patch("os.urandom", MOCK_OS_URANDOM)
def test_reset_recovery(client):
mnemonics = reset(client)
address_before = btc.get_address(client, "Bitcoin", parse_path("44'/0'/0'/0/0"))

View File

@ -29,7 +29,6 @@ XPUB = "xpub6BiVtCpG9fQPxnPmHXG8PhtzQdWC2Su4qWu6XW9tpWFYhxydCLJGrWBJZ5H6qTAHdPQ7
PIN4 = "1234"
@pytest.mark.skip_ui
@pytest.mark.setup_client(pin=PIN4, passphrase=True)
def test_clear_session(client):
is_trezor1 = client.features.model == "1"
@ -64,7 +63,6 @@ def test_clear_session(client):
assert get_public_node(client, ADDRESS_N).xpub == XPUB
@pytest.mark.skip_ui
def test_end_session(client):
# client instance starts out not initialized
# XXX do we want to change this?
@ -95,7 +93,6 @@ def test_end_session(client):
client.end_session()
@pytest.mark.skip_ui
def test_cannot_resume_ended_session(client):
session_id = client.session_id
with client:
@ -112,7 +109,6 @@ def test_cannot_resume_ended_session(client):
assert session_id != client.session_id
@pytest.mark.skip_ui
def test_end_session_only_current(client):
"""test that EndSession only destroys the current session"""
session_id_a = client.session_id
@ -131,7 +127,6 @@ def test_end_session_only_current(client):
assert client.session_id == session_id_a
@pytest.mark.skip_ui
@pytest.mark.setup_client(passphrase=True)
def test_session_recycling(client):
session_id_orig = client.session_id

View File

@ -70,7 +70,6 @@ def _get_xpub(client, passphrase=None):
return result.xpub
@pytest.mark.skip_ui
@pytest.mark.setup_client(passphrase=True)
def test_session_with_passphrase(client):
# Let's start the communication by calling Initialize.
@ -98,7 +97,6 @@ def test_session_with_passphrase(client):
assert _get_xpub(client, passphrase="A") == XPUB_PASSPHRASES["A"]
@pytest.mark.skip_ui
@pytest.mark.setup_client(passphrase=True)
def test_multiple_sessions(client):
# start SESSIONS_STORED sessions
@ -138,7 +136,6 @@ def test_multiple_sessions(client):
assert session_id != new_session_id
@pytest.mark.skip_ui
@pytest.mark.setup_client(passphrase=True)
def test_multiple_passphrases(client):
# start a session
@ -172,7 +169,6 @@ def test_multiple_passphrases(client):
assert _get_xpub(client, passphrase=None) == XPUB_PASSPHRASES["B"]
@pytest.mark.skip_ui
@pytest.mark.slow
@pytest.mark.setup_client(passphrase=True)
def test_max_sessions_with_passphrases(client):
@ -215,7 +211,6 @@ def test_max_sessions_with_passphrases(client):
_get_xpub(client, passphrase="whatever") # passphrase is prompted
@pytest.mark.skip_ui
def test_session_enable_passphrase(client):
# Let's start the communication by calling Initialize.
session_id = _init_session(client)
@ -239,7 +234,6 @@ def test_session_enable_passphrase(client):
assert _get_xpub(client, passphrase="A") == XPUB_PASSPHRASES["A"]
@pytest.mark.skip_ui
@pytest.mark.skip_t1
@pytest.mark.setup_client(passphrase=True)
def test_passphrase_on_device(client):
@ -279,7 +273,6 @@ def test_passphrase_on_device(client):
assert response.xpub == XPUB_PASSPHRASES["A"]
@pytest.mark.skip_ui
@pytest.mark.skip_t1
@pytest.mark.setup_client(passphrase=True)
def test_passphrase_always_on_device(client):
@ -314,7 +307,6 @@ def test_passphrase_always_on_device(client):
assert response.xpub == XPUB_PASSPHRASES["A"]
@pytest.mark.skip_ui
@pytest.mark.skip_t2
@pytest.mark.setup_client(passphrase=True)
def test_passphrase_on_device_not_possible_on_t1(client):
@ -331,7 +323,6 @@ def test_passphrase_on_device_not_possible_on_t1(client):
assert response.code == FailureType.DataError
@pytest.mark.skip_ui
@pytest.mark.setup_client(passphrase=True)
def test_passphrase_ack_mismatch(client):
response = client.call_raw(XPUB_REQUEST)
@ -341,7 +332,6 @@ def test_passphrase_ack_mismatch(client):
assert response.code == FailureType.DataError
@pytest.mark.skip_ui
@pytest.mark.setup_client(passphrase=True)
def test_passphrase_missing(client):
response = client.call_raw(XPUB_REQUEST)
@ -357,7 +347,6 @@ def test_passphrase_missing(client):
assert response.code == FailureType.DataError
@pytest.mark.skip_ui
@pytest.mark.setup_client(passphrase=True)
def test_passphrase_length(client):
def call(passphrase: str, expected_result: bool):
@ -392,7 +381,6 @@ def _get_xpub_cardano(client, passphrase):
return response.xpub
@pytest.mark.skip_ui
@pytest.mark.skip_t1
@pytest.mark.altcoin
@pytest.mark.setup_client(passphrase=True)

View File

@ -58,6 +58,11 @@
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "612dad8ab8762162a186ec9279d7de0bdfc589c52b4e4f4eba0545a00f21c3f0",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "612dad8ab8762162a186ec9279d7de0bdfc589c52b4e4f4eba0545a00f21c3f0",
"test_autolock.py::test_apply_auto_lock_delay": "38c720e0d29b7487060f2a0f8d256a5e5b4f735511e049c43f6ea62e560603ae",
"test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "6badfcdd682ecaf16311749ef7a6c07c6a4d0df402427c8dd5a48d476751ed77",
"test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "6badfcdd682ecaf16311749ef7a6c07c6a4d0df402427c8dd5a48d476751ed77",
"test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "6badfcdd682ecaf16311749ef7a6c07c6a4d0df402427c8dd5a48d476751ed77",
"test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "6badfcdd682ecaf16311749ef7a6c07c6a4d0df402427c8dd5a48d476751ed77",
"test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "6badfcdd682ecaf16311749ef7a6c07c6a4d0df402427c8dd5a48d476751ed77",
"test_autolock.py::test_apply_auto_lock_delay_valid[10]": "a751228f82166c107a8e8872919e2b010ef3079763adc473066e7a3ada36f864",
"test_autolock.py::test_apply_auto_lock_delay_valid[123]": "caf130bf5fa66fa5ac17432689046c1b6cd8b6a495bac3abef3c414d89b81e3f",
"test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "b2a9a7f3e50afb04fb174627a07b939284aa0acc8b3b53af56f75a35ff1b32c9",
@ -70,6 +75,11 @@
"test_basic.py-test_device_id_same": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_basic.py-test_features": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_basic.py-test_ping": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_cancel.py::test_cancel_message_via_cancel[message0]": "83a76ca8054759209fc06244ee303f95e20da9e6ccdfe268d16fba5e0065de69",
"test_cancel.py::test_cancel_message_via_cancel[message1]": "83a76ca8054759209fc06244ee303f95e20da9e6ccdfe268d16fba5e0065de69",
"test_cancel.py::test_cancel_message_via_initialize[message0]": "83a76ca8054759209fc06244ee303f95e20da9e6ccdfe268d16fba5e0065de69",
"test_cancel.py::test_cancel_message_via_initialize[message1]": "83a76ca8054759209fc06244ee303f95e20da9e6ccdfe268d16fba5e0065de69",
"test_debuglink.py::test_softlock_instability": "bdc28bcdb709f6ffd74ba89bc34ff87a2516c9277bad701c1c6d9e9926ce6871",
"test_descriptors.py::test_descriptors[Bitcoin-0-0-descriptors0]": "148a8d2b84daf91012d819490c414c77b3afc84840e1fec7280ac7ec23b44cd8",
"test_descriptors.py::test_descriptors[Bitcoin-0-3-descriptors8]": "182537adcfefbf22c10266ffcb64c461c7bc6a03353ca88788195be27a4aae80",
"test_descriptors.py::test_descriptors[Bitcoin-0-4-descriptors4]": "0c7f3b16cc9d68a8e3c43daf973eabb3d0953ef075c4818506255f07e3cd2bc1",
@ -83,6 +93,9 @@
"test_descriptors.py::test_descriptors[Testnet-1-3-descriptors11]": "fd013e30635a3b974ad6de96be8ad42394607f9fed0d16e027921569f3680f14",
"test_descriptors.py::test_descriptors[Testnet-1-4-descriptors7]": "0f31ff649f8c5da3a8ff88267c961a92891e232a3aafb9ce6bbf17125e59fa3e",
"test_msg_applysettings.py-test_apply_homescreen_toif": "408bdb69368ebdf1d299c6d43c1571f86cb1a0f1f606c5badd2f05ce7731f121",
"test_msg_applysettings.py-test_apply_homescreen_toif_fail[TOIf\\x80\\x00\\x80\\x00~\\x00\\x00\\x00-fefdb3aa": "6badfcdd682ecaf16311749ef7a6c07c6a4d0df402427c8dd5a48d476751ed77",
"test_msg_applysettings.py-test_apply_homescreen_toif_fail[TOIf\\x90\\x00\\x90\\x00~XXXf\\x90\\x00-4f4d817c": "6badfcdd682ecaf16311749ef7a6c07c6a4d0df402427c8dd5a48d476751ed77",
"test_msg_applysettings.py-test_apply_homescreen_toif_fail[TOIg\\x90\\x00\\x90\\x00~\\x00\\x00\\x00-63ffc926": "6badfcdd682ecaf16311749ef7a6c07c6a4d0df402427c8dd5a48d476751ed77",
"test_msg_applysettings.py-test_apply_settings": "8f9f6013bb8a44fda279e9c7d091328fd7ccb39222a02bee701918528355083a",
"test_msg_applysettings.py-test_apply_settings_passphrase": "40de0143b32b5d06ece43d47be27bb91499f0c2417754ddb8e9e03ff41a7f6d4",
"test_msg_applysettings.py-test_apply_settings_passphrase_on_device": "3e6527e227bdde54f51bc9c417b176d0d87fdb6c40c4761368f50eb201b4beed",
@ -91,6 +104,7 @@
"test_msg_applysettings.py-test_label_too_long": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_applysettings.py-test_safety_checks": "4d37de3654678b7f16643cf4ef912a0bced545e0e0526e41ea0c9b820560344e",
"test_msg_authorize_coinjoin.py::test_cancel_authorization": "d8a608beb6165f5667cc44dcff6bdc17ebb4638ddd3bd09e7f0e1e75d1e21135",
"test_msg_authorize_coinjoin.py::test_multisession_authorization": "dbcc5c1b3deb9953d215a39d31363ab9e4e9efe87579dbdc348bb2cb1d5aeb77",
"test_msg_authorize_coinjoin.py::test_no_anonymity": "fd09da284b650e893990b95047b63a35b6b695fc5301d595f17a6d2cf9d90bcb",
"test_msg_authorize_coinjoin.py::test_sign_tx": "5d53448397ff5cf4f951e2ac7f37c34e2ca9be99a3d3d2d31499397e10e4b157",
"test_msg_authorize_coinjoin.py::test_unfair_fee": "62314e936de46a6caaf02c8eb20f6f471be6e79ca0c5450cad6f67f9cb823f2b",
@ -172,6 +186,18 @@
"test_msg_ethereum_signtx_eip155.py::test_with_data": "33e97436953f55bc61c5f54bd9702b1ba962c0e716d20ddbe9827be3d24ad98d",
"test_msg_ethereum_verifymessage.py-test_verify": "da70ac961dc8ff548943498f42ad9436d3e2591f42793e37c8ec4cda9ea7835e",
"test_msg_ethereum_verifymessage.py-test_verify_invalid": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getaddress.py-test_bch": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getaddress.py-test_bch_multisig": "f620ed42c682dd55ab7a1b4ac53686c03dd51966ad4bdd018bd24a3305b92148",
"test_msg_getaddress.py-test_btc": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getaddress.py-test_elements": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getaddress.py-test_grs": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getaddress.py-test_ltc": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getaddress.py-test_multisig": "cf79d7965130fccaac260cf5dbda12750a83819668a8f89eca303b63dadbe17e",
"test_msg_getaddress.py-test_multisig_missing": "04ea55eff09fb8fe4f68efe8b6b2c2be442c98ac1c9802ef0681125009e7b5d4",
"test_msg_getaddress.py-test_public_ckd": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getaddress.py-test_tbtc": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getaddress.py::test_crw": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getaddress.py::test_invalid_path": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getaddress.py::test_unknown_path_tt": "0f6e15d265d012a341811965b72e75fbe0e76a17091f0bb2e89caa4a75c550a0",
"test_msg_getaddress_segwit.py-test_show_multisig_3": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getaddress_segwit.py-test_show_segwit": "329134e85a7cc76eaf776c92b7fc3932946d411249661bf9a2d9ce314fcf27f8",
@ -213,6 +239,37 @@
"test_msg_getentropy.py::test_entropy[9]": "a722fa2048fa3102889ec05558d25f837a364ef2a118e85975683e10a56f1356",
"test_msg_getownershipproof.py::test_confirm_ownership_proof": "7724ef59fee121da564b935b5880479c9518d97dc286e2949f13a8a8bdf6fa4a",
"test_msg_getownershipproof.py::test_confirm_ownership_proof_with_data": "1043f54be594bd3180c59c8474ef7ef46be35f99ad5f6890949c38680c097e52",
"test_msg_getownershipproof.py::test_fake_ownership_id": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getownershipproof.py::test_ownership_id": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getownershipproof.py::test_p2wpkh_ownership_proof": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPxnPmH-0049d035": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR6cSu-c96dd28d": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTuT3em-ffe900da": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqjYS4H-d4c03405": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJXTsn-a08fbe99": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3kwaC2-f1a03f2a": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgiX4L4-6a5a123f": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgiy8Zi-d185aae6": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNeR6UE-a2a154d3": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74CaRrRb-15fe2cba": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2EcUi-bde5350d": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey.py::test_invalid_path[Bcash-path5]": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey.py::test_invalid_path[Bitcoin-path0]": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey.py::test_invalid_path[Bitcoin-path2]": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey.py::test_invalid_path[Bitcoin-path3]": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey.py::test_invalid_path[Litecoin-path4]": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey.py::test_invalid_path[Testnet-path1]": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey.py::test_script_type[0-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXFD3YS797-f79a9265": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey.py::test_script_type[3-zpub6qP2VY9x7MxPVi8pUFx6cYMVesgSLeGjdkHecLDsu8-0264ec8a": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey.py::test_script_type[4-ypub6WYmBsV2xgQueQwhduAUQTFzUuXzQ2HEidmRpwKzX7-f699e5f6": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXFD3YS-83938439": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey_curve.py::test_coin_and_curve": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey_curve.py::test_ed25519_public": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e33f5-2d452100": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8c103-903f375c": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad4eeb-52f3ce03": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f46daf-74f2bfd2": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0f778-ffb4454d": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_lisk_getaddress.py::test_lisk_getaddress[m-44h-134h-0h-3685460048641680438L]": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_lisk_getaddress.py::test_lisk_getaddress[m-44h-134h-100h-7191894793645699638L]": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_lisk_getaddress.py::test_lisk_getaddress[m-44h-134h-1h-2178885030141662239L]": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
@ -252,6 +309,7 @@
"test_msg_nem_signtx_transfers.py-test_nem_signtx_simple": "d36a67610b16f835b174a053fe60104a03ea5d49fbd612d73f5d8cdb31fce421",
"test_msg_nem_signtx_transfers.py-test_nem_signtx_unknown_mosaic": "1fd9bf33c3c481d8b76fbdddfc3e8d91df6a1a97661a8f8c4b57cd3df41e83f0",
"test_msg_nem_signtx_transfers.py-test_nem_signtx_xem_as_mosaic": "842307e1734fea44aca9e53e2d76e0c6206348c4461f9eb1a36021bed1f681c8",
"test_msg_ping.py::test_ping": "229a51d6e66ea58927167e84f96d5d4d30dd0ebace0258fcb709f841ce0beb9e",
"test_msg_recoverydevice_bip39_dryrun.py::test_bad_parameters[label-test]": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_recoverydevice_bip39_dryrun.py::test_bad_parameters[language-test]": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_recoverydevice_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
@ -332,15 +390,31 @@
"test_msg_signtx.py-test_change_on_main_chain_allowed": "cfd5c83510c044c456622298138e222aee135a6df607bb6e5603228535f0762f",
"test_msg_signtx.py-test_fee_high_hardfail": "0b0e6938ae67017f876ad56995d5f7131ab5ceee2877b0e3dafcd50b2bf6d4cf",
"test_msg_signtx.py-test_fee_high_warning": "8cb3b31dce25fa36cd5c8322c71611dc7bc9d2290579ffd88dd67d21058bde04",
"test_msg_signtx.py-test_incorrect_input_script_type[0]": "ff8306b910f6886638e30736acd025ff7f45dde3c6648de1f6c6922bc6f590c5",
"test_msg_signtx.py-test_incorrect_input_script_type[2]": "ff8306b910f6886638e30736acd025ff7f45dde3c6648de1f6c6922bc6f590c5",
"test_msg_signtx.py-test_incorrect_output_script_type[0]": "ff8306b910f6886638e30736acd025ff7f45dde3c6648de1f6c6922bc6f590c5",
"test_msg_signtx.py-test_incorrect_output_script_type[1]": "ff8306b910f6886638e30736acd025ff7f45dde3c6648de1f6c6922bc6f590c5",
"test_msg_signtx.py-test_lock_time[1-4294967295]": "d805244ea557c3695101a6f79f13045f22bc16d5608744e0321eab7f3a98d8b0",
"test_msg_signtx.py-test_lock_time[499999999-4294967294]": "23a154e7b40680161bb099cfc6702d75909c222056867515647123573eef1716",
"test_msg_signtx.py-test_lock_time[500000000-4294967294]": "2ac61446c20785e45223a20ae90660905fedf20d2a383a65fcbc1edd5fe87ad1",
"test_msg_signtx.py-test_lots_of_change": "9e143458b399d187b6a3060fc95b998822f5a7ed67d6915610fd02c0ccab791e",
"test_msg_signtx.py-test_lots_of_inputs": "7d02dd952be20b46005af23c8b46a95590529d8e838459e540eca0b058fc32c1",
"test_msg_signtx.py-test_lots_of_outputs": "f9d50f30dbdaeddf1f54e8bf76dce07fa9d40dcb7ef36a908e76123f2151501c",
"test_msg_signtx.py-test_not_enough_funds": "dbaa027aa1f4b08b138a5965245593dab2a662b0f4d88dd28b82a64f88f5d7fe",
"test_msg_signtx.py-test_not_enough_vouts": "a7bbbbcd49edb429d30f5e27fb4e6e83136884d6789e9ddda4477af31180409f",
"test_msg_signtx.py-test_one_one_fee": "f6b6662fa1384f20640522a169575f8ca26185fca8ca3bc2a3a5ccd1fa9d2f68",
"test_msg_signtx.py-test_one_three_fee": "192d74e668c0f4345608da9f9af45f0cc2cb8ea3e532dca826c1da1fdb28c7f9",
"test_msg_signtx.py-test_one_two_fee": "836bc3e93692035e38ef4421d6e9f298d3ec304214c17eb974a0e8ffed406b6e",
"test_msg_signtx.py-test_p2sh": "bac5ead8e28a6439c8f961f07e7d27c3fa82d3dfdbb351640b6f70bb0e1644a5",
"test_msg_signtx.py-test_prevtx_forbidden_fields[branch_id-13]": "d6b003cf299f831a8b64bec15351405858224a05ffe85d266eb42214e4d52491",
"test_msg_signtx.py-test_prevtx_forbidden_fields[expiry-9]": "d6b003cf299f831a8b64bec15351405858224a05ffe85d266eb42214e4d52491",
"test_msg_signtx.py-test_prevtx_forbidden_fields[extra_data-hello world]": "d6b003cf299f831a8b64bec15351405858224a05ffe85d266eb42214e4d52491",
"test_msg_signtx.py-test_prevtx_forbidden_fields[timestamp-42]": "d6b003cf299f831a8b64bec15351405858224a05ffe85d266eb42214e4d52491",
"test_msg_signtx.py-test_prevtx_forbidden_fields[version_group_id-69]": "d6b003cf299f831a8b64bec15351405858224a05ffe85d266eb42214e4d52491",
"test_msg_signtx.py-test_signtx_forbidden_fields[branch_id-13]": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_signtx.py-test_signtx_forbidden_fields[expiry-9]": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_signtx.py-test_signtx_forbidden_fields[timestamp-42]": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_signtx.py-test_signtx_forbidden_fields[version_group_id-69]": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_signtx.py-test_spend_coinbase": "f498aec01de57978d14dd2e02bae2a3d904a1802e06f15be4ed181976af5130d",
"test_msg_signtx.py-test_testnet_big_amount": "5b84d787542e5fa1436db4e768fbac15f92662a6a0deb580012def5a788adf12",
"test_msg_signtx.py-test_testnet_fee_high_warning": "7ae33df914ce2025a3eb26a6a6ad915cd8891b5070cf3318ed1a279288a01251",
@ -391,10 +465,36 @@
"test_msg_signtx_invalid_path.py-test_invalid_path_pass_forkid": "667dcb09b569e5b4e091e6b1ac7e8e057c0c730c931b22f8c0ee64050f3f467b",
"test_msg_signtx_komodo.py-test_one_one_fee_sapling": "14bad8852ee51f6fec12677cced9ffafa0cbae91b4ba94e988a800544072ed21",
"test_msg_signtx_komodo.py-test_one_one_rewards_claim": "751e83d63bf01c6c57047b5e004629d613df75342371cd43a7b4b80a07f4b88d",
"test_msg_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "d72acb396bbc3109054919bddc823e8900bb30b6c41c553922beb449af9bb51d",
"test_msg_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "50b846945367990f0b6bcad9161cb899b265c9540a2578e0f5c39533a7ec0010",
"test_msg_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "d72acb396bbc3109054919bddc823e8900bb30b6c41c553922beb449af9bb51d",
"test_msg_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "97a91ebd2a5f3da369b8309831ce57d0684f4a2363705c36918949400b879b88",
"test_msg_signtx_peercoin.py::test_timestamp_included": "825b9bdf5238c5c6415a254a6bae4b2bd9df8fc5cb31f66f0c20145cb4e60bbb",
"test_msg_signtx_peercoin.py::test_timestamp_missing": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_signtx_peercoin.py::test_timestamp_missing_prevtx": "05b4c00ec4f40bc5f6f4eaff6e0de11dd1f277682be5107a279eccfeb32618b8",
"test_msg_signtx_prevhash.py::test_invalid_prev_hash[None]": "ff8306b910f6886638e30736acd025ff7f45dde3c6648de1f6c6922bc6f590c5",
"test_msg_signtx_prevhash.py::test_invalid_prev_hash[]": "ff8306b910f6886638e30736acd025ff7f45dde3c6648de1f6c6922bc6f590c5",
"test_msg_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "ff8306b910f6886638e30736acd025ff7f45dde3c6648de1f6c6922bc6f590c5",
"test_msg_signtx_prevhash.py::test_invalid_prev_hash[x]": "ff8306b910f6886638e30736acd025ff7f45dde3c6648de1f6c6922bc6f590c5",
"test_msg_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "ff8306b910f6886638e30736acd025ff7f45dde3c6648de1f6c6922bc6f590c5",
"test_msg_signtx_prevhash.py::test_invalid_prev_hash_attack[None]": "4afc2d872a291c0da67f3309f31ad62202864ab3e8eb66483b39215ee87ef1a1",
"test_msg_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "4afc2d872a291c0da67f3309f31ad62202864ab3e8eb66483b39215ee87ef1a1",
"test_msg_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "4afc2d872a291c0da67f3309f31ad62202864ab3e8eb66483b39215ee87ef1a1",
"test_msg_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "4afc2d872a291c0da67f3309f31ad62202864ab3e8eb66483b39215ee87ef1a1",
"test_msg_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "4afc2d872a291c0da67f3309f31ad62202864ab3e8eb66483b39215ee87ef1a1",
"test_msg_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[None]": "8de173b5bba785354c6bf221e6405387f36bb1e9a683ecdba3c43aab98648366",
"test_msg_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "8de173b5bba785354c6bf221e6405387f36bb1e9a683ecdba3c43aab98648366",
"test_msg_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "8de173b5bba785354c6bf221e6405387f36bb1e9a683ecdba3c43aab98648366",
"test_msg_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "8de173b5bba785354c6bf221e6405387f36bb1e9a683ecdba3c43aab98648366",
"test_msg_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "8de173b5bba785354c6bf221e6405387f36bb1e9a683ecdba3c43aab98648366",
"test_msg_signtx_replacement.py::test_attack_fake_ext_input_amount": "ff8306b910f6886638e30736acd025ff7f45dde3c6648de1f6c6922bc6f590c5",
"test_msg_signtx_replacement.py::test_attack_fake_int_input_amount": "ff8306b910f6886638e30736acd025ff7f45dde3c6648de1f6c6922bc6f590c5",
"test_msg_signtx_replacement.py::test_attack_false_internal": "ff8306b910f6886638e30736acd025ff7f45dde3c6648de1f6c6922bc6f590c5",
"test_msg_signtx_replacement.py::test_attack_steal_change": "ff8306b910f6886638e30736acd025ff7f45dde3c6648de1f6c6922bc6f590c5",
"test_msg_signtx_replacement.py::test_p2pkh_fee_bump": "881f6491e9f4417cd747dda2dc0eaafdf1a4769a5e53aa303bb06547d6a9133b",
"test_msg_signtx_replacement.py::test_p2wpkh_finalize": "1147c6996c193b904b72d38def07c692cf48d7bdbe244343c9e98ee0db497d11",
"test_msg_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "f66437cc88d016ddb0b3fd4e6d2c6536d9a1745dfc92ce9cd334c3cbaaefb4a9",
"test_msg_signtx_replacement.py::test_p2wpkh_invalid_signature": "1147c6996c193b904b72d38def07c692cf48d7bdbe244343c9e98ee0db497d11",
"test_msg_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91fb25-124c0968": "a5473b5f3931fb6530a991e45aa32507069a7b402878d1eda2ce6e8be1a673e1",
"test_msg_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f53049ca4-2253fa0b": "a5473b5f3931fb6530a991e45aa32507069a7b402878d1eda2ce6e8be1a673e1",
"test_msg_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b35d3-89bd0d1d": "a5473b5f3931fb6530a991e45aa32507069a7b402878d1eda2ce6e8be1a673e1",
@ -420,7 +520,10 @@
"test_msg_signtx_zcash.py-test_external_presigned": "539b10ad2f3a626a880b9823897ff827a6c30af1dfd041da147bf009fcec2497",
"test_msg_signtx_zcash.py-test_one_one_fee_sapling": "112df2ad84f4a517623eed893b3be809e0ba43e6139fd70b7f94c12f28cc633c",
"test_msg_signtx_zcash.py-test_spend_old_versions": "da64743acaead691ec617cd56886b65453f82a2e3eb78b3f9dc737dbfc4155e6",
"test_msg_signtx_zcash.py-test_v3_not_supported": "ff8306b910f6886638e30736acd025ff7f45dde3c6648de1f6c6922bc6f590c5",
"test_msg_signtx_zcash.py-test_version_group_id_missing": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_stellar_get_address.py-test_stellar_get_address": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_stellar_get_address.py-test_stellar_get_address_fail": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_msg_stellar_get_address.py-test_stellar_get_address_sep": "46a370f6ff6cc90860e2b13eaab201986059227fbf5c841d9c55a21078155aba",
"test_msg_stellar_sign_transaction.py::test_manage_data": "c9d31359eff0a9f014d589dd754583fa1d1cb00c394f1f9b4f4000bd5bf8ae59",
"test_msg_stellar_sign_transaction.py::test_sign_tx_account_merge_op": "3e73ae688128d9df64b4ff9499f8f66b06aed26787d6fdb7189c0268b10ee6cb",
@ -477,7 +580,9 @@
"test_multisig_change.py-test_multisig_external_external": "ddecdadd659b0d1360a6a255c6f9dbf2c5b813039877b76d4062ddab765e1912",
"test_multisig_change.py-test_multisig_mismatch_change": "7cb243b20be31a587dced4aaaf782a2d8487595369dde66aacb1b9a76e89c4fe",
"test_multisig_change.py-test_multisig_mismatch_inputs": "64741bd84c5394e719125c1fbe8c34ef866ac63ca24ee1299e4268c59a199466",
"test_op_return.py-test_nonzero_opreturn": "ff8306b910f6886638e30736acd025ff7f45dde3c6648de1f6c6922bc6f590c5",
"test_op_return.py-test_opreturn": "87907ef9c2f4ce30ac95ad7d0cb3eac66762756e4ace52147bc589d64277f3b1",
"test_op_return.py-test_opreturn_address": "ff8306b910f6886638e30736acd025ff7f45dde3c6648de1f6c6922bc6f590c5",
"test_passphrase_slip39_advanced.py::test_128bit_passphrase": "4d8c7eea0bd6786a070880d94fe288294e570b8d357dd9bc01865a8acc39d143",
"test_passphrase_slip39_advanced.py::test_256bit_passphrase": "4d8c7eea0bd6786a070880d94fe288294e570b8d357dd9bc01865a8acc39d143",
"test_passphrase_slip39_basic.py::test_2of5_passphrase": "54091a6faba4ecc4e40db591bb8861d00464de34b38a31925202f5bc44e4c41c",
@ -488,8 +593,27 @@
"test_reset_backup.py::test_skip_backup_msg[0-backup_flow_bip39]": "913ab51cbefc22938190a86865793e7e99420e9c99d6714ab94c8aba6edab3ea",
"test_reset_backup.py::test_skip_backup_msg[1-backup_flow_slip39_basic]": "189a01dbe3f11061b13562d5773971ec44c0737695bfe1a4dc1c5dc1b3ffd8c0",
"test_reset_backup.py::test_skip_backup_msg[2-backup_flow_slip39_advanced]": "cd6c1248d9ee4d6416c57026a96190a84ac8608af04fd42c9c8c6b7275226aba",
"test_reset_recovery_bip39.py::test_reset_recovery": "75647aa74b2dfe453d1246a04d78e7218b419048f5102907361e719b4784a246",
"test_reset_recovery_slip39_advanced.py::test_reset_recovery": "f2f52b70ce0a3b715ef01aa995dc08d15747ee973340af2f0e5006c68418c304",
"test_reset_recovery_slip39_basic.py::test_reset_recovery": "fce2f11994e2f25ad7d2a79edd313c97d73bc1066f2d0d0d59f073e2469e094f",
"test_sdcard.py::test_sd_format": "6bb7486932a5d38cdbb9b1368ee92aca3fad384115c744feadfade80c1605dd8",
"test_sdcard.py::test_sd_no_format": "f47e897caee95cf98c1b4506732825f853c4b8afcdc2713e38e3b4055973c9ac",
"test_sdcard.py::test_sd_protect_unlock": "52a0a4b847ceab2ef5bc9b22898e14df4e4b703227f4eda9807947702da28af8",
"test_session.py::test_cannot_resume_ended_session": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_session.py::test_clear_session": "b25f5f775ad5cc9194632ea88be08077394d2129e52fcc4536b98b277d91bdbb",
"test_session.py::test_end_session": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_session.py::test_end_session_only_current": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_session.py::test_session_recycling": "54091a6faba4ecc4e40db591bb8861d00464de34b38a31925202f5bc44e4c41c",
"test_session_id_and_passphrase.py::test_cardano_passphrase": "79a7a65ab4fd23dc8fcfe9a2c63c3c2b0b8e78dc2eb0180c782ef9847afdd07a",
"test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "df9891fe51f3810334be5945b4e26e78b77adc76bd3fe0cfab918dcf1e45e5e9",
"test_session_id_and_passphrase.py::test_multiple_passphrases": "72529589f198bbac44ced587153440e28bd8a9116c20b8d0cab2ca576875e0b7",
"test_session_id_and_passphrase.py::test_multiple_sessions": "5a80508a71a9ef64f94762b07636f90e464832f0f4a3102af8fa1a8c69e94586",
"test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "612dad8ab8762162a186ec9279d7de0bdfc589c52b4e4f4eba0545a00f21c3f0",
"test_session_id_and_passphrase.py::test_passphrase_always_on_device": "524d90c68c6f091c2145f571a884a8a168e8af101513966f5e0fbb3859035129",
"test_session_id_and_passphrase.py::test_passphrase_length": "a8858d89288f2160148860fee8938d261c4960732db3b2c874b9899395b9ddc6",
"test_session_id_and_passphrase.py::test_passphrase_missing": "3a92115b6bfb2d53f2445a67c9c5df6b6b5ff97769de98e3fac9e1bf424c5669",
"test_session_id_and_passphrase.py::test_passphrase_on_device": "c9ca2c9cf6dd416dad4de311266690ec2266b551d74f9d3619301305b3dbe81e",
"test_session_id_and_passphrase.py::test_session_enable_passphrase": "b27321ed372b8ade7c4941a80f1f945851046b039a1b43c43a6953106bd1619e",
"test_session_id_and_passphrase.py::test_session_with_passphrase": "a044d7a42229ab7cd74651e03dd64edcceb86d72d50bd63a40336decf0b25d3d",
"test_u2f_counter.py::test_u2f_counter": "7d96a4d262b9d8a2c1158ac1e5f0f7b2c3ed5f2ba9d6235a014320313f9488fe"
}