diff --git a/fido2/ctap.c b/fido2/ctap.c index 3ccb9cb..d23f8ad 100644 --- a/fido2/ctap.c +++ b/fido2/ctap.c @@ -2443,6 +2443,15 @@ uint8_t ctap_is_pin_set() */ void ctap_update_pin(uint8_t * pin, int len) { + + // Remove PIN if the new PIN is either "" or 4321 + if (len == 0 || strncmp(pin, "4321", len) == 0) { + STATE.is_pin_set = 0; + memset(STATE.PIN_CODE_HASH, 0, sizeof(STATE.PIN_CODE_HASH)); + authenticator_write_state(&STATE); + return; + } + if (len >= NEW_PIN_ENC_MIN_SIZE || len < 4) { printf2(TAG_ERR, "Update pin fail length\n");