[BACK]Return to skeyinit.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / skeyinit

Diff for /src/usr.bin/skeyinit/skeyinit.c between version 1.16 and 1.17

version 1.16, 1996/10/23 18:09:27 version 1.17, 1996/11/03 18:57:46
Line 27 
Line 27 
 #include <ctype.h>  #include <ctype.h>
 #include <skey.h>  #include <skey.h>
   
 #ifndef SKEY_MAXSEQ  
 #define SKEY_MAXSEQ     10000  
 #endif  
 #ifndef SKEY_NAMELEN  #ifndef SKEY_NAMELEN
 #define SKEY_NAMELEN    4  #define SKEY_NAMELEN    4
 #endif  #endif
 #ifndef SKEY_MIN_PW_LEN  
 #define SKEY_MIN_PW_LEN 10  
 #endif  
   
 void    usage __P((char *));  void    usage __P((char *));
   
Line 44 
Line 38 
         int     argc;          int     argc;
         char   *argv[];          char   *argv[];
 {  {
         int     rval, n, nn, i, l, defaultsetup=1, zerokey=0, hexmode=0;          int     rval, nn, i, l, n=0, defaultsetup=1, zerokey=0, hexmode=0;
         time_t  now;          time_t  now;
         char    hostname[MAXHOSTNAMELEN];          char    hostname[MAXHOSTNAMELEN];
         char    seed[18], tmp[80], key[8], defaultseed[17];          char    passwd[SKEY_MAX_PW_LEN+2], passwd2[SKEY_MAX_PW_LEN+2];
         char    passwd[256], passwd2[256], tbuf[27], buf[60];          char    seed[SKEY_MAX_SEED_LEN+2], defaultseed[SKEY_MAX_SEED_LEN+1];
           char    tbuf[27], buf[80], key[SKEY_BINKEY_SIZE];
         char    lastc, me[UT_NAMESIZE+1], *salt, *p, *pw, *ht=NULL;          char    lastc, me[UT_NAMESIZE+1], *salt, *p, *pw, *ht=NULL;
         struct skey skey;          struct skey skey;
         struct passwd *pp;          struct passwd *pp;
Line 57 
Line 52 
         if (geteuid() != 0)          if (geteuid() != 0)
                 errx(1, "must be setuid root.");                  errx(1, "must be setuid root.");
   
         (void)time(&now);  
         (void)sprintf(tbuf, "%05ld", (long) (now % 100000));  
   
         if (gethostname(hostname, sizeof(hostname)) < 0)          if (gethostname(hostname, sizeof(hostname)) < 0)
                 err(1, "gethostname");                  err(1, "gethostname");
         (void)strncpy(defaultseed, hostname, sizeof(defaultseed) - 1);          (void)strncpy(defaultseed, hostname, sizeof(defaultseed) - 1);
         defaultseed[SKEY_NAMELEN] = '\0';          defaultseed[SKEY_NAMELEN] = '\0';
           (void)time(&now);
           (void)sprintf(tbuf, "%05ld", (long) (now % 100000));
         (void)strncat(defaultseed, tbuf, sizeof(defaultseed) - 5);          (void)strncat(defaultseed, tbuf, sizeof(defaultseed) - 5);
   
         if ((pp = getpwuid(getuid())) == NULL)          if ((pp = getpwuid(getuid())) == NULL)
Line 87 
Line 81 
                         case 'z':                          case 'z':
                                 zerokey = 1;                                  zerokey = 1;
                                 break;                                  break;
                           case 'n':
                                   if (argv[++i][0] == '\0')
                                           usage(argv[0]);
                                   if ((n = atoi(argv[i])) < 1 || n >= SKEY_MAX_SEQ)
                                           errx(1, "count must be > 0 and < %d",
                                                SKEY_MAX_SEQ);
                                   break;
                         default:                          default:
                                 usage(argv[0]);                                  usage(argv[0]);
                         }                          }
Line 152 
Line 153 
                                      skey.seed);                                       skey.seed);
   
                         /*                          /*
                          * Lets be nice if they have a skey.seed that                           * Let's be nice if they have an skey.seed that
                          * ends in 0-8 just add one                           * ends in 0-8 just add one
                          */                           */
                         l = strlen(skey.seed);                          l = strlen(skey.seed);
