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:54:49 +0000
commit9625e7c75a98ed44af66e886569b1d87a697ef24 (patch)
tree4ed1fe8696468c7729a5394349b3978572d57a73
parentscd: remove pin length check. (diff)
downloadgnupg-9625e7c75a98ed44af66e886569b1d87a697ef24.tar.gz
gnupg-9625e7c75a98ed44af66e886569b1d87a697ef24.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. -- Cherry pick from master.
-rw-r--r--scd/apdu.c37
1 files 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;
}