[Pcsclite-cvs-commit] PCSC/src muscletest.c,1.3,1.4

rousseau@quantz.debian.org rousseau@quantz.debian.org
Thu, 28 Aug 2003 15:34:10 +0200


Update of /cvsroot/pcsclite/PCSC/src
In directory quantz:/tmp/cvs-serv18470/src

Modified Files:
	muscletest.c 
Log Message:
use CAPITAL hex, use default PIN "Muscle00" when none is given, allow to
use more than one readers instead of using only the first one.


Index: muscletest.c
===================================================================
RCS file: /cvsroot/pcsclite/PCSC/src/muscletest.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- muscletest.c	24 Apr 2002 00:45:57 -0000	1.3
+++ muscletest.c	28 Aug 2003 13:34:08 -0000	1.4
@@ -36,14 +36,12 @@
 	MSCUChar8 pRandomData[20];
 	MSCUChar8 pSeed[8];
 	MSCUChar8 defaultPIN[16];
-	MSCUChar8 AID[6] = { 0xA0, 0x00, 0x00, 0x00, 0x01, 0x01 };
-	MSCUChar8 myData[] =
-		{ 'M', 'U', 'S', 'C', 'L', 'E', ' ', 'V', 'I', 'R',
-		'T', 'U', 'A', 'L', ' ', 'C', 'A', 'R', 'D', '.', 0
-	};
+	MSCUChar8 AID[] = { 0xA0, 0x00, 0x00, 0x00, 0x01, 0x01 };
+	MSCUChar8 myData[] = "MUSCLE VIRTUAL CARD.";
 	MSCUChar8 readData[50];
 	MSCLPTokenInfo tokenList;
 	MSCULong32 tokenSize;
+	int reader_to_use;
 	int i, j;
 
 	printf("********************************************************\n");
@@ -79,7 +77,7 @@
 			printf("%02X", tokenList[i].tokenId[j]);
 		}
 		printf("\n");
-		printf("Token state    : %ld\n", tokenList[i].tokenState);
+		printf("Token state    : %04lX\n", tokenList[i].tokenState);
 		printf("\n");
 
 		tokenList[i].tokenState = MSC_STATE_EMPTY;
@@ -89,6 +87,7 @@
 
 	rv = MSCWaitForTokenEvent(tokenList, tokenSize, MSC_NO_TIMEOUT);
 
+	reader_to_use = -1;
 	for (i = 0; i < tokenSize; i++)
 	{
 		printf("Token #%d\n", i);
@@ -100,12 +99,21 @@
 			printf("%02X", tokenList[i].tokenId[j]);
 		}
 		printf("\n");
-		printf("Token state    : %ld\n", tokenList[i].tokenState);
+		printf("Token state    : %04lX\n", tokenList[i].tokenState);
 		printf("\n");
+
+		if (tokenList[i].tokenState & SCARD_STATE_PRESENT)
+			reader_to_use = i;
 	}
 
