diff options
author | NIIBE Yutaka <[email protected]> | 2013-10-16 00:52:18 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2013-10-16 00:52:18 +0000 |
commit | 5efcc2b8fee8de31d255d09037f0a1e6209eab32 (patch) | |
tree | 7681b54b904b0bf5acdbdafa7cc4bcf917146fbd | |
parent | scd: remove pin length check. (diff) | |
download | gnupg-5efcc2b8fee8de31d255d09037f0a1e6209eab32.tar.gz gnupg-5efcc2b8fee8de31d255d09037f0a1e6209eab32.zip |
scd: add pinpad readers information for PC/SC service.
* scd/apdu.c (pcsc_vendor_specific_init): Add information for Cherry
ST-2xxx, Reiner cyberJack, Vasco DIGIPASS, FSIJ Gnuk Token, and KAAN
Advance.
--
Diffstat (limited to '')
-rw-r--r-- | scd/apdu.c | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/scd/apdu.c b/scd/apdu.c index 293849d94..58f607500 100644 --- a/scd/apdu.c +++ b/scd/apdu.c @@ -1745,21 +1745,30 @@ pcsc_vendor_specific_init (int slot) } } - /* - * For system which doesn't support GET_TLV_PROPERTIES, - * we put some heuristics here. - */ - if (reader_table[slot].rdrname - && strstr (reader_table[slot].rdrname, "SPRx32")) + if (get_tlv_ioctl == (pcsc_dword_t)-1) { - reader_table[slot].is_spr532 = 1; - reader_table[slot].pinpad_varlen_supported = 1; + /* + * For system which doesn't support GET_TLV_PROPERTIES, + * we put some heuristics here. + */ + if (reader_table[slot].rdrname) + { + if (strstr (reader_table[slot].rdrname, "SPRx32")) + { + reader_table[slot].is_spr532 = 1; + reader_table[slot].pinpad_varlen_supported = 1; + } + else if (strstr (reader_table[slot].rdrname, "ST-2xxx") + || strstr (reader_table[slot].rdrname, "cyberJack") + || strstr (reader_table[slot].rdrname, "DIGIPASS") + || strstr (reader_table[slot].rdrname, "Gnuk") + || strstr (reader_table[slot].rdrname, "KAAN")) + reader_table[slot].pinpad_varlen_supported = 1; + } + return 0; } - if (get_tlv_ioctl == (pcsc_dword_t)-1) - return 0; - len = sizeof (buf); sw = control_pcsc (slot, get_tlv_ioctl, NULL, 0, buf, &len); if (sw) @@ -1815,6 +1824,12 @@ pcsc_vendor_specific_init (int slot) reader_table[slot].is_spr532 = 1; reader_table[slot].pinpad_varlen_supported = 1; } + else if (vendor == 0x046a && product == 0x003e /* Cherry ST-2xxx */ + || vendor == 0x0c4b /* Tested with Reiner cyberJack GO */ + || vendor == 0x1a44 /* Tested with Vasco DIGIPASS 920 */ + || vendor == 0x234b /* Tested with FSIJ Gnuk Token */ + || vendor == 0x0d46 /* Tested with KAAN Advanced??? */) + reader_table[slot].pinpad_varlen_supported = 1; return 0; } |