opensc-explorer: simplify arg parsing in do_change() & do_unblock()
Simplify argument handling in do_change() and do_unblock(), making the functions shorter and deasier to understand., Signed-off-by: Peter Marschall <peter@adpm.de>
This commit is contained in:
parent
61855ebd22
commit
1c437c049c
|
@ -873,8 +873,8 @@ static int do_change(int argc, char **argv)
|
||||||
int ref, r, tries_left = -1;
|
int ref, r, tries_left = -1;
|
||||||
u8 oldpin[30];
|
u8 oldpin[30];
|
||||||
u8 newpin[30];
|
u8 newpin[30];
|
||||||
size_t oldpinlen = sizeof(oldpin);
|
size_t oldpinlen = 0;
|
||||||
size_t newpinlen = sizeof(newpin);
|
size_t newpinlen = 0;
|
||||||
|
|
||||||
if (argc < 1 || argc > 3)
|
if (argc < 1 || argc > 3)
|
||||||
goto usage;
|
goto usage;
|
||||||
|
@ -886,27 +886,18 @@ static int do_change(int argc, char **argv)
|
||||||
printf("Invalid key reference.\n");
|
printf("Invalid key reference.\n");
|
||||||
goto usage;
|
goto usage;
|
||||||
}
|
}
|
||||||
argc--;
|
|
||||||
argv++;
|
|
||||||
|
|
||||||
if (argc == 0) {
|
if (argc == 3) {
|
||||||
/* set without verification */
|
oldpinlen = sizeof(oldpin);
|
||||||
oldpinlen = 0;
|
if (parse_string_or_hexdata(argv[1], oldpin, &oldpinlen) != 0) {
|
||||||
newpinlen = 0;
|
|
||||||
} else if (argc == 1) {
|
|
||||||
/* set without verification */
|
|
||||||
oldpinlen = 0;
|
|
||||||
} else {
|
|
||||||
if (parse_string_or_hexdata(argv[0], oldpin, &oldpinlen) != 0) {
|
|
||||||
printf("Invalid key value.\n");
|
printf("Invalid key value.\n");
|
||||||
goto usage;
|
goto usage;
|
||||||
}
|
}
|
||||||
argc--;
|
|
||||||
argv++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argc) {
|
if (argc >= 2) {
|
||||||
if (parse_string_or_hexdata(argv[0], newpin, &newpinlen) != 0) {
|
newpinlen = sizeof(newpin);
|
||||||
|
if (parse_string_or_hexdata(argv[argc-1], newpin, &newpinlen) != 0) {
|
||||||
printf("Invalid key value.\n");
|
printf("Invalid key value.\n");
|
||||||
goto usage;
|
goto usage;
|
||||||
}
|
}
|
||||||
|
@ -941,10 +932,10 @@ usage:
|
||||||
static int do_unblock(int argc, char **argv)
|
static int do_unblock(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int ref, r;
|
int ref, r;
|
||||||
u8 puk_buf[30], *puk = NULL;
|
u8 puk[30];
|
||||||
u8 newpin_buf[30], *newpin = NULL;
|
u8 newpin[30];
|
||||||
size_t puklen = sizeof(puk_buf);
|
size_t puklen = 0;
|
||||||
size_t newpinlen = sizeof(newpin_buf);
|
size_t newpinlen = 0;
|
||||||
|
|
||||||
if (argc < 1 || argc > 3)
|
if (argc < 1 || argc > 3)
|
||||||
goto usage;
|
goto usage;
|
||||||
|
@ -956,39 +947,26 @@ static int do_unblock(int argc, char **argv)
|
||||||
printf("Invalid key reference.\n");
|
printf("Invalid key reference.\n");
|
||||||
goto usage;
|
goto usage;
|
||||||
}
|
}
|
||||||
argc--;
|
|
||||||
argv++;
|
|
||||||
|
|
||||||
if (argc == 0) {
|
if (argc > 1) {
|
||||||
puklen = 0;
|
puklen = sizeof(puk);
|
||||||
puk = NULL;
|
if (parse_string_or_hexdata(argv[1], puk, &puklen) != 0) {
|
||||||
} else {
|
|
||||||
if (parse_string_or_hexdata(argv[0], puk_buf, &puklen) != 0) {
|
|
||||||
printf("Invalid key value.\n");
|
printf("Invalid key value.\n");
|
||||||
goto usage;
|
goto usage;
|
||||||
}
|
}
|
||||||
puk = &puk_buf[0];
|
|
||||||
|
|
||||||
argc--;
|
|
||||||
argv++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argc) {
|
if (argc > 2) {
|
||||||
if (parse_string_or_hexdata(argv[0], newpin_buf, &newpinlen) != 0) {
|
newpinlen = sizeof(newpin);
|
||||||
|
if (parse_string_or_hexdata(argv[2], newpin, &newpinlen) != 0) {
|
||||||
printf("Invalid key value.\n");
|
printf("Invalid key value.\n");
|
||||||
goto usage;
|
goto usage;
|
||||||
}
|
}
|
||||||
|
|
||||||
newpin = &newpin_buf[0];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
newpinlen = 0;
|
|
||||||
newpin = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
r = sc_reset_retry_counter (card, SC_AC_CHV, ref,
|
r = sc_reset_retry_counter (card, SC_AC_CHV, ref,
|
||||||
puk, puklen,
|
puklen ? puk : NULL, puklen,
|
||||||
newpin, newpinlen);
|
newpinlen ? newpin : NULL, newpinlen);
|
||||||
if (r) {
|
if (r) {
|
||||||
if (r == SC_ERROR_PIN_CODE_INCORRECT)
|
if (r == SC_ERROR_PIN_CODE_INCORRECT)
|
||||||
printf("Incorrect code.\n");
|
printf("Incorrect code.\n");
|
||||||
|
|
Loading…
Reference in New Issue