From 1faad192d809081e38880d383491c18c19e3145c Mon Sep 17 00:00:00 2001 From: Martin Milata Date: Thu, 3 Jul 2025 15:04:40 +0200 Subject: [PATCH] feat(core): use random suffix for BLE name when pairing [no changelog] --- .../apps/management/ble/pair_new_device.py | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/core/src/apps/management/ble/pair_new_device.py b/core/src/apps/management/ble/pair_new_device.py index ae155781de..710e83216d 100644 --- a/core/src/apps/management/ble/pair_new_device.py +++ b/core/src/apps/management/ble/pair_new_device.py @@ -2,6 +2,7 @@ import trezorble as ble import trezorui_api from storage import device as storage_device from trezor import utils +from trezor.crypto import random from trezor.ui.layouts import CONFIRMED, raise_if_not_confirmed from trezor.wire import ActionCancelled @@ -13,8 +14,25 @@ def _end_pairing() -> None: ble.stop_advertising() +def _default_ble_name() -> str: + """Return model name and three random letters. + + >>> n1 = _default_ble_name() + >>> n1.startswith(utils.MODE_FULL_NAME) + True + >>> n2 = _default_ble_name() + >>> n2.startswith(utils.MODE_FULL_NAME) + True + >>> n1 == n2 + False + """ + charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + random_chars = "".join(charset[random.uniform(len(charset))] for _ in range(3)) + return f"{utils.MODEL_FULL_NAME} ({random_chars})" + + async def pair_new_device() -> None: - label = storage_device.get_label() or utils.MODEL_FULL_NAME + label = storage_device.get_label() or _default_ble_name() ble.start_advertising(False, label) try: code = await raise_if_not_confirmed(