[Pcsclite-cvs-commit] r4956 - in /trunk/Drivers/ccid/src: ccid.h ccid_serial.c ccid_usb.c ifdhandler.c
rousseau at users.alioth.debian.org
rousseau at users.alioth.debian.org
Thu May 20 15:06:55 UTC 2010
Author: rousseau
Date: Thu May 20 15:06:48 2010
New Revision: 4956
URL: http://svn.debian.org/wsvn/pcsclite/?sc=1&rev=4956
Log:
Add support of SCARD_ATTR_VENDOR_IFD_SERIAL_NO
Modified:
trunk/Drivers/ccid/src/ccid.h
trunk/Drivers/ccid/src/ccid_serial.c
trunk/Drivers/ccid/src/ccid_usb.c
trunk/Drivers/ccid/src/ifdhandler.c
Modified: trunk/Drivers/ccid/src/ccid.h
URL: http://svn.debian.org/wsvn/pcsclite/trunk/Drivers/ccid/src/ccid.h?rev=4956&op=diff
==============================================================================
--- trunk/Drivers/ccid/src/ccid.h (original)
+++ trunk/Drivers/ccid/src/ccid.h Thu May 20 15:06:48 2010
@@ -121,6 +121,11 @@
* 4 = 1.8V
*/
int bVoltageSupport;
+
+ /*
+ * USB serial number of the device (if any)
+ */
+ char *sIFD_serial_number;
} _ccid_descriptor;
/* Features from dwFeatures */
Modified: trunk/Drivers/ccid/src/ccid_serial.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/Drivers/ccid/src/ccid_serial.c?rev=4956&op=diff
==============================================================================
--- trunk/Drivers/ccid/src/ccid_serial.c (original)
+++ trunk/Drivers/ccid/src/ccid_serial.c Thu May 20 15:06:48 2010
@@ -784,6 +784,8 @@
}
}
+ serialDevice[reader_index].ccid.sIFD_serial_number = NULL;
+
return STATUS_SUCCESS;
} /* OpenSerialByName */
Modified: trunk/Drivers/ccid/src/ccid_usb.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/Drivers/ccid/src/ccid_usb.c?rev=4956&op=diff
==============================================================================
--- trunk/Drivers/ccid/src/ccid_usb.c (original)
+++ trunk/Drivers/ccid/src/ccid_usb.c Thu May 20 15:06:48 2010
@@ -551,6 +551,19 @@
usbDevice[reader_index].ccid.bNumEndpoints = usb_interface->altsetting->bNumEndpoints;
usbDevice[reader_index].ccid.dwSlotStatus = IFD_ICC_PRESENT;
usbDevice[reader_index].ccid.bVoltageSupport = usb_interface->altsetting->extra[5];
+ usbDevice[reader_index].ccid.sIFD_serial_number = NULL;
+ if (dev->descriptor.iSerialNumber)
+ {
+ char serial[128];
+ int ret;
+
+ ret = usb_get_string_simple(dev_handle,
+ dev->descriptor.iSerialNumber, serial,
+ sizeof(serial));
+ if (ret > 0)
+ usbDevice[reader_index].ccid.sIFD_serial_number
+ = strdup(serial);
+ }
goto end;
}
}
@@ -707,6 +720,9 @@
usbDevice[reader_index].dirname = NULL;
usbDevice[reader_index].filename = NULL;
usbDevice[reader_index].interface = 0;
+
+ if (usbDevice[reader_index].ccid.sIFD_serial_number)
+ free(usbDevice[reader_index].ccid.sIFD_serial_number);
return STATUS_SUCCESS;
} /* CloseUSB */
Modified: trunk/Drivers/ccid/src/ifdhandler.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/Drivers/ccid/src/ifdhandler.c?rev=4956&op=diff
==============================================================================
--- trunk/Drivers/ccid/src/ifdhandler.c (original)
+++ trunk/Drivers/ccid/src/ifdhandler.c Thu May 20 15:06:48 2010
@@ -571,6 +571,22 @@
break;
#endif
+ case SCARD_ATTR_VENDOR_IFD_SERIAL_NO:
+ {
+ _ccid_descriptor *ccid_desc;
+
+ /* default value: not supported */
+ *Length = 0;
+
+ ccid_desc = get_ccid_descriptor(reader_index);
+ if (ccid_desc->sIFD_serial_number)
+ {
+ strcpy((char *)Value, ccid_desc->sIFD_serial_number);
+ *Length = strlen((char *)Value);
+ }
+ }
+ break;
+
default:
return_value = IFD_ERROR_TAG;
}
More information about the Pcsclite-cvs-commit
mailing list