aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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;
}