[Pcsclite-cvs-commit] r1635 - trunk/Drivers/ccid/examples

Ludovic Rousseau rousseau at costa.debian.org
Thu Sep 1 12:38:10 UTC 2005


Author: rousseau
Date: 2005-09-01 12:38:09 +0000 (Thu, 01 Sep 2005)
New Revision: 1635

Modified:
   trunk/Drivers/ccid/examples/scardcontrol.c
Log:
also work with T=1 cards


Modified: trunk/Drivers/ccid/examples/scardcontrol.c
===================================================================
--- trunk/Drivers/ccid/examples/scardcontrol.c	2005-09-01 12:33:06 UTC (rev 1634)
+++ trunk/Drivers/ccid/examples/scardcontrol.c	2005-09-01 12:38:09 UTC (rev 1635)
@@ -72,6 +72,7 @@
 	DWORD verify_ioctl = 0;
 	DWORD modify_ioctl = 0;
 	SCARD_IO_REQUEST pioRecvPci;
+ 	SCARD_IO_REQUEST pioSendPci;
 	PCSC_TLV_STRUCTURE *pcsc_tlv;
 	PIN_VERIFY_STRUCTURE *pin_verify;
 	PIN_MODIFY_STRUCTURE *pin_modify;
@@ -232,14 +233,28 @@
 	/* connect to a reader (even without a card) */
 	dwActiveProtocol = -1;
 	rv = SCardReconnect(hCard, SCARD_SHARE_SHARED,
-		SCARD_PROTOCOL_T0, SCARD_UNPOWER_CARD, &dwActiveProtocol);
+		SCARD_PROTOCOL_T0|SCARD_PROTOCOL_T1, SCARD_UNPOWER_CARD,
+		&dwActiveProtocol);
 	printf(" Protocol: %ld\n", dwActiveProtocol);
 	PCSC_ERROR_EXIT(rv, "SCardReconnect")
 
+	switch(dwActiveProtocol)
+	{
+		case SCARD_PROTOCOL_T0:
+			pioSendPci = *SCARD_PCI_T0;
+			break;
+		case SCARD_PROTOCOL_T1:
+			pioSendPci = *SCARD_PCI_T1;
+			break;
+		default:
+			printf("Unknown protocol\n");
+			return -1;
+	}
+
 	/* APDU select DF */
 	memcpy(bSendBuffer, "\x00\xA4\x04\x00\x05\x47\x54\x4F\x4B\x31", 10);
 	length = sizeof(bRecvBuffer);
-	rv = SCardTransmit(hCard, SCARD_PCI_T0, bSendBuffer, 10,
+	rv = SCardTransmit(hCard, &pioSendPci, bSendBuffer, 10,
 		&pioRecvPci, bRecvBuffer, &length);
 	printf(" card response:");
 	for (i=0; i<length; i++)
@@ -250,7 +265,7 @@
 	/* APDU select EF */
 	memcpy(bSendBuffer, "\x00\xA4\x02\x00\x02\x00\x04", 7);
 	length = sizeof(bRecvBuffer);
-	rv = SCardTransmit(hCard, SCARD_PCI_T0, bSendBuffer, 7,
+	rv = SCardTransmit(hCard, &pioSendPci, bSendBuffer, 7,
 		&pioRecvPci, bRecvBuffer, &length);
 	printf(" card response:");
 	for (i=0; i<length; i++)




More information about the Pcsclite-cvs-commit mailing list