version 1.4, 1996/09/29 04:33:58 |
version 1.5, 1996/09/29 21:28:38 |
|
|
int n, i, cnt = 1, pass = 0, hexmode = 0; |
int n, i, cnt = 1, pass = 0, hexmode = 0; |
char passwd[256], key[8], buf[33], *seed, *slash; |
char passwd[256], key[8], buf[33], *seed, *slash; |
|
|
while ((i = getopt(argc, argv, "n:p:x45")) != EOF) { |
/* If we were called as otp-METHOD, set algorithm based on that */ |
switch (i) { |
if (strncmp(argv[0], "otp-", 4) == 0) { |
case 'n': |
if (skey_set_algorithm(&argv[0][4]) == NULL) |
cnt = atoi(optarg); |
errx(1, "Unknown hash algorithm %s", &argv[0][4]); |
break; |
|
case 'p': |
|
strcpy(passwd, optarg); |
|
pass = 1; |
|
break; |
|
case 'x': |
|
hexmode = 1; |
|
break; |
|
case '4': |
|
skey_set_MDX(4); |
|
break; |
|
case '5': |
|
skey_set_MDX(5); |
|
break; |
|
} |
|
} |
} |
|
|
/* check for md4/md5 argument */ |
for (i = 1; i < argc && argv[i][0] == '-' && strcmp(argv[i], "--");) { |
if (argv[optind]) { |
if (argv[i][2] == '\0') { |
if (strcmp(argv[optind], "MD4") == 0) { |
/* Single character switch */ |
skey_set_MDX(4); |
switch (argv[i][1]) { |
optind++; |
case 'n': |
} else if (strcmp(argv[optind], "MD5") == 0) { |
if (i + 1 == argc) |
skey_set_MDX(5); |
usage(argv[0]); |
optind++; |
cnt = atoi(argv[++i]); |
|
break; |
|
case 'p': |
|
if (i + 1 == argc) |
|
usage(argv[0]); |
|
(void)strcpy(passwd, argv[++i]); |
|
pass = 1; |
|
break; |
|
case 'x': |
|
hexmode = 1; |
|
break; |
|
default: |
|
usage(argv[0]); |
|
} |
|
} else { |
|
/* Multi character switches are hash types */ |
|
if (skey_set_algorithm(&argv[i][1]) == NULL) { |
|
warnx("Unknown hash algorithm %s", &argv[i][1]); |
|
usage(argv[0]); |
|
} |
} |
} |
|
i++; |
} |
} |
|
|
/* could be in the form <number>/<seed> */ |
/* Could be in the form <number>/<seed> */ |
if (argc <= optind + 1) { |
if (argc <= i + 1) { |
/* look for / in it */ |
/* look for / in it */ |
if (argc <= optind) |
if (argc <= i) |
usage(argv[0]); |
usage(argv[0]); |
slash = strchr(argv[optind], '/'); |
slash = strchr(argv[i], '/'); |
if (slash == NULL) |
if (slash == NULL) |
usage(argv[0]); |
usage(argv[0]); |
*slash++ = '\0'; |
*slash++ = '\0'; |
seed = slash; |
seed = slash; |
|
|
if ((n = atoi(argv[optind])) < 0) { |
if ((n = atoi(argv[i])) < 0) { |
warnx("%s not positive", argv[optind]); |
warnx("%s not positive", argv[i]); |
usage(argv[0]); |
usage(argv[0]); |
} |
} |
} else { |
} else { |
if ((n = atoi(argv[optind])) < 0) { |
if ((n = atoi(argv[i])) < 0) { |
warnx("%s not positive", argv[optind]); |
warnx("%s not positive", argv[i]); |
usage(argv[0]); |
usage(argv[0]); |
} |
} |
seed = argv[++optind]; |
seed = argv[++i]; |
} |
} |
|
|
/* Get user's secret password */ |
/* Get user's secret password */ |
|
|
usage(s) |
usage(s) |
char *s; |
char *s; |
{ |
{ |
(void)fprintf(stderr, "Usage: %s [-x] [-4|-5] [-n count] [-p password] [MD4|MD5] sequence# [/] key", s); |
(void)fprintf(stderr, "Usage: %s [-x] [-md4|-md5|-sha1] [-n count] [-p password] <sequence#>[/] key\n", s); |
exit(1); |
exit(1); |
} |
} |