diff --git a/embed/extmod/modtrezorconfig/modtrezorconfig.c b/embed/extmod/modtrezorconfig/modtrezorconfig.c index 5d84d655b..6dbe13e5a 100644 --- a/embed/extmod/modtrezorconfig/modtrezorconfig.c +++ b/embed/extmod/modtrezorconfig/modtrezorconfig.c @@ -17,6 +17,8 @@ * along with this program. If not, see . */ +#include + #include "py/runtime.h" #include "py/mphal.h" #include "py/objstr.h" @@ -31,9 +33,13 @@ STATIC mp_obj_t ui_wait_callback = mp_const_none; -STATIC secbool wrapped_ui_wait_callback(uint32_t wait, uint32_t progress) { +STATIC secbool wrapped_ui_wait_callback(uint32_t wait, uint32_t progress, const char* message) { if (mp_obj_is_callable(ui_wait_callback)) { - if (mp_call_function_2(ui_wait_callback, mp_obj_new_int(wait), mp_obj_new_int(progress)) == mp_const_true) { + mp_obj_t args[3]; + args[0] = mp_obj_new_int(wait); + args[1] = mp_obj_new_int(progress); + args[2] = mp_obj_new_str(message, strlen(message)); + if (mp_call_function_n_kw(ui_wait_callback, 3, 0, args) == mp_const_true) { return sectrue; } } diff --git a/src/apps/management/change_pin.py b/src/apps/management/change_pin.py index b85a7e033..bff28395a 100644 --- a/src/apps/management/change_pin.py +++ b/src/apps/management/change_pin.py @@ -17,8 +17,10 @@ async def change_pin(ctx, msg): # get current pin, return failure if invalid if config.has_pin(): curpin = await request_pin_ack(ctx, "Enter old PIN", config.get_pin_rem()) - if not config.check_pin(pin_to_int(curpin)): - raise wire.PinInvalid("PIN invalid") + # if removing, defer check to change_pin() + if not msg.remove: + if not config.check_pin(pin_to_int(curpin)): + raise wire.PinInvalid("PIN invalid") else: curpin = "" diff --git a/src/trezor/pin.py b/src/trezor/pin.py index eb4faa96d..5c62b69ff 100644 --- a/src/trezor/pin.py +++ b/src/trezor/pin.py @@ -5,11 +5,11 @@ def pin_to_int(pin: str) -> int: return int("1" + pin) -def show_pin_timeout(seconds: int, progress: int) -> bool: +def show_pin_timeout(seconds: int, progress: int, message: str) -> bool: if progress == 0: ui.display.bar(0, 0, ui.WIDTH, ui.HEIGHT, ui.BG) ui.display.text_center( - ui.WIDTH // 2, 37, "Verifying PIN", ui.BOLD, ui.FG, ui.BG, ui.WIDTH + ui.WIDTH // 2, 37, message, ui.BOLD, ui.FG, ui.BG, ui.WIDTH ) ui.display.loader(progress, 0, ui.FG, ui.BG) if seconds == 0: diff --git a/vendor/trezor-storage b/vendor/trezor-storage index 24df1ca2b..0e897f673 160000 --- a/vendor/trezor-storage +++ b/vendor/trezor-storage @@ -1 +1 @@ -Subproject commit 24df1ca2b768d62162e9ab95602698d26c371746 +Subproject commit 0e897f673a2150607bae553e21604b253352644e