Line 176 
Line 177 
                         (void)printf("[Adding %s]\n", pp->pw_name);                          (void)printf("[Adding %s]\n", pp->pw_name);
                         break;                          break;
         }          }
         n = 99;          if (n == 0)
                   n = 99;
   
         /* Set hash type if asked to */          /* Set hash type if asked to */
         if (ht) {          if (ht) {
Line 187 
Line 189 
   
         if (!defaultsetup) {          if (!defaultsetup) {
                 (void)printf("You need the 6 english words generated from the \"skey\" command.\n");                  (void)printf("You need the 6 english words generated from the \"skey\" command.\n");
                 for (i = 0;; i++) {                  for (i = 0; ; i++) {
                         if (i >= 2)                          if (i >= 2)
                                 exit(1);                                  exit(1);
   
                         (void)printf("Enter sequence count from 1 to %d: ",                          (void)printf("Enter sequence count from 1 to %d: ",
                                      SKEY_MAXSEQ);                                       SKEY_MAX_SEQ);
                         (void)fgets(tmp, sizeof(tmp), stdin);                          (void)fgets(buf, sizeof(buf), stdin);
                         n = atoi(tmp);                          n = atoi(buf);
                         if (n > 0 && n < SKEY_MAXSEQ)                          if (n > 0 && n < SKEY_MAX_SEQ)
                                 break;  /* Valid range */                                  break;  /* Valid range */
                         (void)printf("Error: Count must be > 0 and < %d\n",                          (void)printf("Error: Count must be > 0 and < %d\n",
                                      SKEY_MAXSEQ);                                       SKEY_MAX_SEQ);
                 }                  }
   
                 for (i = 0;; i++) {                  for (i = 0;; i++) {
Line 221 
Line 223 
                         if (*p == '\0')                          if (*p == '\0')
                                 break;  /* Valid seed */                                  break;  /* Valid seed */
                 }                  }
                 if (strlen(seed) > 16) {                  if (strlen(seed) > SKEY_MAX_SEED_LEN) {
                         (void)puts("Notice: Seed truncated to 16 characters.");                          (void)printf("Notice: Seed truncated to %d characters.\n",
                         seed[16] = '\0';                                       SKEY_MAX_SEED_LEN);
                 }                          seed[SKEY_MAX_SEED_LEN] = '\0';
                 if (seed[0] == '\0')                  } else if (seed[0] == '\0')
                         (void)strcpy(seed, defaultseed);                          (void)strcpy(seed, defaultseed);
   
                 for (i = 0;; i++) {                  for (i = 0;; i++) {
Line 234 
Line 236 
   
                         (void)printf("otp-%s %d %s\nS/Key access password: ",                          (void)printf("otp-%s %d %s\nS/Key access password: ",
                                      skey_get_algorithm(), n, seed);                                       skey_get_algorithm(), n, seed);
                         (void)fgets(tmp, sizeof(tmp), stdin);                          (void)fgets(buf, sizeof(buf), stdin);
                         rip(tmp);                          rip(buf);
                         backspace(tmp);                          backspace(buf);
   
                         if (tmp[0] == '?') {                          if (buf[0] == '?') {
                                 (void)puts("Enter 6 English words from secure S/Key calculation.");                                  (void)puts("Enter 6 English words from secure S/Key calculation.");
                                 continue;                                  continue;
                         } else if (tmp[0] == '\0')                          } else if (buf[0] == '\0')
                                 exit(1);                                  exit(1);
                         if (etob(key, tmp) == 1 || atob8(key, tmp) == 0)                          if (etob(key, buf) == 1 || atob8(key, buf) == 0)
                                 break;  /* Valid format */                                  break;  /* Valid format */
                         (void)puts("Invalid format - try again with 6 English words.");                          (void)puts("Invalid format - try again with 6 English words.");
                 }                  }
Line 324 
Line 326 
         char *s;          char *s;
 {  {
         (void)fprintf(stderr,          (void)fprintf(stderr,
                 "Usage: %s [-s] [-x] [-z] [-md4|-md5|-sha1] [user]\n", s);                  "Usage: %s [-s] [-x] [-z] [-n count] [-md4|-md5|-sha1] [user]\n", s);
         exit(1);          exit(1);
 }  }

Legend:
Removed from v.1.16  
changed lines
  Added in v.1.17