[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.7 and 1.8

version 1.7, 1996/09/29 04:34:08 version 1.8, 1996/09/29 21:28:42
Line 37 
Line 37 
 #define SKEY_MIN_PW_LEN 4  #define SKEY_MIN_PW_LEN 4
 #endif  #endif
   
   void    usage __P((char *));
   
 int  int
 main(argc, argv)  main(argc, argv)
         int     argc;          int     argc;
         char   *argv[];          char   *argv[];
 {  {
         int     rval, n, nn, i, l, md=0, defaultsetup=1, zerokey=0, hexmode=0;          int     rval, n, nn, i, l, 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    seed[18], tmp[80], key[8], defaultseed[17];
         char    passwd[256], passwd2[256], tbuf[27], buf[60];          char    passwd[256], passwd2[256], tbuf[27], buf[60];
         char    lastc, me[UT_NAMESIZE+1], *salt, *p, *pw;          char    lastc, me[UT_NAMESIZE+1], *salt, *p, *pw, *ht=NULL;
         struct skey skey;          struct skey skey;
         struct passwd *pp;          struct passwd *pp;
         struct tm *tm;          struct tm *tm;
Line 71 
Line 73 
         if ((pp = getpwnam(me)) == NULL)          if ((pp = getpwnam(me)) == NULL)
                 err(1, "Who are you?");                  err(1, "Who are you?");
   
         while ((i = getopt(argc, argv, "sxz45")) != EOF) {          for (i = 1; i < argc && argv[i][0] == '-' && strcmp(argv[i], "--");) {
                 switch (i) {                  if (argv[i][2] == '\0') {
                           /* Single character switch */
                           switch (argv[i][1]) {
                         case 's':                          case 's':
                                 defaultsetup = 0;                                  defaultsetup = 0;
                                 break;                                  break;
Line 82 
Line 86 
                         case 'z':                          case 'z':
                                 zerokey = 1;                                  zerokey = 1;
                                 break;                                  break;
                         case '4':                          default:
                                 md = 4;                                  usage(argv[0]);
                                 break;                          }
                         case '5':                  } else {
                                 md = 5;                          /* Multi character switches are hash types */
                                 break;                          if ((ht = skey_set_algorithm(&argv[i][1])) == NULL) {
                                   warnx("Unknown hash algorithm %s", &argv[i][1]);
                                   usage(argv[0]);
                           }
                 }                  }
                   i++;
         }          }
   
         /* check for md4/md5 argument */  
         if (argv[optind]) {  
                 if (strcmp(argv[optind], "MD4") == 0) {  
                         md = 4;  
                         optind++;  
                 } else if (strcmp(argv[optind], "MD5") == 0) {  
                         md = 5;  
                         optind++;  
                 }  
         }  
   
         /* check for optional user string */          /* check for optional user string */
         if (argc - optind  > 1) {          if (argc - i  > 1) {
                 (void)fprintf(stderr,                  usage(argv[0]);
                         "Usage: %s [-s] [-x] [-z] [-4|-5] [MD4|MD5] [user]\n",          } else if (argv[i]) {
                         argv[0]);                  if ((pp = getpwnam(argv[i])) == NULL)
                 exit(1);  
         } else if (argv[optind]) {  
                 if ((pp = getpwnam(argv[optind])) == NULL)  
                         err(1, "User unknown");                          err(1, "User unknown");
   
                 if (strcmp(pp->pw_name, me) != 0) {                  if (strcmp(pp->pw_name, me) != 0) {
Line 174 
Line 168 
         }          }
         n = 99;          n = 99;
   
         /* Set MDX (currently 4 or 5) if given the option */          /* Set hash type if asked to */
         if (md)          if (ht)
                 skey_set_MDX(md);                  skey_set_algorithm(ht);
   
         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");
Line 271 
Line 265 
   
         btoa8(skey.val, key);          btoa8(skey.val, key);
   
         (void)fprintf(skey.keyfile, "%s MD%d %04d %-16s %s %-21s\n",          (void)fprintf(skey.keyfile, "%s %s %04d %-16s %s %-21s\n",
             pp->pw_name, skey_get_MDX(), n, seed, skey.val, tbuf);              pp->pw_name, skey_get_algorithm(), n, seed, skey.val, tbuf);
         (void)fclose(skey.keyfile);          (void)fclose(skey.keyfile);
         (void)printf("\nID %s skey is %d %s\n", pp->pw_name, n, seed);          (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));          (void)printf("Next login password: %s\n", hexmode ? put8(buf, key) : btoe(buf, key));
   
         exit(0);          exit(0);
   }
   
   void
   usage(s)
           char *s;
   {
           (void)fprintf(stderr,
                   "Usage: %s [-s] [-x] [-z] [-md4|-md5|-sha1] [user]\n", s);
           exit(1);
 }  }

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8