[Pcsclite-cvs-commit] r6812 - trunk/Drivers/ccid/examples
ludovic.rousseau at free.fr
ludovic.rousseau at free.fr
Mon Jan 6 15:32:55 UTC 2014
Author: rousseau
Date: 2014-01-06 15:32:55 +0000 (Mon, 06 Jan 2014)
New Revision: 6812
Modified:
trunk/Drivers/ccid/examples/scardcontrol.c
Log:
Parse codes returned by a pinpad (as SW1/SW2).
Known codes for now are:
0x9000: Success
0x6400: Timeout
0x6401: Cancelled by user
0x6402: PIN mismatch
0x6403: Too short or too long PIN
Modified: trunk/Drivers/ccid/examples/scardcontrol.c
===================================================================
--- trunk/Drivers/ccid/examples/scardcontrol.c 2014-01-06 14:18:30 UTC (rev 6811)
+++ trunk/Drivers/ccid/examples/scardcontrol.c 2014-01-06 15:32:55 UTC (rev 6812)
@@ -167,6 +167,39 @@
}
} /* parse_properties */
+
+static const char *pinpad_return_codes(unsigned char bRecvBuffer[])
+{
+ const char * ret = "UNKNOWN";
+
+ if ((0x90 == bRecvBuffer[0]) && (0x00 == bRecvBuffer[1]))
+ ret = "Success";
+
+ if (0x64 == bRecvBuffer[0])
+ {
+ switch (bRecvBuffer[1])
+ {
+ case 0x00:
+ ret = "Timeout";
+ break;
+
+ case 0x01:
+ ret = "Cancelled by user";
+ break;
+
+ case 0x02:
+ ret = "PIN mismatch";
+ break;
+
+ case 0x03:
+ ret = "Too short or too long PIN";
+ break;
+ }
+ }
+
+ return ret;
+}
+
int main(int argc, char *argv[])
{
LONG rv;
@@ -608,7 +641,7 @@
printf(" card response:");
for (i=0; i<length; i++)
printf(" %02X", bRecvBuffer[i]);
- printf("\n");
+ printf(": %s\n", pinpad_return_codes(bRecvBuffer));
PCSC_ERROR_CONT(rv, "SCardControl")
/* verify PIN dump */
More information about the Pcsclite-cvs-commit
mailing list