aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2013-10-16 00:52:18 +0000
committerNIIBE Yutaka <[email protected]>2013-10-16 00:52:18 +0000
commit5efcc2b8fee8de31d255d09037f0a1e6209eab32 (patch)
tree7681b54b904b0bf5acdbdafa7cc4bcf917146fbd
parentscd: remove pin length check. (diff)
downloadgnupg-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.c37
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;
}