diff options
author | NIIBE Yutaka <gniibe@fsij.org> | 2020-10-26 03:38:47 +0100 |
---|---|---|
committer | NIIBE Yutaka <gniibe@fsij.org> | 2020-10-26 03:38:47 +0100 |
commit | 31def32eeed8cff705ca827e4bbc0bfcc80c512f (patch) | |
tree | add5049700612dfc4868df8b19c7ef5e896a906b /scd/ccid-driver.c | |
parent | scd: Internal CCID driver limiting only for SPR532. (diff) | |
download | gnupg2-31def32eeed8cff705ca827e4bbc0bfcc80c512f.tar.xz gnupg2-31def32eeed8cff705ca827e4bbc0bfcc80c512f.zip |
scd: Internal CCID driver thing only for SPR532.
* scd/ccid-driver.c (ccid_vendor_specific_setup): New. Limit
only for SPR532, excluding other readers by SCM.
(ccid_slot_status): Use ccid_vendor_specific_setup.
--
We follow the setup procedure of libccid implementation, which sends
the escape command for SPR532 only.
Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
Diffstat (limited to 'scd/ccid-driver.c')
-rw-r--r-- | scd/ccid-driver.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/scd/ccid-driver.c b/scd/ccid-driver.c index cdda7caed..6869821d6 100644 --- a/scd/ccid-driver.c +++ b/scd/ccid-driver.c @@ -1287,6 +1287,19 @@ ccid_vendor_specific_init (ccid_driver_t handle) } +static int +ccid_vendor_specific_setup (ccid_driver_t handle) +{ + if (handle->id_vendor == VENDOR_SCM && handle->id_product == SCM_SPR532) + { + DEBUGOUT ("sending escape sequence to switch to a case 1 APDU\n"); + send_escape_cmd (handle, (const unsigned char*)"\x80\x02\x00", 3, + NULL, 0, NULL); + } + return 0; +} + + #define MAX_DEVICE 16 /* See MAX_READER in apdu.c. */ struct ccid_dev_table { @@ -2416,12 +2429,7 @@ ccid_slot_status (ccid_driver_t handle, int *statusbits, int on_wire) if (handle->transfer == NULL) { ccid_setup_intr (handle); - if (handle->id_vendor == VENDOR_SCM) - { - DEBUGOUT ("sending escape sequence to switch to a case 1 APDU\n"); - send_escape_cmd (handle, (const unsigned char*)"\x80\x02\x00", 3, - NULL, 0, NULL); - } + ccid_vendor_specific_setup (handle); } *statusbits = 0; |