break secrets from bottom to top

git-svn-id: https://vsmartcard.svn.sourceforge.net/svnroot/vsmartcard@631 96b47cad-a561-4643-ad3b-153ac7d7599c
This commit is contained in:
frankmorgner
2011-11-07 16:12:13 +00:00
parent 5d1071f68f
commit 2ae1b1b609

View File

@@ -344,10 +344,12 @@ main (int argc, char **argv)
/* The biggest buffer sprintf could write with "%llu" */ /* The biggest buffer sprintf could write with "%llu" */
char secretbuf[strlen("18446744073709551615")+1]; char secretbuf[strlen("18446744073709551615")+1];
unsigned long long secret = 0; unsigned long long secret = 0;
unsigned long long maxsecret = 0;
if (usepin) { if (usepin) {
pace_input.pin_id = PACE_PIN; pace_input.pin_id = PACE_PIN;
pace_input.pin_length = 6; pace_input.pin_length = 6;
maxsecret = 999999;
if (pin) { if (pin) {
if (sscanf(pin, "%llu", &secret) != 1) { if (sscanf(pin, "%llu", &secret) != 1) {
fprintf(stderr, "%s is not an unsigned long long.\n", fprintf(stderr, "%s is not an unsigned long long.\n",
@@ -364,6 +366,7 @@ main (int argc, char **argv)
} else if (usecan) { } else if (usecan) {
pace_input.pin_id = PACE_CAN; pace_input.pin_id = PACE_CAN;
pace_input.pin_length = 6; pace_input.pin_length = 6;
maxsecret = 999999;
if (can) { if (can) {
if (sscanf(can, "%llu", &secret) != 1) { if (sscanf(can, "%llu", &secret) != 1) {
fprintf(stderr, "%s is not an unsigned long long.\n", fprintf(stderr, "%s is not an unsigned long long.\n",
@@ -380,6 +383,7 @@ main (int argc, char **argv)
} else if (usepuk) { } else if (usepuk) {
pace_input.pin_id = PACE_PUK; pace_input.pin_id = PACE_PUK;
pace_input.pin_length = 10; pace_input.pin_length = 10;
maxsecret = 9999999999;
if (puk) { if (puk) {
if (sscanf(puk, "%llu", &secret) != 1) { if (sscanf(puk, "%llu", &secret) != 1) {
fprintf(stderr, "%s is not an unsigned long long.\n", fprintf(stderr, "%s is not an unsigned long long.\n",
@@ -412,8 +416,8 @@ main (int argc, char **argv)
r = EstablishPACEChannel(NULL, card, pace_input, &pace_output, r = EstablishPACEChannel(NULL, card, pace_input, &pace_output,
&sctx); &sctx);
secret--; secret++;
} while (0 > r && secret > 0); } while (0 > r && secret <= maxsecret);
gettimeofday(&tv, NULL); gettimeofday(&tv, NULL);
if (0 > r) { if (0 > r) {