-	rv = MSCEstablishConnection(&tokenList[0], MSC_SHARE_SHARED, AID,
-		6, &pConnection);
+	if (reader_to_use == -1)
+	{
+		printf("No valid token found\n");
+		return -1;
+	}
+
+	rv = MSCEstablishConnection(&tokenList[reader_to_use], MSC_SHARE_SHARED,
+		AID, 6, &pConnection);
 	if (rv != MSC_SUCCESS)
 	{
 		printf("EstablishConn returns     : %s\n", msc_error(rv));
@@ -117,22 +125,24 @@
 
 	rv = MSCGetStatus(&pConnection, &statusInf);
 	printf("GetStatus returns           : %s\n", msc_error(rv));
-	printf("Protocol version            : %04x\n", statusInf.appVersion);
-	printf("Applet version              : %04x\n", statusInf.swVersion);
+	printf("Protocol version            : %04X\n", statusInf.appVersion);
+	printf("Applet version              : %04X\n", statusInf.swVersion);
 	printf("Total object memory         : %08ld\n", statusInf.totalMemory);
 	printf("Free object memory          : %08ld\n", statusInf.freeMemory);
 	printf("Number of used PINs         : %02d\n", statusInf.usedPINs);
 	printf("Number of used Keys         : %02d\n", statusInf.usedKeys);
-	printf("Currently logged identities : %04x\n", statusInf.loggedID);
+	printf("Currently logged identities : %04X\n", statusInf.loggedID);
 
-        printf("Please enter the pin value\n");
-        fgets(defaultPIN, sizeof(defaultPIN), stdin);
+	printf("Please enter the PIN value: ");
+	fgets(defaultPIN, sizeof(defaultPIN), stdin);
+	if (defaultPIN[0] == '\n')
+		strcpy(defaultPIN, "Muscle00\n");
 
 	rv = MSCVerifyPIN(&pConnection, 0, defaultPIN, strlen(defaultPIN) - 1);
 	printf("Verify default PIN          : %s\n", msc_error(rv));
 
 	rv = MSCGetStatus(&pConnection, &statusInf);
-	printf("Currently logged identities : %04x\n", statusInf.loggedID);
+	printf("Currently logged identities : %04X\n", statusInf.loggedID);
 
 	objACL.readPermission = MSC_AUT_ALL;
 	objACL.writePermission = MSC_AUT_ALL;
@@ -166,13 +176,12 @@
 	printf("\n");
 	printf("Listing objects             : %s\n", msc_error(rv));
 	printf("------------------------------------------------------\n");
-	printf("%20s %12s %6s %6s  %6s\n", "Object ID", "Object Size",
-		"READ", "WRITE", "DELETE");
+	printf("           Object ID  Object Size   READ  WRITE  DELETE\n");
 	printf("   -----------------  -----------   ----  -----  ------\n");
 
 	if (rv == MSC_SUCCESS)
 	{
-		printf("%20s %12d   %04x   %04x    %04x\n", objInfo.objectID,
+		printf("%20s %12ld   %04X   %04X    %04X\n", objInfo.objectID,
 			objInfo.objectSize,
 			objInfo.objectACL.readPermission,
 			objInfo.objectACL.writePermission,
@@ -184,7 +193,7 @@
 		rv = MSCListObjects(&pConnection, MSC_SEQUENCE_NEXT, &objInfo);
 		if (rv == MSC_SUCCESS)
 		{
-			printf("%20s %12d   %04x   %04x    %04x\n", objInfo.objectID,
+			printf("%20s %12ld   %04X   %04X    %04X\n", objInfo.objectID,
 				objInfo.objectSize,
 				objInfo.objectACL.readPermission,
 				objInfo.objectACL.writePermission,
@@ -209,13 +218,14 @@
 	rv = MSCGetStatus(&pConnection, &statusInf);
 	printf("Free object memory          : %08ld\n", statusInf.freeMemory);
 
+	memset(pRandomData, 0, sizeof(pRandomData));
 	rv = MSCGetChallenge(&pConnection, pSeed, 0, pRandomData, 8);
 	printf("GetChallenge returns        : %s\n", msc_error(rv));
 	printf("Random data                 : ");
 
 	for (i = 0; i < 8; i++)
 	{
-		printf("%x ", pRandomData[i]);
+		printf("%02X ", pRandomData[i]);
 	}
 	printf("\n");
 
@@ -223,7 +233,7 @@
 	printf("Logout all identities       : %s\n", msc_error(rv));
 
 	rv = MSCGetStatus(&pConnection, &statusInf);
-	printf("Currently logged identities : %04x\n", statusInf.loggedID);
+	printf("Currently logged identities : %04X\n", statusInf.loggedID);
 
 	rv = MSCEndTransaction(&pConnection, SCARD_LEAVE_CARD);
 	printf("EndTransaction returns      : %s\n", msc_error(rv));