- fixed wrong PCSC-PACE-data

- fixed command line parsing


git-svn-id: https://vsmartcard.svn.sourceforge.net/svnroot/vsmartcard@263 96b47cad-a561-4643-ad3b-153ac7d7599c
This commit is contained in:
frankmorgner
2010-09-14 16:07:49 +00:00
parent ed358e839b
commit 4a7fc6c457

View File

@@ -195,11 +195,11 @@ main(int argc, char *argv[])
if (argc > 1) { if (argc > 1) {
if (argc > 2 && sscanf(argv[1], "%u", &readernum) != 1) { if (sscanf(argv[1], "%u", &readernum) != 1) {
fprintf(stderr, "Could not get number of reader\n"); fprintf(stderr, "Could not get number of reader\n");
exit(2); exit(2);
} }
if (argc == 2) { if (argc > 2) {
pin = argv[2]; pin = argv[2];
pinlen = strlen(pin); pinlen = strlen(pin);
if (pinlen < 5 || pinlen > 6) { if (pinlen < 5 || pinlen > 6) {
@@ -235,7 +235,7 @@ main(int argc, char *argv[])
break; break;
} }
if (readerslen <= 0) { if (readerslen <= 0) {
fprintf(stderr, "Could not find reader number %d\n", readernum); fprintf(stderr, "Could not find reader number %u\n", readernum);
r = SCARD_E_UNKNOWN_READER; r = SCARD_E_UNKNOWN_READER;
goto err; goto err;
} }
@@ -275,7 +275,7 @@ main(int argc, char *argv[])
sendbuf[1] = 0x00; /* lengthInputData */ sendbuf[1] = 0x00; /* lengthInputData */
sendbuf[2] = 0x00; /* lengthInputData */ sendbuf[2] = 0x00; /* lengthInputData */
r = SCardControl(hCard, ctl, r = SCardControl(hCard, ctl,
sendbuf, 2, sendbuf, 3,
recvbuf, sizeof(recvbuf), &recvlen); recvbuf, sizeof(recvbuf), &recvlen);
if (r != SCARD_S_SUCCESS) { if (r != SCARD_S_SUCCESS) {
fprintf(stderr, "Could not get reader's PACE capabilities\n"); fprintf(stderr, "Could not get reader's PACE capabilities\n");
@@ -285,8 +285,8 @@ main(int argc, char *argv[])
sendbuf[0] = 0x02; /* idxFunction = EstabishPACEChannel */ sendbuf[0] = 0x02; /* idxFunction = EstabishPACEChannel */
sendbuf[1] = (8+pinlen)>>8; /* lengthInputData */ sendbuf[1] = (5+pinlen)&0xff; /* lengthInputData */
sendbuf[2] = (8+pinlen)&0xff; /* lengthInputData */ sendbuf[2] = (5+pinlen)>>8; /* lengthInputData */
sendbuf[3] = 0x03; /* PACE with PIN */ sendbuf[3] = 0x03; /* PACE with PIN */
sendbuf[4] = 0x00, /* length CHAT */ sendbuf[4] = 0x00, /* length CHAT */
sendbuf[5] = 0x00, /* length PIN */ sendbuf[5] = 0x00, /* length PIN */
@@ -328,7 +328,8 @@ main(int argc, char *argv[])
err: err:
#ifdef HAVE_PCSCLITE_H #ifdef HAVE_PCSCLITE_H
puts(pcsc_stringify_error(r)); if (r != SCARD_S_SUCCESS)
puts(pcsc_stringify_error(r));
#endif #endif
if (readers) if (readers)
SCardFreeMemory(hContext, readers); SCardFreeMemory(hContext, readers);