From: Mandar J. <ema...@gm...> - 2018-01-31 23:29:31
|
Hello everyone, There are these tokens from CCID compliant (I think so) Watchdata available in the Indian market which are not yet supported in OpenSC. I would like to work on adding support for them in OpenSC. I read https://github.com/OpenSC/OpenSC/wiki/Adding-a-new-card-driver and that's where I'll begin. What I would like to know is whether I'll make significant progress without any documentation from Watchdata. Will trying to implement the driver using data from a USB Sniffer really work ? Which card driver do you suggest I use as skeleton for this new driver? Here is debug information about the token. $ opensc-tool -l Detected readers (pcsc) Nr. Card Features Name 0 Yes TrustKey [WDIND USB CCID Key] 00 00 $ pkcs11-tool -L Available slots: Slot 0 (0xffffffffffffffff): Virtual hotplug slot (empty) Slot 1 (0x1): TrustKey [WDIND USB CCID Key] 00 00 (empty) $ opensc-tool -n Using reader with a card: TrustKey [WDIND USB CCID Key] 00 00 Unsupported card -------------------------------------------------------------------------------------------------------- Output of Pykcs11 with proprietary driver: # PYKCS11LIB=/usr/lib/WatchData/TRUSTKEY/lib/libwdpkcs_TRUSTKEY.so python getinfo.py -p abcd1234 cryptokiVersion: 2.10 flags: libraryDescription: PKCS#11 cryptoki module libraryVersion: 1.0 manufacturerID: WatchData Available Slots: 3 [1, 2, 3] Slot n.: 1 firmwareVersion: 1.00 flags: CKF_REMOVABLE_DEVICE, CKF_HW_SLOT hardwareVersion: 1.00 manufacturerID: Watchdata Technologies Pte.Ltd slotDescription: WatchData IC CARD Reader/Writer 0 SessionInfo Error: CKR_SLOT_ID_INVALID (0x00000003) Slot n.: 2 firmwareVersion: 1.00 flags: CKF_REMOVABLE_DEVICE, CKF_HW_SLOT hardwareVersion: 1.00 manufacturerID: Watchdata Technologies Pte.Ltd slotDescription: WatchData IC CARD Reader/Writer 1 SessionInfo Error: CKR_SLOT_ID_INVALID (0x00000003) Slot n.: 3 firmwareVersion: 1.00 flags: CKF_REMOVABLE_DEVICE, CKF_HW_SLOT hardwareVersion: 1.00 manufacturerID: Watchdata Technologies Pte.Ltd slotDescription: WatchData IC CARD Reader/Writer 2 SessionInfo Error: CKR_SLOT_ID_INVALID (0x00000003) -------------------------------------------------------------------------------------------------------- ~$ lsusb -d 163c:0418 -v Bus 003 Device 009: ID 163c:0418 Couldn't open device, some information will be missing Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x163c idProduct 0x0418 bcdDevice 0.01 iManufacturer 1 iProduct 2 iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 109 bNumInterfaces 2 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 100mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 8 Mass Storage bInterfaceSubClass 6 SCSI bInterfaceProtocol 80 Bulk-Only iInterface 4 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x01 EP 1 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 11 Chip/SmartCard bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 5 ChipCard Interface Descriptor: bLength 54 bDescriptorType 33 bcdCCID 1.10 (Warning: Only accurate for version 1.0) nMaxSlotIndex 0 bVoltageSupport 1 5.0V dwProtocols 1 T=0 dwDefaultClock 3580 dwMaxiumumClock 14320 bNumClockSupported 0 dwDataRate 9600 bps dwMaxDataRate 115200 bps bNumDataRatesSupp. 0 dwMaxIFSD 254 dwSyncProtocols 00000000 dwMechanical 00000000 dwFeatures 00010030 Auto clock change Auto baud rate change TPDU level exchange dwMaxCCIDMsgLen 271 bClassGetResponse 00 bClassEnvelope 00 wlcdLayout none bPINSupport 0 bMaxCCIDBusySlots 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 ------------------------------------------------------------------------------------------------------------ ccid-1.4.28# cat output.txt idVendor: 0x163C iManufacturer: Watchdata idProduct: 0x0418 iProduct: USB Key bcdDevice: 0.01 (firmware release?) bLength: 9 bDescriptorType: 4 bInterfaceNumber: 1 bAlternateSetting: 0 bNumEndpoints: 2 bulk-IN and bulk-OUT bInterfaceClass: 0x0B [Chip Card Interface Device Class (CCID)] bInterfaceSubClass: 0 bInterfaceProtocol: 0 bulk transfer, optional interrupt-IN (CCID) iInterface: WDIND USB CCID Key CCID Class Descriptor bLength: 0x36 bDescriptorType: 0x21 bcdCCID: 1.10 bMaxSlotIndex: 0x00 bVoltageSupport: 0x01 5.0V dwProtocols: 0x0000 0x0001 T=0 dwDefaultClock: 3.580 MHz dwMaximumClock: 14.320 MHz bNumClockSupported: 0 (will use whatever is returned) IFD does not support GET CLOCK FREQUENCIES request: Resource temporarily unavailable dwDataRate: 9600 bps dwMaxDataRate: 115200 bps bNumDataRatesSupported: 0 (will use whatever is returned) IFD does not support GET_DATA_RATES request: Resource temporarily unavailable dwMaxIFSD: 254 dwSynchProtocols: 0x00000000 dwMechanical: 0x00000000 No special characteristics dwFeatures: 0x00010030 ....10 Automatic ICC clock frequency change according to parameters ....20 Automatic baud rate change according to frequency and Fi, Di params 01.... TPDU level exchange dwMaxCCIDMessageLength: 271 bytes bClassGetResponse: 0x00 bClassEnvelope: 0x00 wLcdLayout: 0x0000 bPINSupport: 0x00 bMaxCCIDBusySlots: 1 ------------------------------------------------------------------------------------------------------------------ Thanks for reading through. Regards Mandar Joshi |