1
0
Fork 0
mirror of git://git.gnupg.org/gnupg.git synced 2025-07-03 22:56:33 +02:00

scd:ccid-driver: Fix pinpad error handling for cancel/timeout.

* scd/apdu.h (SW_HOST_UI_CANCELLED, SW_HOST_UI_TIMEOUT): New.
* scd/ccid-driver.h (CCID_DRIVER_ERR_UI_CANCELLED): New.
(CCID_DRIVER_ERR_UI_TIMEOUT): New.
* scd/ccid-driver.c (bulk_in): Handle PIN input cancel/timeout error.
* scd/iso7816.c (map_sw): Support SW_HOST_UI_CANCELLED and
SW_HOST_UI_TIMEOUT.

--

GnuPG-bug-id: 4614
Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
NIIBE Yutaka 2020-11-27 15:17:56 +09:00
parent 7113263a00
commit bb591222c3
4 changed files with 17 additions and 2 deletions

View file

@ -2148,7 +2148,16 @@ bulk_in (ccid_driver_t handle, unsigned char *buffer, size_t length,
}
}
if (CCID_COMMAND_FAILED (buffer))
print_command_failed (buffer);
{
int ec;
ec = CCID_ERROR_CODE (buffer);
print_command_failed (buffer);
if (ec == 0xEF)
return CCID_DRIVER_ERR_UI_CANCELLED;
else if (ec == 0xF0)
return CCID_DRIVER_ERR_UI_TIMEOUT;
}
/* Check whether a card is at all available. Note: If you add new
error codes here, check whether they need to be ignored in