
tux.tsndcb at free
Oct 15, 2009, 2:51 AM
Post #1 of 1
(311 views)
Permalink
|
|
Covadis vega-alpha reader don't support by ccid-driver GnuPG and don't support readers PINPAD used
|
|
Hi, I wanted to used the reader's pinpad of my reader (covadis vega-alpha), so I need to use your internal ccid-driver. Modification has been done on ccid-driver.c, but it dosen(t works pin code is always ask on my desktop and not on the reader and I think your ccid-driver don't support this reader : Modification in scd/drivers.c : .... /* We need to know the vendor to do some hacks. */ enum { VENDOR_CHERRY = 0x046a, VENDOR_SCM = 0x04e6, VENDOR_OMNIKEY= 0x076b, VENDOR_GEMPC = 0x08e6, VENDOR_KAAN = 0x0d46, VENDOR_COVADIS= 0x0982 }; .... /* We have only tested a few readers so better don't risk anything and do not allow the use with other readers. */ switch (handle->id_vendor) { case VENDOR_SCM: /* Tested with SPR 532. */ case VENDOR_KAAN: /* Tested with KAAN Advanced (1.02). */ break; case VENDOR_COVADIS: /* COVADIS Vega-Alpha */ if ( handle->id_product == 0x0008 ) { break; } case VENDOR_CHERRY: /* The CHERRY XX44 keyboard echos an asterisk for each entered character on the keyboard channel. We use a special variant of PC_to_RDR_Secure which directs these characters to the smart card's bulk-in channel. We also need to append a zero Lc byte to the APDU. It seems that it will be replaced with the actual length instead of being appended before the APDU is send to the card. */ cherry_mode = 1; break; default: return CCID_DRIVER_ERR_NOT_SUPPORTED; } .... /* The following is a little endian word. */ msg[15] = pinlen_max; /* wPINMaxExtraDigit-Maximum. */ msg[16] = pinlen_min; /* wPINMaxExtraDigit-Minimum. */ msg[17] = 0x02; /* bEntryValidationCondition: Validation key pressed */ if (pinlen_min && pinlen_max && pinlen_min == pinlen_max) msg[17] |= 0x01; /* Max size reached. */ if ( (handle->id_vendor == VENDOR_COVADIS) && (handle->id_product == 0x0008) ) { msg[18] = 0x01; /* bNumberMessage: 0x01. */ } else { msg[18] = 0xff; /* bNumberMessage: Default. */ } ..... I used : debian squeeze GnuPG 2.0.13 with this scdaemon.conf : debug 10 debug 2048 debug 3070 debug-ccid-driver I've this in scdaemon.log : 2009-10-15 11:10:38 scdaemon[6548] handler for fd -1 terminated 2009-10-15 11:10:38 scdaemon[6548] scdaemon (GnuPG) 2.0.13 stopped 2009-10-15 11:11:35 scdaemon[7412] listening on socket `/tmp/gpg-2vLAid/S.scdaemon' 2009-10-15 11:11:35 scdaemon[7412] handler for fd -1 started 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: using CCID reader 0 (ID=0982:0008:X:0) 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: idVendor: 0982 idProduct: 0008 bcdDevice: 0100 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: ChipCard Interface Descriptor: 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: bLength 54 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: bDescriptorType 33 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: bcdCCID 1.00 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: nMaxSlotIndex 0 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: bVoltageSupport 7 ? 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: dwProtocols 3 T=0 T=1 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: dwDefaultClock 4000 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: dwMaxiumumClock 4000 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: bNumClockSupported 0 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: dwDataRate 10752 bps 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: dwMaxDataRate 500000 bps 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: bNumDataRatesSupp. 0 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: dwMaxIFSD 254 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: dwSyncProtocols 00000000 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: dwMechanical 00000000 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: dwFeatures 00010230 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: Auto clock change 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: Auto baud rate change 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: NAD value other than 0x00 accepted 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: TPDU level exchange 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: dwMaxCCIDMsgLen 271 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: bClassGetResponse 00 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: bClassEnvelope 00 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: wlcdLayout none 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: bPINSupport 3 verification modification 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: bMaxCCIDBusySlots 1 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: this drivers requires that the reader supports T=1, TPDU or APDU level exchange and auto configuration - this is not available 2009-10-15 11:11:35 scdaemon[7412] DBG: ccid-driver: device not supported 2009-10-15 11:11:35 scdaemon[7412] reader slot 0: not connected 2009-10-15 11:11:35 scdaemon[7412] slot 0: ATR=3B DA 18 FF 81 B1 FE 75 1F 03 00 31 C5 73 C0 01 40 00 90 00 0C scdaemon[7412.0] DBG: -> OK GNU Privacy Guard's Smartcard server ready scdaemon[7412.0] DBG: <- GETINFO socket_name scdaemon[7412.0] DBG: -> D /tmp/gpg-2vLAid/S.scdaemon scdaemon[7412.0] DBG: -> OK scdaemon[7412.0] DBG: <- OPTION event-signal=12 scdaemon[7412.0] DBG: -> OK scdaemon[7412.0] DBG: <- SERIALNO openpgp but with this scdaemon.conf debug 10 debug 2048 debug 3070 debug-ccid-driver disable-ccid I've this in the scdaemon.log : 2009-10-15 11:24:33 scdaemon[7900] listening on socket `/tmp/gpg-rpZwiI/S.scdaemon' 2009-10-15 11:24:33 scdaemon[7900] handler for fd -1 started 2009-10-15 11:24:33 scdaemon[7900] reader slot 0: not connected 2009-10-15 11:24:33 scdaemon[7900] slot 0: ATR=3B DA 18 FF 81 B1 FE 75 1F 03 00 31 C5 73 C0 01 40 00 90 00 0C scdaemon[7900.0] DBG: -> OK GNU Privacy Guard's Smartcard server ready scdaemon[7900.0] DBG: <- GETINFO socket_name scdaemon[7900.0] DBG: -> D /tmp/gpg-rpZwiI/S.scdaemon scdaemon[7900.0] DBG: -> OK scdaemon[7900.0] DBG: <- OPTION event-signal=12 scdaemon[7900.0] DBG: -> OK scdaemon[7900.0] DBG: <- SERIALNO openpgp Could you add this reader in your ccid-driver or could you add IFDHSetProtocolParameters function like as PCSC-lite in ifdhandler.c file ? Or could you modify ccid_get_atr to support PC/SC readers : ? Actually : if (!got_param) { /* FIXME: Get those values from the ATR. */ Thanks in advanced for your return. Best Regards _______________________________________________ Gnupg-devel mailing list Gnupg-devel [at] gnupg http://lists.gnupg.org/mailman/listinfo/gnupg-devel
|