mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-07-13 18:18:08 +00:00

https://www.python.org/dev/peps/pep-0585/ - Type Hinting Generics In Standard Collections https://www.python.org/dev/peps/pep-0604/ - Allow writing union types as X | Y
52 lines
1.8 KiB
Python
52 lines
1.8 KiB
Python
import storage.cache
|
|
import storage.device
|
|
from storage.cache import APP_COMMON_SAFETY_CHECKS_TEMPORARY
|
|
from storage.device import SAFETY_CHECK_LEVEL_PROMPT, SAFETY_CHECK_LEVEL_STRICT
|
|
from trezor.messages import SafetyCheckLevel
|
|
|
|
if False:
|
|
from trezor.messages.ApplySettings import EnumTypeSafetyCheckLevel
|
|
|
|
|
|
def read_setting() -> EnumTypeSafetyCheckLevel:
|
|
"""
|
|
Returns the effective safety check level.
|
|
"""
|
|
temporary_safety_check_level: EnumTypeSafetyCheckLevel | None = storage.cache.get(
|
|
APP_COMMON_SAFETY_CHECKS_TEMPORARY
|
|
)
|
|
if temporary_safety_check_level is not None:
|
|
return temporary_safety_check_level
|
|
else:
|
|
stored = storage.device.safety_check_level()
|
|
if stored == SAFETY_CHECK_LEVEL_STRICT:
|
|
return SafetyCheckLevel.Strict
|
|
elif stored == SAFETY_CHECK_LEVEL_PROMPT:
|
|
return SafetyCheckLevel.PromptAlways
|
|
else:
|
|
raise ValueError("Unknown SafetyCheckLevel")
|
|
|
|
|
|
def apply_setting(level: EnumTypeSafetyCheckLevel) -> None:
|
|
"""
|
|
Changes the safety level settings.
|
|
"""
|
|
if level == SafetyCheckLevel.Strict:
|
|
storage.cache.delete(APP_COMMON_SAFETY_CHECKS_TEMPORARY)
|
|
storage.device.set_safety_check_level(SAFETY_CHECK_LEVEL_STRICT)
|
|
elif level == SafetyCheckLevel.PromptAlways:
|
|
storage.cache.delete(APP_COMMON_SAFETY_CHECKS_TEMPORARY)
|
|
storage.device.set_safety_check_level(SAFETY_CHECK_LEVEL_PROMPT)
|
|
elif level == SafetyCheckLevel.PromptTemporarily:
|
|
storage.device.set_safety_check_level(SAFETY_CHECK_LEVEL_STRICT)
|
|
storage.cache.set(APP_COMMON_SAFETY_CHECKS_TEMPORARY, level)
|
|
else:
|
|
raise ValueError("Unknown SafetyCheckLevel")
|
|
|
|
|
|
def is_strict() -> bool:
|
|
"""
|
|
Shorthand for checking whether the effective level is Strict.
|
|
"""
|
|
return read_setting() == SafetyCheckLevel.Strict
|