version 1.27, 2014/03/20 20:39:13 |
version 1.28, 2015/04/18 18:28:38 |
|
|
#include <string.h> |
#include <string.h> |
#include <err.h> |
#include <err.h> |
#include <unistd.h> |
#include <unistd.h> |
|
#include <limits.h> |
#include <skey.h> |
#include <skey.h> |
|
|
void usage(char *); |
void usage(char *); |
|
|
int n, i, cnt = 1, pass = 0, hexmode = 0; |
int n, i, cnt = 1, pass = 0, hexmode = 0; |
char passwd[SKEY_MAX_PW_LEN+1], key[SKEY_BINKEY_SIZE]; |
char passwd[SKEY_MAX_PW_LEN+1], key[SKEY_BINKEY_SIZE]; |
char buf[33], *seed, *slash; |
char buf[33], *seed, *slash; |
|
const char *errstr; |
|
|
/* If we were called as otp-METHOD, set algorithm based on that */ |
/* If we were called as otp-METHOD, set algorithm based on that */ |
if ((slash = strrchr(argv[0], '/'))) |
if ((slash = strrchr(argv[0], '/'))) |
|
|
case 'n': |
case 'n': |
if (++i == argc) |
if (++i == argc) |
usage(argv[0]); |
usage(argv[0]); |
cnt = atoi(argv[i]); |
cnt = strtonum(argv[i], 1, SKEY_MAX_SEQ -1, &errstr); |
|
if (errstr) |
|
usage(argv[0]); |
break; |
break; |
case 'p': |
case 'p': |
if (++i == argc) |
if (++i == argc) |
|
|
*slash++ = '\0'; |
*slash++ = '\0'; |
seed = slash; |
seed = slash; |
|
|
if ((n = atoi(argv[i])) < 0) { |
n = strtonum(argv[i], 0, SKEY_MAX_SEQ, &errstr); |
warnx("%d not positive", n); |
if (errstr) { |
|
warnx("%s: %s", argv[i], errstr); |
usage(argv[0]); |
usage(argv[0]); |
} else if (n > SKEY_MAX_SEQ) { |
|
warnx("%d is larger than max (%d)", n, SKEY_MAX_SEQ); |
|
usage(argv[0]); |
|
} |
} |
} else { |
} else { |
if ((n = atoi(argv[i])) < 0) { |
n = strtonum(argv[i], 0, SKEY_MAX_SEQ, &errstr); |
warnx("%d not positive", n); |
if (errstr) { |
usage(argv[0]); |
warnx("%s: %s", argv[i], errstr); |
} else if (n > SKEY_MAX_SEQ) { |
|
warnx("%d is larger than max (%d)", n, SKEY_MAX_SEQ); |
|
usage(argv[0]); |
usage(argv[0]); |
} |
} |
seed = argv[++i]; |
seed = argv[++i]; |