You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
trezor-firmware/core/src/storage/__init__.py

44 lines
1.4 KiB

from storage import cache, common, device
from trezor import config
def set_current_version() -> None:
device.set_version(common.STORAGE_VERSION_CURRENT)
def wipe() -> None:
config.wipe()
cache.clear_all()
def init_unlocked() -> None:
# Check for storage version upgrade.
version = device.get_version()
if version == common.STORAGE_VERSION_01:
_migrate_from_version_01()
# In FWs <= 2.3.1 'version' denoted whether the device is initialized or not.
# In 2.3.2 we have introduced a new field 'initialized' for that.
if device.is_version_stored() and not device.is_initialized():
common.set_bool(common.APP_DEVICE, device.INITIALIZED, True, public=True)
def reset() -> None:
"""
Wipes storage but keeps the device id unchanged.
"""
device_id = device.get_device_id()
wipe()
common.set(common.APP_DEVICE, device.DEVICE_ID, device_id.encode(), public=True)
def _migrate_from_version_01() -> None:
# Make the U2F counter public and writable even when storage is locked.
# U2F counter wasn't public, so we are intentionally not using storage.device module.
counter = common.get(common.APP_DEVICE, device.U2F_COUNTER)
if counter is not None:
device.set_u2f_counter(int.from_bytes(counter, "big"))
# Delete the old, non-public U2F_COUNTER.
common.delete(common.APP_DEVICE, device.U2F_COUNTER)
set_current_version()