What changed, and why it matters
This commit adds safety checks during wallet creation to make sure the randomness used to generate the recovery seed is long enough and not obviously broken. It also aborts the setup process cleanly if something arrives at the wrong time. These are defensive hardening changes rather than a fix for a known active attack.
Treat as a defensive hardening commit. Review whether the new minimum entropy requirement is compatible with third-party clients that may supply shorter entropy, and ensure reset_abort() does not leak state or introduce denial-of-service issues.
Security signals we found
Insufficient-entropy validation added to device firmware and client
Internal entropy length check with device halt on mismatch
Client-side checks for constant or repeated internal entropy during entropy-check rounds
Unexpected-message paths now abort the reset state machine
Tests added for insufficient external entropy on both firmware families
Evidence from the diff
The patch hardens Trezor’s reset_device/reset_entropy flow across core (T2/T3) and legacy (T1) firmware plus the Python client library. It enforces that external entropy supplied by the host is at least as long as the requested seed strength (len*8 >= strength), validates the length of internally generated entropy, and adds client-side sanity checks against constant or repeated internal entropy during the entropy-check protocol. It also calls reset_abort() on unexpected-message failures to leave the device in a clean state.
Changed components
core/src/apps/management/reset_device/__init__.pylegacy/firmware/reset.cpython/src/trezorlib/device.pytests/device_tests/reset_recovery/test_reset_bip39_t1.pytests/device_tests/reset_recovery/test_reset_bip39_t2.pytests/ui_tests/fixtures.jsonInspect captured patch +151 / −8
### core/src/apps/management/reset_device/__init__.py
@@ -1,3 +1,4 @@
+from micropython import const
from typing import TYPE_CHECKING, Sequence
import storage
@@ -29,10 +30,11 @@
BAK_T_SLIP39_BASIC_EXT = BackupType.Slip39_Basic_Extendable # global_import_cache
BAK_T_SLIP39_ADVANCED_EXT = BackupType.Slip39_Advanced_Extendable # global_import_cache
_DEFAULT_BACKUP_TYPE = BAK_T_BIP39
+_ENTROPY_SIZE = const(32)
async def reset_device(msg: ResetDevice) -> Success:
- from trezor import config
+ from trezor import config, utils
from trezor.crypto import bip39, random
from trezor.messages import EntropyAck, EntropyRequest, Success
from trezor.pin import render_empty_loader
@@ -85,7 +87,10 @@ async def reset_device(msg: ResetDevice) -> Success:
prev_int_entropy = None
while True:
# generate internal entropy
- int_entropy = random.bytes(32, True)
+ int_entropy = random.bytes(_ENTROPY_SIZE, True)
+ if len(int_entropy) != _ENTROPY_SIZE:
+ utils.halt("Invalid internal entropy")
+
if __debug__:
storage.debug.reset_internal_entropy[:] = int_entropy
@@ -101,6 +106,10 @@ async def reset_device(msg: ResetDevice) -> Success:
EntropyAck,
)
ext_entropy = entropy_ack.entropy
+
+ if len(ext_entropy) * 8 < msg.strength:
+ raise ProcessError("Insufficient external entropy")
+
# For SLIP-39 this is the Encrypted Master Secret
secret = _compute_secret_from_entropy(int_entropy, ext_entropy, msg.strength)
### legacy/firmware/reset.c
@@ -111,13 +111,21 @@ void reset_entropy(const uint8_t *ext_entropy, uint32_t len) {
if (reset_state != RESET_ENTROPY_REQUEST) {
fsm_sendFailure(FailureType_Failure_UnexpectedMessage,
_("Entropy not requested"));
+ reset_abort();
+ return;
+ }
+
+ if (len * 8 < strength) {
+ fsm_sendFailure(FailureType_Failure_ProcessError,
+ _("Insufficient external entropy"));
+ reset_abort();
return;
}
uint8_t secret[SHA256_DIGEST_LENGTH] = {0};
SHA256_CTX ctx = {0};
sha256_Init(&ctx);
- SHA256_UPDATE_BYTES(&ctx, int_entropy, 32);
+ SHA256_UPDATE_BYTES(&ctx, int_entropy, sizeof(int_entropy));
sha256_Update(&ctx, ext_entropy, len);
sha256_Final(&ctx, secret);
reset_mnemonic = mnemonic_from_data(secret, strength / 8);
@@ -137,6 +145,7 @@ void reset_continue(bool finish) {
if (reset_state != RESET_ENTROPY_CHECK_READY) {
fsm_sendFailure(FailureType_Failure_UnexpectedMessage,
_("Entropy check not ready"));
+ reset_abort();
return;
}
@@ -251,8 +260,8 @@ void reset_abort(void) {
#if DEBUG_LINK
uint32_t reset_get_int_entropy(uint8_t *entropy) {
- memcpy(entropy, int_entropy, 32);
- return 32;
+ memcpy(entropy, int_entropy, sizeof(int_entropy));
+ return sizeof(int_entropy);
}
const char *reset_get_word(void) { return current_word; }
### python/src/trezorlib/device.py
@@ -321,8 +321,11 @@ def reset(
)
+ENTROPY_SIZE = 32
+
+
def _get_external_entropy() -> bytes:
- return secrets.token_bytes(32)
+ return secrets.token_bytes(ENTROPY_SIZE)
@workflow(refresh_features=True)
@@ -454,7 +457,12 @@ def _reset_no_entropycheck(
"""
assert msg.entropy_check is False
session.call(msg, expect=messages.EntropyRequest)
- session.call(messages.EntropyAck(entropy=get_entropy()), expect=messages.Success)
+ external_entropy = get_entropy()
+ if len(external_entropy) < ENTROPY_SIZE:
+ raise ValueError(
+ f"External entropy must be at least {ENTROPY_SIZE} bytes, got {len(external_entropy)}"
+ )
+ session.call(messages.EntropyAck(entropy=external_entropy), expect=messages.Success)
def _reset_with_entropycheck(
@@ -502,12 +510,22 @@ def get_xpubs() -> list[tuple[Address, str]]:
def verify_entropy_commitment(
internal_entropy: bytes | None,
+ prev_internal_entropy: bytes | None,
external_entropy: bytes,
entropy_commitment: bytes | None,
xpubs: list[tuple[Address, str]],
) -> None:
if internal_entropy is None or entropy_commitment is None:
raise TrezorException("Invalid entropy check response.")
+ # Sanity-check the internal entropy the device revealed.
+ if len(internal_entropy) != ENTROPY_SIZE:
+ raise TrezorException(
+ f"Internal entropy must be {ENTROPY_SIZE} bytes, got {len(internal_entropy)}."
+ )
+ if internal_entropy == internal_entropy[:1] * ENTROPY_SIZE:
+ raise TrezorException("Internal entropy is a constant byte pattern.")
+ if internal_entropy == prev_internal_entropy:
+ raise TrezorException("Internal entropy is a repeat of the previous round.")
calculated_commitment = hmac.HMAC(
key=internal_entropy, msg=b"", digestmod=hashlib.sha256
).digest()
@@ -525,10 +543,15 @@ def verify_entropy_commitment(
xpubs = []
resp = session.call(reset_msg, expect=messages.EntropyRequest)
entropy_commitment = resp.entropy_commitment
+ prev_internal_entropy = None
while True:
# provide external entropy for this round
external_entropy = get_entropy()
+ if len(external_entropy) < ENTROPY_SIZE:
+ raise ValueError(
+ f"External entropy must be at least {ENTROPY_SIZE} bytes, got {len(external_entropy)}"
+ )
session.call(
messages.EntropyAck(entropy=external_entropy),
expect=messages.EntropyCheckReady,
@@ -555,10 +578,15 @@ def verify_entropy_commitment(
# Check the entropy commitment from the previous round.
verify_entropy_commitment(
- resp.prev_entropy, external_entropy, entropy_commitment, xpubs
+ resp.prev_entropy,
+ prev_internal_entropy,
+ external_entropy,
+ entropy_commitment,
+ xpubs,
)
# Update the entropy commitment for the next round.
entropy_commitment = resp.entropy_commitment
+ prev_internal_entropy = resp.prev_entropy
# TODO when we grow an API for auto-opening an empty passphrase session,
# we should run the following piece:
### tests/device_tests/reset_recovery/test_reset_bip39_t1.py
@@ -25,6 +25,7 @@
from trezorlib.debuglink import DebugLink
from trezorlib.debuglink import DebugSession as Session
from trezorlib.debuglink import TrezorTestContext
+from trezorlib.exceptions import TrezorFailure
from trezorlib.testing.common import BRGeneratorType
from trezorlib.tools import parse_path
@@ -341,6 +342,29 @@ def test_entropy_check(session: Session):
)
+@pytest.mark.setup_client(uninitialized=True)
+@pytest.mark.parametrize("entropy_check", [True, False])
+def test_insufficient_external_entropy(session: Session, entropy_check: bool):
+ strength = 128
+ with session.test_ctx:
+ session.call(
+ messages.ResetDevice(
+ strength=strength,
+ pin_protection=False,
+ passphrase_protection=False,
+ skip_backup=True,
+ backup_type=messages.BackupType.Bip39,
+ entropy_check=entropy_check,
+ ),
+ expect=messages.EntropyRequest,
+ )
+
+ # Provide external entropy that is one byte short of the required strength.
+ ext_entropy = EXTERNAL_ENTROPY[: strength // 8 - 1]
+ with pytest.raises(TrezorFailure, match="Insufficient external entropy"):
+ session.call(messages.EntropyAck(entropy=ext_entropy))
+
+
@pytest.mark.setup_client(uninitialized=True)
def test_no_entropy_check(session: Session):
with session.test_ctx as client:
### tests/device_tests/reset_recovery/test_reset_bip39_t2.py
@@ -321,6 +321,29 @@ def test_entropy_check(session: Session):
)
+@pytest.mark.setup_client(uninitialized=True)
+@pytest.mark.parametrize("entropy_check", [True, False])
+def test_insufficient_external_entropy(session: Session, entropy_check: bool):
+ strength = 128
+ with session.test_ctx:
+ session.call(
+ messages.ResetDevice(
+ strength=strength,
+ pin_protection=False,
+ passphrase_protection=False,
+ skip_backup=True,
+ backup_type=messages.BackupType.Bip39,
+ entropy_check=entropy_check,
+ ),
+ expect=messages.EntropyRequest,
+ )
+
+ # Provide external entropy that is one byte short of the required strength.
+ ext_entropy = EXTERNAL_ENTROPY[: strength // 8 - 1]
+ with pytest.raises(TrezorFailure, match="Insufficient external entropy"):
+ session.call(messages.EntropyAck(entropy=ext_entropy))
+
+
@pytest.mark.setup_client(uninitialized=True)
def test_no_entropy_check(session: Session):
with session.test_ctx as client:
### tests/ui_tests/fixtures.json
@@ -662,6 +662,8 @@
"T1B1_en_reset_recovery-test_reset_bip39_t1.py::test_already_initialized": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"T1B1_en_reset_recovery-test_reset_bip39_t1.py::test_entropy_check": "b63a40ea5f6d8c59a2b54db8f5f01d0aaa4b0dea7c91ddd1bd40489720ae729c",
"T1B1_en_reset_recovery-test_reset_bip39_t1.py::test_failed_pin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+"T1B1_en_reset_recovery-test_reset_bip39_t1.py::test_insufficient_external_entropy[False]": "b63a40ea5f6d8c59a2b54db8f5f01d0aaa4b0dea7c91ddd1bd40489720ae729c",
+"T1B1_en_reset_recovery-test_reset_bip39_t1.py::test_insufficient_external_entropy[True]": "b63a40ea5f6d8c59a2b54db8f5f01d0aaa4b0dea7c91ddd1bd40489720ae729c",
"T1B1_en_reset_recovery-test_reset_bip39_t1.py::test_no_entropy_check": "b63a40ea5f6d8c59a2b54db8f5f01d0aaa4b0dea7c91ddd1bd40489720ae729c",
"T1B1_en_reset_recovery-test_reset_bip39_t1.py::test_reset_device_128": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"T1B1_en_reset_recovery-test_reset_bip39_t1.py::test_reset_device_192": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
@@ -2525,6 +2527,8 @@
"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "f2b80196c81ce473b7f24f16f6192ac76d9d2ca23fb0b40053c00d02b53d5111",
"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "21fd9c2dd3e5b1c30ebc4a3c54972eb0ac6c2dfb4929c4ac88802493449dc8d7",
"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "2864a3169bdff4a2ad204bc8313629cd1f7d9ea266e250bab9402fbea726da2f",
+"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[False]": "491193f71704f4154eed539bb8419c91418d93c6fff2fae35c06f2c7de2c8317",
+"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[True]": "491193f71704f4154eed539bb8419c91418d93c6fff2fae35c06f2c7de2c8317",
"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "21fd9c2dd3e5b1c30ebc4a3c54972eb0ac6c2dfb4929c4ac88802493449dc8d7",
"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device[_try_to_cancel]": "ad5e162bb4076fb69f673ee0e432214a9d776a356d780ae3ee6092ae2e05794f",
"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device[normal]": "ad5e162bb4076fb69f673ee0e432214a9d776a356d780ae3ee6092ae2e05794f",
@@ -4355,6 +4359,8 @@
"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "efeaf51fe18b983e9b1a6947a939ad305a92e57798fe07110bb61c0f65755881",
"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "771b2c39945dfb841b7a1b19412f515ab7eb57f7462a29126d87eaed9c99b4d6",
"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "512ad513162ee1000584cb76721a4c0160e9eac38dc74befed4633af2d8e48c6",
+"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[False]": "a596b0b36c5e5ec1c1d6e1ad45dc9976f72f3eab65d6618cdc3735e45ba1a5ad",
+"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[True]": "a596b0b36c5e5ec1c1d6e1ad45dc9976f72f3eab65d6618cdc3735e45ba1a5ad",
"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "771b2c39945dfb841b7a1b19412f515ab7eb57f7462a29126d87eaed9c99b4d6",
"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device[_try_to_cancel]": "bd8df141ce94bc278280065a2bc92860a7442ec72b14e54a4d3148fea6fba15d",
"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device[normal]": "bd8df141ce94bc278280065a2bc92860a7442ec72b14e54a4d3148fea6fba15d",
@@ -6185,6 +6191,8 @@
"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "8aa7c68cd09e700e8c6903dcfc39c4a66214481c12c34dc56762829478399b79",
"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "7ab9b15c2c71b7353cd8201f3bf273ae1720ef8fd841829427afa18c996e0d4d",
"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "df7b18621e1a9cacb05b7ebedab5976ba3a02d356900ef28749fed011524c59f",
+"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[False]": "84f493be9ff0e30eb9d2a352e96a83d5a44b559ee072d9e8a3f9d53521516f0a",
+"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[True]": "84f493be9ff0e30eb9d2a352e96a83d5a44b559ee072d9e8a3f9d53521516f0a",
"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "7ab9b15c2c71b7353cd8201f3bf273ae1720ef8fd841829427afa18c996e0d4d",
"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device[_try_to_cancel]": "08ca82a70e631304668103f97021fe5f473e42f4e9eb3ceeeffa4f0f64deca16",
"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device[normal]": "08ca82a70e631304668103f97021fe5f473e42f4e9eb3ceeeffa4f0f64deca16",
@@ -8033,6 +8041,8 @@
"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "17d836396f272c01cafa175aa87b0c076aedf7698c935d1921c7d3d7e8911903",
"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "76301a89797012d189070184b85278278c058ea23856e7dfed34b81de2b25921",
"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "d75db248207dfd9cc002db41784f9a011a3379ece2a8b1048ae7ad618d1cc271",
+"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[False]": "b32020336017a1fc31e0b35b3d595525c6bf56808e4a8036e1b331879c7eaa59",
+"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[True]": "b32020336017a1fc31e0b35b3d595525c6bf56808e4a8036e1b331879c7eaa59",
"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "76301a89797012d189070184b85278278c058ea23856e7dfed34b81de2b25921",
"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device[_try_to_cancel]": "6a8ea582ce1150f2c2c8b9eb2381250355eaa27869445087e8c4daa813e7c6dd",
"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device[normal]": "6a8ea582ce1150f2c2c8b9eb2381250355eaa27869445087e8c4daa813e7c6dd",
@@ -9863,6 +9873,8 @@
"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "7e5a99a4b6aad4cdf7a9f9aecf483faa381108ee2108efaba88f261e29ac1f8a",
"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "03714da593d57c2adbbb023d3ac0279257084ab515f2ec09aaa9ae1bfeee6f83",
"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "f5cc4f90565460604a0fa70c34907c2ead1ca35efd4d4bc99451adf0edcb5c2c",
+"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[False]": "57ea40ba5cc2ca876d759372d8723493efe69a93f08ac57e4f83dc0e2195ae40",
+"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[True]": "57ea40ba5cc2ca876d759372d8723493efe69a93f08ac57e4f83dc0e2195ae40",
"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "03714da593d57c2adbbb023d3ac0279257084ab515f2ec09aaa9ae1bfeee6f83",
"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device[_try_to_cancel]": "81784aa387e862441569a2b5f288074550197f22e35feffabd89a1bd794d9271",
"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device[normal]": "81784aa387e862441569a2b5f288074550197f22e35feffabd89a1bd794d9271",
@@ -11693,6 +11705,8 @@
"T2T1_pt_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "020b255e04b59e53d2aa87ae960038f4538d350de28df15a1ac41b376e9d04f2",
"T2T1_pt_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "b1e8f5cdcd2056f7da5d4dcae9bbaaf9a5dd25213c678c36ba00e2d17995769e",
"T2T1_pt_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "9345a044a923d37e26e310ebb7b29bd998f47fbad640953815330eed42d79059",
+"T2T1_pt_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[False]": "cb7d2712816886438e1272774d4ef11e4d8f6d4c5a90b11367cc251e21ca1a30",
+"T2T1_pt_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[True]": "cb7d2712816886438e1272774d4ef11e4d8f6d4c5a90b11367cc251e21ca1a30",
"T2T1_pt_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "b1e8f5cdcd2056f7da5d4dcae9bbaaf9a5dd25213c678c36ba00e2d17995769e",
"T2T1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device[_try_to_cancel]": "e8b199adf20e192c2a6914f1b1d35e5dd5192d51c591d3fcc489dfbccfc3f668",
"T2T1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device[normal]": "e8b199adf20e192c2a6914f1b1d35e5dd5192d51c591d3fcc489dfbccfc3f668",
@@ -13763,6 +13777,8 @@
"T3B1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "aec89f6952811bcfa54db3842b2e2e24d7ae162a65bf19424b4e6b6620fe70bb",
"T3B1_cs_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "8ffdadad2dbbd8da641b1d1d20616215eb39a0094d820ec0ee6bbb67f8db50f2",
"T3B1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "b948440aa5cb953bfe65f86cb40dad86365172961db6e12cb0084878550d4357",
+"T3B1_cs_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[False]": "10e758b5d5765f8fc9afa0d24721f0afc82b153b06aa36632bdd4b6c343c14a1",
+"T3B1_cs_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[True]": "10e758b5d5765f8fc9afa0d24721f0afc82b153b06aa36632bdd4b6c343c14a1",
"T3B1_cs_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "8ffdadad2dbbd8da641b1d1d20616215eb39a0094d820ec0ee6bbb67f8db50f2",
"T3B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device[_try_to_cancel]": "51be938a3da722abcf43d063675d89260bc5e07d8c0725c0795cb2fa57ccb6ae",
"T3B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device[normal]": "51be938a3da722abcf43d063675d89260bc5e07d8c0725c0795cb2fa57ccb6ae",
@@ -15532,6 +15548,8 @@
"T3B1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "14dfefb39e3707b5294815085c5d94626e4e632f7fd9ca60df4b28e57d015dde",
"T3B1_de_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "cf1dce4b86a13213a545c9b1d5207986fa83e5ac2ce2f89650918bd7ad0f538e",
"T3B1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "5557766f28052a7d7383cf57c1e7dadae6dcbacd137dad9b1f71b4abf130f80d",
+"T3B1_de_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[False]": "7c2e1fcdbc40cf5a25f10bb07218c34306a035db386e01762dee551997fb1c47",
+"T3B1_de_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[True]": "7c2e1fcdbc40cf5a25f10bb07218c34306a035db386e01762dee551997fb1c47",
"T3B1_de_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "cf1dce4b86a13213a545c9b1d5207986fa83e5ac2ce2f89650918bd7ad0f538e",
"T3B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device[_try_to_cancel]": "06daf3d741446fee88d9ff7ac32e4dbc55250037afac11cc8ac45f195792b44e",
"T3B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device[normal]": "06daf3d741446fee88d9ff7ac32e4dbc55250037afac11cc8ac45f195792b44e",
@@ -17301,6 +17319,8 @@
"T3B1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "7945fdf0623a34efada654fe62a57fa06c6ab0cf4383bc14c6b7acd594b10596",
"T3B1_en_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "5405190d95ef5eebdac4783e1c199cb1cf45b7dfb6ef1d38ab356bf9b676f7ed",
"T3B1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "7573e5fdcf90b4fd4e1f14aec29d40d05eff1599f6143dd92589e0ba5f1cd1b9",
+"T3B1_en_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[False]": "cf3b6762bd4a8b40095b873e9532ccb455f42b7af380917ed8f28c2d5e50e85b",
+"T3B1_en_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[True]": "cf3b6762bd4a8b40095b873e9532ccb455f42b7af380917ed8f28c2d5e50e85b",
"T3B1_en_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "5405190d95ef5eebdac4783e1c199cb1cf45b7dfb6ef1d38ab356bf9b676f7ed",
"T3B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device[_try_to_cancel]": "f3a3af4dc52e38f8c10e39e2a650a21151ebedee292351c093dcce1659d194ac",
"T3B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device[normal]": "f3a3af4dc52e38f8c10e39e2a650a21151ebedee292351c093dcce1659d194ac",
@@ -19070,6 +19090,8 @@
"T3B1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "1c43a01a3864c17b781e3a68121bb7c4378f858ab5c4db5b3d012f138eba5fb8",
"T3B1_es_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "698f6b0e948bdd2569994a669eaa1d5b096f440c6cac0671114e3bb168cecd2f",
"T3B1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "a2975bbda815201675f5d4f81b1aa1d1a0c350386f3cc42fe3af894ca28e3cb1",
+"T3B1_es_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[False]": "c85925be326e8d88b551d3a9a6ea147e9b5bf67c3dcf35caf8f8a596d03a3882",
+"T3B1_es_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[True]": "c85925be326e8d88b551d3a9a6ea147e9b5bf67c3dcf35caf8f8a596d03a3882",
"T3B1_es_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "698f6b0e948bdd2569994a669eaa1d5b096f440c6cac0671114e3bb168cecd2f",
"T3B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device[_try_to_cancel]": "1ff34a1ffa80013fa09f2ae52064e09bdc08ab12900dab401b877c94e92a84b8",
"T3B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device[normal]": "1ff34a1ffa80013fa09f2ae52064e09bdc08ab12900dab401b877c94e92a84b8",
@@ -20839,6 +20861,8 @@
"T3B1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "979886e5de665a0a5bd752457a29ad2bd0aad9d94702754cb351dc7d31979b42",
"T3B1_fr_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "6c4d6d6c296a2969bd835824f9dd1331d82c65b78d12e1800ed3b9f0fbac03ff",
"T3B1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "9697ea23059bec59c78f96ce525e1ebf266965f318d36c9d704f74caeab91f7b",
+"T3B1_fr_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[False]": "472eda4aca3a823ffdad386942cf2a73fbba7653d13827f83387d5c18e7ffce5",
+"T3B1_fr_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[True]": "472eda4aca3a823ffdad386942cf2a73fbba7653d13827f83387d5c18e7ffce5",
"T3B1_fr_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "6c4d6d6c296a2969bd835824f9dd1331d82c65b78d12e1800ed3b9f0fbac03ff",
"T3B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device[_try_to_cancel]": "b8917b68223a8ef6339ef05ac44173f6183c8f0455272e3c22fff1b2d88dbeb0",
"T3B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device[normal]": "b8917b68223a8ef6339ef05ac44173f6183c8f0455272e3c22fff1b2d88dbeb0",
@@ -22608,6 +22632,8 @@
"T3B1_pt_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "bbd866375fe164eb4caaddceb8a49d710b09ad01ca2cf67a0006d3a0d3ecb121",
"T3B1_pt_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "168098e10d3bb1238171a8e03cf148aaddab28dc3ff95d36f0b582a9f4584919",
"T3B1_pt_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "15a580e7c7033eca5b72ac44728db03cc2737de72f76c89a50c1dd92213d2ff2",
+"T3B1_pt_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[False]": "f5f86267b53bd157033709a92cd206a09cd659ee9c9baae9fcddf2fbab8698c6",
+"T3B1_pt_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[True]": "f5f86267b53bd157033709a92cd206a09cd659ee9c9baae9fcddf2fbab8698c6",
"T3B1_pt_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "168098e10d3bb1238171a8e03cf148aaddab28dc3ff95d36f0b582a9f4584919",
"T3B1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device[_try_to_cancel]": "dc9cf03106f89929983961e57d440b08b01fdcf03962015fd2e3b631d11cdf48",
"T3B1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device[normal]": "dc9cf03106f89929983961e57d440b08b01fdcf03962015fd2e3b631d11cdf48",
@@ -24774,6 +24800,8 @@
"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "9c20243bc5dacf2442af5a8778b66a0ab7cb978e11c02fec371f109fbc9d55f6",
"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "497f609dfbfc50d18ca062835e0d7840bfbf2e8b566081485219dc1a0b1257c0",
"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "ac01233d7ac932ad92255117bfe3e60a3bde3dd25e7459868198e5afe7f83081",
+"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[False]": "4b120c40b53c8151f750a3bd0a9ce27f508e39868af9258259ae051ff3007625",
+"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[True]": "4b120c40b53c8151f750a3bd0a9ce27f508e39868af9258259ae051ff3007625",
"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "497f609dfbfc50d18ca062835e0d7840bfbf2e8b566081485219dc1a0b1257c0",
"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device[_try_to_cancel]": "46ae5eb068b72d7f8438794c865899544e9aa899ed13bc0abc0c67cfccacd697",
"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device[normal]": "46ae5eb068b72d7f8438794c865899544e9aa899ed13bc0abc0c67cfccacd697",
@@ -26578,6 +26606,8 @@
"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "68c146f13417be0845fee20b1d8de4a05e0844608c2efb3cfae9f573be39f0c4",
"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "791616229c1d667b6a9ded945f004c0b39d1a9a7e44202cab8d5b55fd51fb9ed",
"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "45a97819bbf7278ff87c35d83d963b260a559ac0d566a85cec625006ca29f3c7",
+"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[False]": "48f3eb8a6d7577987e983a2324689cdb770a662c865780eb5dd57d7a38b2ad63",
+"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[True]": "48f3eb8a6d7577987e983a2324689cdb770a662c865780eb5dd57d7a38b2ad63",
"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "791616229c1d667b6a9ded945f004c0b39d1a9a7e44202cab8d5b55fd51fb9ed",
"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device[_try_to_cancel]": "ce3e26c8e485a5527ebf9615d91e7faf8a0424c5e9365ddf80c36520df7df317",
"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device[normal]": "ce3e26c8e485a5527ebf9615d91e7faf8a0424c5e9365ddf80c36520df7df317",
@@ -28382,6 +28412,8 @@
"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "0064e8a52b9bff0c2a31432fa781b800afb21e8910d60f303671bdfc8d8425fc",
"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "5336136eeaa51563b4796135d438c3a7e8e51c7e0dcb223894df322a30a222ea",
"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "7b5fb22b304d7be58de633faa3d31a1d66bbe894bed0b19762a2f106301767ae",
+"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[False]": "d3c340538319351d11ac3ae6952ee2dee810d78d34c9af6d3b328a3ca5988e77",
+"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[True]": "d3c340538319351d11ac3ae6952ee2dee810d78d34c9af6d3b328a3ca5988e77",
"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "5336136eeaa51563b4796135d438c3a7e8e51c7e0dcb223894df322a30a222ea",
"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device[_try_to_cancel]": "d3061516b41564feaaf9e74396bc5319ba3e23bba040e053cdcb2b9d904e0703",
"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device[normal]": "d3061516b41564feaaf9e74396bc5319ba3e23bba040e053cdcb2b9d904e0703",
@@ -30186,6 +30218,8 @@
"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "41b9c9e85d64891dcfd03d675df77c533f035a2d191b161144d00afab69a589d",
"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "9a652d51a6d359b74868532abf85952fc24bc0c2f093371c87897d968ab3a8db",
"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "6104fb036413cc12b78ab52197fbb5642b72e5bf6b9884464b1b0b806de2f3ca",
+"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[False]": "c8a32db31b2b791982a548f22f6d8464ae7c6378370ea23216242c76c6ebb97c",
+"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[True]": "c8a32db31b2b791982a548f22f6d8464ae7c6378370ea23216242c76c6ebb97c",
"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "9a652d51a6d359b74868532abf85952fc24bc0c2f093371c87897d968ab3a8db",
"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device[_try_to_cancel]": "5299277edc228413251d86bb15373da8e9bf79392eb66ac4f7d54940380491b0",
"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device[normal]": "5299277edc228413251d86bb15373da8e9bf79392eb66ac4f7d54940380491b0",
@@ -31990,6 +32024,8 @@
"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "116c64aa168d12181b7a5317677ddf135d739fdac22d38ff08571dc3301c2f47",
"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "15ca8f2fabfb1ebb2329062a6d306e4b5ca978c001f3a75dc4f34efd4080ee4f",
"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "8da2e6378395b5302ee49776eac9b1095ae19d0d9aeecc7f53972145b980d7a2",
+"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[False]": "6b9e3638b783f4b4406d448849864c5d9ccf16b42afc178abc3c6a6c12ef0f5d",
+"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[True]": "6b9e3638b783f4b4406d448849864c5d9ccf16b42afc178abc3c6a6c12ef0f5d",
"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "15ca8f2fabfb1ebb2329062a6d306e4b5ca978c001f3a75dc4f34efd4080ee4f",
"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device[_try_to_cancel]": "84c09d65d578ec4ec66267f0041cb8eb01c1e118985a6c0ca1d905e5568c9c9d",
"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device[normal]": "84c09d65d578ec4ec66267f0041cb8eb01c1e118985a6c0ca1d905e5568c9c9d",
@@ -33794,6 +33830,8 @@
"T3T1_pt_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "14256cd1b801d1b67a37de1198d61a80d342f39e5c5d6fa991ec7fb526d683be",
"T3T1_pt_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "9440046e733005fb8e749b0f151c53fb2fdcaafeb841fd79b014bf1b95fb6cf3",
"T3T1_pt_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "5360c750125217b9c534aed36cbff677dcbd10dbe7b7abe46394b7a9b02ddfda",
+"T3T1_pt_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[False]": "700a7c1672f49cf1f04519ad5f3f4c7e642cd0f5ee9fb8c59896ce0487435b6c",
+"T3T1_pt_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[True]": "700a7c1672f49cf1f04519ad5f3f4c7e642cd0f5ee9fb8c59896ce0487435b6c",
"T3T1_pt_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "9440046e733005fb8e749b0f151c53fb2fdcaafeb841fd79b014bf1b95fb6cf3",
"T3T1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device[_try_to_cancel]": "02ca12759799790b2b586ea27d78ffd521a7d7e35c1f6d0f51cad2158882f5a2",
"T3T1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device[normal]": "02ca12759799790b2b586ea27d78ffd521a7d7e35c1f6d0f51cad2158882f5a2",
@@ -36253,6 +36291,8 @@
"T3W1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "2b06a6c36a96faaad9d1237b47e37374c5452331ad8fa3738accbd2e09ec1500",
"T3W1_cs_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "1989841313e656d3c980bdcbbcf6a50865686d7f904224c273fd04c40cb85f36",
"T3W1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "7f5efd4639ae8105a2c4907b22336a74ed94a5cbccf91f6818d67c57f610b6b4",
+"T3W1_cs_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[False]": "c35908a91cc2a314d3915b2c5856b264689e5b236951304ac4c14ba83f019dda",
+"T3W1_cs_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[True]": "c35908a91cc2a314d3915b2c5856b264689e5b236951304ac4c14ba83f019dda",
"T3W1_cs_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "1989841313e656d3c980bdcbbcf6a50865686d7f904224c273fd04c40cb85f36",
"T3W1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device[_try_to_cancel]": "8d6238c96c91e2fb07c1a30bb13b474f57b70cd787c6902ec45ad4d94f115d28",
"T3W1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device[normal]": "8d6238c96c91e2fb07c1a30bb13b474f57b70cd787c6902ec45ad4d94f115d28",
@@ -38092,6 +38132,8 @@
"T3W1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "32c06c9f4ef6d91d183e5480b273a0aec9bd56572528ddbfb70b7cd609cbef50",
"T3W1_de_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "def3dfde3c2e0a7f50888d6e180aebbc3528014de6dc3444c1eea97d2bb0fc2d",
"T3W1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "9ca85e7bd541adef8c82c56f698c0e479b30c1c12a9f77746049cad765d00ea3",
+"T3W1_de_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[False]": "de86c830a4a747af89a290cd39dafded323e077a258e0d93c8e161611255b7fc",
+"T3W1_de_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[True]": "de86c830a4a747af89a290cd39dafded323e077a258e0d93c8e161611255b7fc",
"T3W1_de_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "def3dfde3c2e0a7f50888d6e180aebbc3528014de6dc3444c1eea97d2bb0fc2d",
"T3W1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device[_try_to_cancel]": "cf985274db9767f8203e8371e3878da05def4e6b98a43912d3933365c0db1885",
"T3W1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device[normal]": "cf985274db9767f8203e8371e3878da05def4e6b98a43912d3933365c0db1885",
@@ -39931,6 +39973,8 @@
"T3W1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "90812f196e8c35dc7f35cb5a9a0e553c8fc6a610812d85b9f166e90b3f1c8b59",
"T3W1_en_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "64c637f77f70878c2564e08de2e18e796e47100c48851e2c5c3bd27087f6cc0a",
"T3W1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "c99ff7ebe61b2f3268a43acee57fe1ea31b92929c8bebb4b54e1cae0c52a8f76",
+"T3W1_en_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[False]": "9774a0ce1dca4f7ef32c1d1ffeb56b0e4142515869acce412ff0a5de5c846ed4",
+"T3W1_en_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[True]": "9774a0ce1dca4f7ef32c1d1ffeb56b0e4142515869acce412ff0a5de5c846ed4",
"T3W1_en_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "64c637f77f70878c2564e08de2e18e796e47100c48851e2c5c3bd27087f6cc0a",
"T3W1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device[_try_to_cancel]": "8534ee8aa6585454b04c043df7729fa55ba354b7ad83dc2ca546fb2302b7cdcd",
"T3W1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device[normal]": "8534ee8aa6585454b04c043df7729fa55ba354b7ad83dc2ca546fb2302b7cdcd",
@@ -41770,6 +41814,8 @@
"T3W1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "ddbd1412a9f69aea1c41c375a2ec0647411a0e487ec5c1ee55e24505dfc34e29",
"T3W1_es_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "c61239df4c656b9fc394000829bb97b45f7b851ed6ee02863afddf9263e27844",
"T3W1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "0c8ad624d6049084d20046967c4ca9c7889f691e229b85e6623ed085773c0e02",
+"T3W1_es_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[False]": "d0a0bf1a96e2369d62608a05c25e01c9d1a8d3cfa679ae80637153e5d56548e7",
+"T3W1_es_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[True]": "d0a0bf1a96e2369d62608a05c25e01c9d1a8d3cfa679ae80637153e5d56548e7",
"T3W1_es_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "c61239df4c656b9fc394000829bb97b45f7b851ed6ee02863afddf9263e27844",
"T3W1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device[_try_to_cancel]": "92109d11eb7c6332312fc524706c7b78f0313fa91f07b5c4c6680f1e714f760d",
"T3W1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device[normal]": "92109d11eb7c6332312fc524706c7b78f0313fa91f07b5c4c6680f1e714f760d",
@@ -43609,6 +43655,8 @@
"T3W1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "a392ca1dea666647fb2d6edfcd90e4e3cad6ab0e294ca85cda7db478214a6a81",
"T3W1_fr_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "9312b84c88aadbb15dd01b8313fff93df428a27c8d0483ab641b1bcb5d1e903b",
"T3W1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "2f8d87b5c3bc7eaa51b69c7a47f9147c9dc7879c69b8a78c5b5f4318b3792998",
+"T3W1_fr_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[False]": "491c86cf9d0bbd24f862e239030dcb9dc766bd3a413fd8e4007710e001de1843",
+"T3W1_fr_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[True]": "491c86cf9d0bbd24f862e239030dcb9dc766bd3a413fd8e4007710e001de1843",
"T3W1_fr_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "9312b84c88aadbb15dd01b8313fff93df428a27c8d0483ab641b1bcb5d1e903b",
"T3W1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device[_try_to_cancel]": "11eb5e33bb78618c3184d78ef385d59390b50f23e5a5637ef61c62dcc78367d1",
"T3W1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device[normal]": "11eb5e33bb78618c3184d78ef385d59390b50f23e5a5637ef61c62dcc78367d1",
@@ -45453,6 +45501,8 @@
"T3W1_pt_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "6fb22dca4b252028ed3f91db1fb746e30d12aece0a74e1bcc4abef605a3a9026",
"T3W1_pt_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "f7ef8f684b808c777606c044082713602a39bbd3071c8b46e4620eaafd31beb1",
"T3W1_pt_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "7353c232d8c2d4f946f475a52a0d35432718640a98cc24d7df0889822dcc489d",
+"T3W1_pt_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[False]": "265537ae0578602a67521bf17dc9d440732c83d33f6b5c21046b494dc128c15b",
+"T3W1_pt_reset_recovery-test_reset_bip39_t2.py::test_insufficient_external_entropy[True]": "265537ae0578602a67521bf17dc9d440732c83d33f6b5c21046b494dc128c15b",
"T3W1_pt_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "f7ef8f684b808c777606c044082713602a39bbd3071c8b46e4620eaafd31beb1",
"T3W1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device[_try_to_cancel]": "381142b023b73149c247d4e7d4d227e3cb94ca0677117f54916c050fe34587ed",
"T3W1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device[normal]": "381142b023b73149c247d4e7d4d227e3cb94ca0677117f54916c050fe34587ed",Why this scored 61/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.