=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/skeyinit/skeyinit.c,v retrieving revision 1.9 retrieving revision 1.10 diff -c -r1.9 -r1.10 *** src/usr.bin/skeyinit/skeyinit.c 1996/09/29 23:11:04 1.9 --- src/usr.bin/skeyinit/skeyinit.c 1996/09/30 06:30:43 1.10 *************** *** 1,4 **** ! /* $OpenBSD: skeyinit.c,v 1.9 1996/09/29 23:11:04 millert Exp $ */ /* $NetBSD: skeyinit.c,v 1.6 1995/06/05 19:50:48 pk Exp $ */ /* S/KEY v1.1b (skeyinit.c) --- 1,4 ---- ! /* $OpenBSD: skeyinit.c,v 1.10 1996/09/30 06:30:43 millert Exp $ */ /* $NetBSD: skeyinit.c,v 1.6 1995/06/05 19:50:48 pk Exp $ */ /* S/KEY v1.1b (skeyinit.c) *************** *** 115,134 **** } salt = pp->pw_passwd; - (void)setpriority(PRIO_PROCESS, 0, -4); - if (getuid() != 0) { - (void)setpriority(PRIO_PROCESS, 0, -4); - pw = getpass("Password:"); ! p = crypt(pw, salt); ! ! (void)setpriority(PRIO_PROCESS, 0, 0); ! ! if (pp && strcmp(p, pp->pw_passwd)) ! errx(1, "Password incorrect."); } rval = skeylookup(&skey, pp->pw_name); switch (rval) { case -1: --- 115,136 ---- } salt = pp->pw_passwd; if (getuid() != 0) { pw = getpass("Password:"); ! if (strcasecmp(pw, "s/key") == 0) { ! if (skey_haskey(me)) ! exit(1); ! if (skey_authenticate(me)) ! errx(1, "Password incorrect."); ! } else { ! p = crypt(pw, salt); ! if (strcmp(p, pp->pw_passwd)) ! errx(1, "Password incorrect."); ! } } + (void)setpriority(PRIO_PROCESS, 0, -4); + rval = skeylookup(&skey, pp->pw_name); switch (rval) { case -1: *************** *** 177,196 **** for (i = 0;; i++) { if (i >= 2) exit(1); (void)printf("Enter sequence count from 1 to %d: ", SKEY_MAXSEQ); (void)fgets(tmp, sizeof(tmp), stdin); n = atoi(tmp); if (n > 0 && n < SKEY_MAXSEQ) break; /* Valid range */ ! (void)printf("\n Error: Count must be > 0 and < %d\n", SKEY_MAXSEQ); } ! (void)printf("Enter new key [default %s]: ", defaultseed); ! (void)fflush(stdout); ! (void)fgets(seed, sizeof(seed), stdin); ! rip(seed); if (strlen(seed) > 16) { (void)puts("Notice: Seed truncated to 16 characters."); seed[16] = '\0'; --- 179,215 ---- for (i = 0;; i++) { if (i >= 2) exit(1); + (void)printf("Enter sequence count from 1 to %d: ", SKEY_MAXSEQ); (void)fgets(tmp, sizeof(tmp), stdin); n = atoi(tmp); if (n > 0 && n < SKEY_MAXSEQ) break; /* Valid range */ ! (void)printf("Error: Count must be > 0 and < %d\n", SKEY_MAXSEQ); } ! for (i = 0;; i++) { ! if (i >= 2) ! exit(1); ! ! (void)printf("Enter new key [default %s]: ", ! defaultseed); ! (void)fgets(seed, sizeof(seed), stdin); ! rip(seed); ! for (p = seed; *p; p++) { ! if (isalpha(*p)) { ! if (isupper(*p)) ! *p = tolower(*p); ! } else if (!isdigit(*p)) { ! (void)puts("Error: seed may only contain alpha numeric characters"); ! break; ! } ! } ! if (*p == '\0') ! break; /* Valid seed */ ! } if (strlen(seed) > 16) { (void)puts("Notice: Seed truncated to 16 characters."); seed[16] = '\0'; *************** *** 202,209 **** if (i >= 2) exit(1); ! (void)printf("skey %d %s\nskey access password: ", ! n, seed); (void)fgets(tmp, sizeof(tmp), stdin); rip(tmp); backspace(tmp); --- 221,228 ---- if (i >= 2) exit(1); ! (void)printf("otp-%s %d %s\nS/Key access password: ", ! skey_get_algorithm(), n, seed); (void)fgets(tmp, sizeof(tmp), stdin); rip(tmp); backspace(tmp); *************** *** 268,276 **** (void)fprintf(skey.keyfile, "%s %s %04d %-16s %s %-21s\n", pp->pw_name, skey_get_algorithm(), n, seed, skey.val, tbuf); (void)fclose(skey.keyfile); - (void)printf("\nID %s skey is %d %s\n", pp->pw_name, n, seed); - (void)printf("Next login password: %s\n", hexmode ? put8(buf, key) : btoe(buf, key)); exit(0); } --- 287,298 ---- (void)fprintf(skey.keyfile, "%s %s %04d %-16s %s %-21s\n", pp->pw_name, skey_get_algorithm(), n, seed, skey.val, tbuf); (void)fclose(skey.keyfile); + (void)setpriority(PRIO_PROCESS, 0, 0); + + (void)printf("\nID %s skey is %d %s\n", pp->pw_name, n, seed); + (void)printf("Next login password: %s\n\n", + hexmode ? put8(buf, key) : btoe(buf, key)); exit(0); }