version 1.34, 2002/05/17 00:55:54 |
version 1.35, 2002/05/17 15:54:13 |
|
|
int argc; |
int argc; |
char *argv[]; |
char *argv[]; |
{ |
{ |
int rval, i, l, n, defaultsetup, zerokey, hexmode, enable, convert; |
int rval, i, l, n, defaultsetup, rmkey, hexmode, enable, convert; |
char hostname[MAXHOSTNAMELEN]; |
char hostname[MAXHOSTNAMELEN]; |
char seed[SKEY_MAX_SEED_LEN + 2], defaultseed[SKEY_MAX_SEED_LEN + 1]; |
char seed[SKEY_MAX_SEED_LEN + 2], defaultseed[SKEY_MAX_SEED_LEN + 1]; |
char buf[256], key[SKEY_BINKEY_SIZE], filename[PATH_MAX], *ht; |
char buf[256], key[SKEY_BINKEY_SIZE], filename[PATH_MAX], *ht; |
|
|
struct skey skey; |
struct skey skey; |
struct passwd *pp; |
struct passwd *pp; |
|
|
n = zerokey = hexmode = enable = convert = 0; |
n = rmkey = hexmode = enable = convert = 0; |
defaultsetup = 1; |
defaultsetup = 1; |
ht = auth_type = NULL; |
ht = auth_type = NULL; |
|
|
|
|
case 'x': |
case 'x': |
hexmode = 1; |
hexmode = 1; |
break; |
break; |
case 'z': |
case 'r': |
zerokey = 1; |
rmkey = 1; |
break; |
break; |
case 'n': |
case 'n': |
if (argv[++i] == NULL || argv[i][0] == '\0') |
if (argv[++i] == NULL || argv[i][0] == '\0') |
|
|
err(1, "cannot open database"); |
err(1, "cannot open database"); |
break; |
break; |
case 0: |
case 0: |
/* comment out user if asked to */ |
/* remove user if asked to do so */ |
if (zerokey) |
if (rmkey) { |
exit(skeyzero(&skey)); |
if (snprintf(filename, sizeof(filename), |
|
"%s/%s", _PATH_SKEYDIR, pp->pw_name) |
|
>= sizeof(filename)) { |
|
errno = ENAMETOOLONG; |
|
err(1, "Cannot remove S/Key entry"); |
|
} |
|
if (unlink(filename) != 0) |
|
err(1, "Cannot remove S/Key entry"); |
|
printf("S/Key entry for %s removed.\n", |
|
pp->pw_name); |
|
exit(0); |
|
} |
|
|
(void)printf("[Updating %s with %s]\n", pp->pw_name, |
(void)printf("[Updating %s with %s]\n", pp->pw_name, |
ht ? ht : skey_get_algorithm()); |
ht ? ht : skey_get_algorithm()); |
|
|
} |
} |
break; |
break; |
case 1: |
case 1: |
if (zerokey) |
if (rmkey) |
errx(1, "You have no entry to zero."); |
errx(1, "You have no entry to remove."); |
(void)printf("[Adding %s with %s]\n", pp->pw_name, |
(void)printf("[Adding %s with %s]\n", pp->pw_name, |
ht ? ht : skey_get_algorithm()); |
ht ? ht : skey_get_algorithm()); |
if (snprintf(filename, sizeof(filename), "%s/%s", |
if (snprintf(filename, sizeof(filename), "%s/%s", |