810 |
(MYPCSC_DWORD) dwPreferredProtocol, &myHCard, &dwActiveProtocol); |
(MYPCSC_DWORD) dwPreferredProtocol, &myHCard, &dwActiveProtocol); |
811 |
hCard = scHandleToServer(myHCard); |
hCard = scHandleToServer(myHCard); |
812 |
#ifdef WITH_SCARD_DEBUG |
#ifdef WITH_SCARD_DEBUG |
813 |
printf("[RECEIVED HCARD 0x%016lx]\n", myHCard); |
printf("[RECEIVED HCARD 0x%016lx]\n", (unsigned long) myHCard); |
814 |
printf("[MANGLED HCARD 0x%08x]\n", hCard); |
printf("[MANGLED HCARD 0x%08x]\n", hCard); |
815 |
#endif |
#endif |
816 |
if (rv != SCARD_S_SUCCESS) |
if (rv != SCARD_S_SUCCESS) |
891 |
printf("[INIT = 0x%.8x]\n", (unsigned int) dwInitialization); |
printf("[INIT = 0x%.8x]\n", (unsigned int) dwInitialization); |
892 |
printf("[hContext = 0x%.8x]\n", (unsigned int) hContext); |
printf("[hContext = 0x%.8x]\n", (unsigned int) hContext); |
893 |
printf("[hCard = 0x%.8x]\n", (unsigned int) hCard); |
printf("[hCard = 0x%.8x]\n", (unsigned int) hCard); |
894 |
printf("[myHCard = 0x%016lx]\n", myHCard); |
printf("[myHCard = 0x%016lx]\n", (unsigned long) myHCard); |
895 |
#endif |
#endif |
896 |
rv = SCardReconnect(myHCard, (MYPCSC_DWORD) dwShareMode, (MYPCSC_DWORD) dwPreferredProtocol, |
rv = SCardReconnect(myHCard, (MYPCSC_DWORD) dwShareMode, (MYPCSC_DWORD) dwPreferredProtocol, |
897 |
(MYPCSC_DWORD) dwInitialization, &dwActiveProtocol); |
(MYPCSC_DWORD) dwInitialization, &dwActiveProtocol); |
1372 |
myHCard = scHandleToMyPCSC(hCard); |
myHCard = scHandleToMyPCSC(hCard); |
1373 |
#ifdef WITH_SCARD_DEBUG |
#ifdef WITH_SCARD_DEBUG |
1374 |
printf("[hCard = 0x%.8x]\n", (unsigned int) hCard); |
printf("[hCard = 0x%.8x]\n", (unsigned int) hCard); |
1375 |
printf("[myHCard = 0x%016lx]\n", myHCard); |
printf("[myHCard = 0x%016lx]\n", (unsigned long) myHCard); |
1376 |
#endif |
#endif |
1377 |
rv = SCardBeginTransaction(myHCard); |
rv = SCardBeginTransaction(myHCard); |
1378 |
#ifdef WITH_SCARD_DEBUG |
#ifdef WITH_SCARD_DEBUG |
1400 |
myHCard = scHandleToMyPCSC(hCard); |
myHCard = scHandleToMyPCSC(hCard); |
1401 |
#ifdef WITH_SCARD_DEBUG |
#ifdef WITH_SCARD_DEBUG |
1402 |
printf("[hCard = 0x%.8x]\n", (unsigned int) hCard); |
printf("[hCard = 0x%.8x]\n", (unsigned int) hCard); |
1403 |
printf("[myHCard = 0x%016lx]\n", myHCard); |
printf("[myHCard = 0x%016lx]\n", (unsigned long) myHCard); |
1404 |
printf("[dwDisposition = 0x%.8x]\n", (unsigned int) dwDisposition); |
printf("[dwDisposition = 0x%.8x]\n", (unsigned int) dwDisposition); |
1405 |
#endif |
#endif |
1406 |
rv = SCardEndTransaction(myHCard, (MYPCSC_DWORD) dwDisposition); |
rv = SCardEndTransaction(myHCard, (MYPCSC_DWORD) dwDisposition); |
1509 |
|
|
1510 |
if (cbRecvLength) |
if (cbRecvLength) |
1511 |
{ |
{ |
|
/* FIXME: handle responses with length > 448 bytes */ |
|
|
if (cbRecvLength > 448) |
|
|
{ |
|
|
#ifdef WITH_SCARD_DEBUG |
|
|
printf("[RECV LEN %d -> %d]\n", (unsigned int) cbRecvLength, 400); |
|
|
#endif |
|
|
cbRecvLength = 448; |
|
|
} |
|
|
|
|
|
|
|
1512 |
recvBuf = SC_xmalloc(&lcHandle, cbRecvLength); |
recvBuf = SC_xmalloc(&lcHandle, cbRecvLength); |
1513 |
if (!recvBuf) |
if (!recvBuf) |
1514 |
return SC_returnNoMemoryError(&lcHandle, in, out); |
return SC_returnNoMemoryError(&lcHandle, in, out); |
1547 |
printf("[SEND LEN = %d]\n", (unsigned int) cbSendLength); |
printf("[SEND LEN = %d]\n", (unsigned int) cbSendLength); |
1548 |
printf("[RECV LEN = %d]\n", (unsigned int) cbRecvLength); |
printf("[RECV LEN = %d]\n", (unsigned int) cbRecvLength); |
1549 |
printf("[hCard = 0x%.8x]\n", (unsigned int) hCard); |
printf("[hCard = 0x%.8x]\n", (unsigned int) hCard); |
1550 |
printf("[myHCard = 0x%016lx]\n", myHCard); |
printf("[myHCard = 0x%016lx]\n", (unsigned long) myHCard); |
1551 |
printf("[pioSendPci]\n"); |
printf("[pioSendPci]\n"); |
1552 |
if (pioSendPci == NULL) |
if (pioSendPci == NULL) |
1553 |
printf("NULL\n"); |
printf("NULL\n"); |
1588 |
rv = SCardTransmit(myHCard, myPioSendPci, sendBuf, (MYPCSC_DWORD) cbSendLength, |
rv = SCardTransmit(myHCard, myPioSendPci, sendBuf, (MYPCSC_DWORD) cbSendLength, |
1589 |
myPioRecvPci, recvBuf, &myCbRecvLength); |
myPioRecvPci, recvBuf, &myCbRecvLength); |
1590 |
cbRecvLength = myCbRecvLength; |
cbRecvLength = myCbRecvLength; |
1591 |
|
|
1592 |
|
/* FIXME: handle responses with length > 448 bytes */ |
1593 |
|
if (cbRecvLength > 448) |
1594 |
|
{ |
1595 |
|
warning("Card response limited from %d to 448 bytes!\n", cbRecvLength); |
1596 |
|
#ifdef WITH_SCARD_DEBUG |
1597 |
|
printf("[RECV LEN %d -> %d]\n", (unsigned int) cbRecvLength, 400); |
1598 |
|
#endif |
1599 |
|
cbRecvLength = 448; |
1600 |
|
} |
1601 |
|
|
1602 |
if (pioRecvPci) |
if (pioRecvPci) |
1603 |
{ |
{ |
1604 |
copyIORequest_MyPCSCToServer(myPioRecvPci, pioRecvPci); |
copyIORequest_MyPCSCToServer(myPioRecvPci, pioRecvPci); |
1675 |
myHCard = scHandleToMyPCSC(hCard); |
myHCard = scHandleToMyPCSC(hCard); |
1676 |
#ifdef WITH_SCARD_DEBUG |
#ifdef WITH_SCARD_DEBUG |
1677 |
printf("[hCard 0x%.8x]\n", (unsigned int) hCard); |
printf("[hCard 0x%.8x]\n", (unsigned int) hCard); |
1678 |
printf("[myHCard 0x%016lx]\n", myHCard); |
printf("[myHCard 0x%016lx]\n", (unsigned long) myHCard); |
1679 |
printf("[dwReaderLen %d]\n", (unsigned int) dwReaderLen); |
printf("[dwReaderLen %d]\n", (unsigned int) dwReaderLen); |
1680 |
printf("[dwAtrLen %d]\n", (unsigned int) dwAtrLen); |
printf("[dwAtrLen %d]\n", (unsigned int) dwAtrLen); |
1681 |
#endif |
#endif |
2159 |
printf("---> Calling SCardControl\n"); |
printf("---> Calling SCardControl\n"); |
2160 |
#endif |
#endif |
2161 |
|
|
|
#ifdef WITH_PCSC120 |
|
2162 |
sc_nBytesReturned = nBytesReturned; |
sc_nBytesReturned = nBytesReturned; |
2163 |
myHCard = scHandleToMyPCSC(hCard); |
myHCard = scHandleToMyPCSC(hCard); |
2164 |
|
#ifdef WITH_PCSC120 |
2165 |
rv = SCardControl(myHCard, pInBuffer, (MYPCSC_DWORD) nInBufferSize, pOutBuffer, |
rv = SCardControl(myHCard, pInBuffer, (MYPCSC_DWORD) nInBufferSize, pOutBuffer, |
2166 |
&sc_nBytesReturned); |
&sc_nBytesReturned); |
|
nBytesReturned = sc_nBytesReturned; |
|
2167 |
#else |
#else |
|
sc_nBytesReturned = nBytesReturned; |
|
|
myHCard = scHandleToMyPCSC(hCard); |
|
2168 |
rv = SCardControl(myHCard, (MYPCSC_DWORD) dwControlCode, pInBuffer, |
rv = SCardControl(myHCard, (MYPCSC_DWORD) dwControlCode, pInBuffer, |
2169 |
(MYPCSC_DWORD) nInBufferSize, pOutBuffer, |
(MYPCSC_DWORD) nInBufferSize, pOutBuffer, |
2170 |
(MYPCSC_DWORD) nOutBufferRealSize, &sc_nBytesReturned); |
(MYPCSC_DWORD) nOutBufferRealSize, &sc_nBytesReturned); |
|
nBytesReturned = sc_nBytesReturned; |
|
2171 |
#endif |
#endif |
2172 |
|
nBytesReturned = sc_nBytesReturned; |
2173 |
|
|
2174 |
#ifdef WITH_SCARD_DEBUG |
#ifdef WITH_SCARD_DEBUG |
2175 |
if (rv != SCARD_S_SUCCESS) |
if (rv != SCARD_S_SUCCESS) |