diff options
author | NIIBE Yutaka <[email protected]> | 2019-07-25 00:16:46 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2019-07-25 00:16:46 +0000 |
commit | 996c497a864d820af06333014b2c5f74d1054866 (patch) | |
tree | 20b31a12c40e5b18378188cbff054df05972ca66 | |
parent | scd: Fix bBWI value. (diff) | |
download | gnupg-996c497a864d820af06333014b2c5f74d1054866.tar.gz gnupg-996c497a864d820af06333014b2c5f74d1054866.zip |
scd: Handle CCID bwi of time extension.
* scd/ccid-driver.c (bulk_in): Increase timeout by the multiplier
value as defined section 6.2.6 in CCID specification.
--
For TPDU level transfer, it was handled. This is fix for APDU level
transfer.
GnuPG-bug-id: 4646
Signed-off-by: NIIBE Yutaka <[email protected]>
-rw-r--r-- | scd/ccid-driver.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/scd/ccid-driver.c b/scd/ccid-driver.c index 54f7b13b4..170f36641 100644 --- a/scd/ccid-driver.c +++ b/scd/ccid-driver.c @@ -1940,6 +1940,7 @@ bulk_in (ccid_driver_t handle, unsigned char *buffer, size_t length, int rc; int msglen; int notified = 0; + int bwi = 1; /* Fixme: The next line for the current Valgrind without support for USB IOCTLs. */ @@ -1950,7 +1951,7 @@ bulk_in (ccid_driver_t handle, unsigned char *buffer, size_t length, npth_unprotect (); #endif rc = libusb_bulk_transfer (handle->idev, handle->ep_bulk_in, - buffer, length, &msglen, timeout); + buffer, length, &msglen, bwi*timeout); #ifdef USE_NPTH npth_protect (); #endif @@ -1998,6 +1999,10 @@ bulk_in (ccid_driver_t handle, unsigned char *buffer, size_t length, DEBUGOUT_2 ("time extension requested (%02X,%02X)\n", buffer[7], buffer[8]); + bwi = 1; + if (buffer[8] != 0 && buffer[8] != 0xff) + bwi = buffer[8]; + /* Gnuk enhancement to prompt user input by ack button */ if (buffer[8] == 0xff && !notified) { |