diff --git a/embed/extmod/modtrezorconfig/modtrezorconfig.c b/embed/extmod/modtrezorconfig/modtrezorconfig.c index 4b368ac71..0c7c7746b 100644 --- a/embed/extmod/modtrezorconfig/modtrezorconfig.c +++ b/embed/extmod/modtrezorconfig/modtrezorconfig.c @@ -170,6 +170,24 @@ STATIC mp_obj_t mod_trezorconfig_set(size_t n_args, const mp_obj_t *args) { } STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_trezorconfig_set_obj, 3, 4, mod_trezorconfig_set); +/// def delete(app: int, key: int, public: bool=False) -> bool: +/// ''' +/// Deletes the given key of the given app. +/// ''' +STATIC mp_obj_t mod_trezorconfig_delete(size_t n_args, const mp_obj_t *args) { + uint8_t app = trezor_obj_get_uint8(args[0]) & 0x7F; + uint8_t key = trezor_obj_get_uint8(args[1]); + if (n_args > 2 && args[2] == mp_const_true) { + app |= 0x80; + } + uint16_t appkey = (app << 8) | key; + if (sectrue != storage_delete(appkey)) { + return mp_const_false; + } + return mp_const_true; +} +STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_trezorconfig_delete_obj, 3, 4, mod_trezorconfig_delete); + /// def wipe() -> None: /// ''' /// Erases the whole config. Use with caution! @@ -190,6 +208,7 @@ STATIC const mp_rom_map_elem_t mp_module_trezorconfig_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_change_pin), MP_ROM_PTR(&mod_trezorconfig_change_pin_obj) }, { MP_ROM_QSTR(MP_QSTR_get), MP_ROM_PTR(&mod_trezorconfig_get_obj) }, { MP_ROM_QSTR(MP_QSTR_set), MP_ROM_PTR(&mod_trezorconfig_set_obj) }, + { MP_ROM_QSTR(MP_QSTR_delete), MP_ROM_PTR(&mod_trezorconfig_delete_obj) }, { MP_ROM_QSTR(MP_QSTR_wipe), MP_ROM_PTR(&mod_trezorconfig_wipe_obj) }, }; STATIC MP_DEFINE_CONST_DICT(mp_module_trezorconfig_globals, mp_module_trezorconfig_globals_table); diff --git a/vendor/trezor-storage b/vendor/trezor-storage index 5dfafc3b8..52a3a46db 160000 --- a/vendor/trezor-storage +++ b/vendor/trezor-storage @@ -1 +1 @@ -Subproject commit 5dfafc3b8785f30b58f6665a21f5c9126e1d9642 +Subproject commit 52a3a46db0ed93848a49597f7582523386db5e74