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

Diff for /src/usr.bin/skey/skey.c between version 1.29 and 1.30

version 1.29, 2015/10/09 20:14:35 version 1.30, 2015/10/09 20:24:37
Line 31 
Line 31 
 #include <readpassphrase.h>  #include <readpassphrase.h>
 #include <skey.h>  #include <skey.h>
   
 void    usage(char *);  void usage();
   
   extern char *__progname;
   
 int  int
 main(int argc, char *argv[])  main(int argc, char *argv[])
 {  {
         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, *algo;
         const char *errstr;          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 (strncmp(__progname, "otp-", 4) == 0) {
                 slash++;                  algo = __progname + 4;
         else                  if (skey_set_algorithm(algo) == NULL)
                 slash = argv[0];                          errx(1, "Unknown hash algorithm %s", algo);
         if (strncmp(slash, "otp-", 4) == 0) {  
                 slash += 4;  
                 if (skey_set_algorithm(slash) == NULL)  
                         errx(1, "Unknown hash algorithm %s", slash);  
         }          }
   
         for (i = 1; i < argc && argv[i][0] == '-' && strcmp(argv[i], "--");) {          for (i = 1; i < argc && argv[i][0] == '-' && strcmp(argv[i], "--");) {
Line 58 
Line 56 
                         switch (argv[i][1]) {                          switch (argv[i][1]) {
                         case 'n':                          case 'n':
                                 if (++i == argc)                                  if (++i == argc)
                                         usage(argv[0]);                                          usage();
                                 cnt = strtonum(argv[i], 1, SKEY_MAX_SEQ -1, &errstr);                                  cnt = strtonum(argv[i], 1, SKEY_MAX_SEQ -1, &errstr);
                                 if (errstr)                                  if (errstr)
                                         usage(argv[0]);                                          usage();
                                 break;                                  break;
                         case 'p':                          case 'p':
                                 if (++i == argc)                                  if (++i == argc)
                                         usage(argv[0]);                                          usage();
                                 if (strlcpy(passwd, argv[i], sizeof(passwd)) >=                                  if (strlcpy(passwd, argv[i], sizeof(passwd)) >=
                                     sizeof(passwd))                                      sizeof(passwd))
                                         errx(1, "Password too long");                                          errx(1, "Password too long");
Line 75 
Line 73 
                                 hexmode = 1;                                  hexmode = 1;
                                 break;                                  break;
                         default:                          default:
                                 usage(argv[0]);                                  usage();
                         }                          }
                 } else {                  } else {
                         /* Multi character switches are hash types */                          /* Multi character switches are hash types */
                         if (skey_set_algorithm(&argv[i][1]) == NULL) {                          if (skey_set_algorithm(&argv[i][1]) == NULL) {
                                 warnx("Unknown hash algorithm %s", &argv[i][1]);                                  warnx("Unknown hash algorithm %s", &argv[i][1]);
                                 usage(argv[0]);                                  usage();
                         }                          }
                 }                  }
                 i++;                  i++;
         }          }
   
         if (argc > i + 2)          if (argc > i + 2)
                 usage(argv[0]);                  usage();
   
         /* Could be in the form <number>/<seed> */          /* Could be in the form <number>/<seed> */
         if (argc <= i + 1) {          if (argc <= i + 1) {
                 /* look for / in it */                  /* look for / in it */
                 if (argc <= i)                  if (argc <= i)
                         usage(argv[0]);                          usage();
                 slash = strchr(argv[i], '/');                  slash = strchr(argv[i], '/');
                 if (slash == NULL)                  if (slash == NULL)
                         usage(argv[0]);                          usage();
                 *slash++ = '\0';                  *slash++ = '\0';
                 seed = slash;                  seed = slash;
   
                 n = strtonum(argv[i], 0, SKEY_MAX_SEQ, &errstr);                  n = strtonum(argv[i], 0, SKEY_MAX_SEQ, &errstr);
                 if (errstr) {                  if (errstr) {
                         warnx("%s: %s", argv[i], errstr);                          warnx("%s: %s", argv[i], errstr);
                         usage(argv[0]);                          usage();
                 }                  }
         } else {          } else {
                 n = strtonum(argv[i], 0, SKEY_MAX_SEQ, &errstr);                  n = strtonum(argv[i], 0, SKEY_MAX_SEQ, &errstr);
                 if (errstr) {                  if (errstr) {
                         warnx("%s: %s", argv[i], errstr);                          warnx("%s: %s", argv[i], errstr);
                         usage(argv[0]);                          usage();
                 }                  }
                 seed = argv[++i];                  seed = argv[++i];
         }          }
Line 147 
Line 145 
 }  }
   
 void  void
 usage(char *s)  usage(void)
 {  {
         fprintf(stderr,          fprintf(stderr,
             "usage: %s [-x] [-md5 | -rmd160 | -sha1] [-n count]\n\t"              "usage: %s [-x] [-md5 | -rmd160 | -sha1] [-n count]\n\t"
             "[-p passphrase] <sequence#>[/] key\n", s);              "[-p passphrase] <sequence#>[/] key\n", __progname);
         exit(1);          exit(1);
 }  }

Legend:
Removed from v.1.29  
changed lines
  Added in v.1.30