Hi all!
I am developing a reader which will support direct mode. I modified
the pcsc_demo.c example so that i changed:
1. SCARD_SHARE_SHARED => SCARD_SHARE_DIRECT
2. SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1 => SCARD_PROTOCOL_RAW
And tried to send the reader some APDUs. But I found no success. In
the pcsc log I get the following:
04913895 winscard_msg_srv.c:239:SHMProcessEventsServer() Common
channel packet arrival
00000044 winscard_msg_srv.c:248:SHMProcessEventsServer()
SHMProcessCommonChannelRequest detects: 7
00000019 pcscdaemon.c:147:SVCServiceRunLoop() A new context thread
creation is requested: 7
00000119 winscard_svc.c:133:ContextThread() Thread is started: 7
00000058 winscard_msg_srv.c:317:SHMProcessEventsContext() command
CMD_VERSION received by client 7
00000018 winscard_svc.c:189:ContextThread() Client is protocol version 3:0
00000138 winscard_msg_srv.c:317:SHMProcessEventsContext() command
ESTABLISH_CONTEXT received by client 7
00000049 winscard.c:242:SCardEstablishContext() Establishing Context: 17037171
00000676 winscard_msg_srv.c:317:SHMProcessEventsContext() command
CONNECT received by client 7
00000021 winscard.c:303:SCardConnect() Attempting Connect to
TestReader (2332333) 00 00 using protocol: 4
00000017 winscard.c:452:SCardConnect() Direct access: no protocol selected
00000019 winscard.c:459:SCardConnect() hCard Identity: 1ee28
00000357 winscard_msg_srv.c:317:SHMProcessEventsContext() command
STATUS received by client 7
00000797 winscard_msg_srv.c:317:SHMProcessEventsContext() command
TRANSMIT received by client 7
00000022 winscard.c:1647:SCardTransmit() Send Protocol: T=4
00000015 winscard.c:1671:SCardTransmit() Card not transacted: 0x8010001F
00000181 winscard_msg_srv.c:317:SHMProcessEventsContext() command
RELEASE_CONTEXT received by client 7
00000020 winscard.c:253:SCardReleaseContext() Releasing Context: 17037171
00000016 winscard.c:880:SCardDisconnect() Active Contexts: 1
00003207 winscard_msg_srv.c:306:SHMProcessEventsContext() Client has
disappeared: 7
00000033 winscard_svc.c:146:ContextThread() Client die: 7
I checked wincard.c for what hapend and found that on line 1651 you do:
if (pioSendPci->dwProtocol == SCARD_PROTOCOL_RAW)
{
rv = IFDControl_v2(rContext, (PUCHAR) pbSendBuffer,
cbSendLength,
pbRecvBuffer, &dwRxLength);
} else
{
rv = IFDTransmit(rContext, sSendPci, (PUCHAR) pbSendBuffer,
cbSendLength, pbRecvBuffer, &dwRxLength, &sRecvPci);
}
So you call IFDControl_v2 which is fine if you use IFD_HVERSION_2_0,
but I use IFD_HVERSION_3_0.
My question is how can I use SCARD_PROTOCOL_RAW with IFD_HVERSION_3_0?
I am using:
-Ubuntu 9.10
-PC/SC 1.5.3
-CCID 1.3.10
Regards Simon
_______________________________________________
Muscle mailing list
[email protected]
http://lists.drizzle.com/mailman/listinfo/muscle