1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2025-07-13 18:18:08 +00:00
trezor-firmware/core/src/apps/common/safety_checks.py
Martin Milata ac711fb8ee style(core): use more recent type annotation syntax
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
2021-04-01 11:12:30 +02:00

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