scd: add pinpad readers information for PC/SC service.
authorNIIBE Yutaka <gniibe@fsij.org>
Wed, 16 Oct 2013 00:52:18 +0000 (09:52 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Wed, 16 Oct 2013 00:54:49 +0000 (09:54 +0900)
* 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

index fdae9b8..1ef0d9d 100644 (file)
@@ -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;
 }