From 9625e7c75a98ed44af66e886569b1d87a697ef24 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Wed, 16 Oct 2013 09:52:18 +0900 Subject: [PATCH] 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. -- Cherry pick from master. --- scd/apdu.c | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/scd/apdu.c b/scd/apdu.c index fdae9b856..1ef0d9d86 100644 --- a/scd/apdu.c +++ b/scd/apdu.c @@ -1762,21 +1762,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) @@ -1832,6 +1841,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; }