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

Diff for /src/usr.bin/ssh/ssh-keygen.c between version 1.458 and 1.463

version 1.458, 2022/08/05 05:01:40 version 1.463, 2023/02/28 08:45:24
Line 1314 
Line 1314 
                         unlink(tmp);                          unlink(tmp);
                         fatal("fdopen: %s", strerror(oerrno));                          fatal("fdopen: %s", strerror(oerrno));
                 }                  }
                 fchmod(fd, sb.st_mode & 0644);                  (void)fchmod(fd, sb.st_mode & 0644);
                 inplace = 1;                  inplace = 1;
         }          }
         /* XXX support identity_file == "-" for stdin */          /* XXX support identity_file == "-" for stdin */
Line 1456 
Line 1456 
  */   */
 static int  static int
 do_print_resource_record(struct passwd *pw, char *fname, char *hname,  do_print_resource_record(struct passwd *pw, char *fname, char *hname,
     int print_generic)      int print_generic, char * const *opts, size_t nopts)
 {  {
         struct sshkey *public;          struct sshkey *public;
         char *comment = NULL;          char *comment = NULL;
         struct stat st;          struct stat st;
         int r;          int r, hash = -1;
           size_t i;
   
           for (i = 0; i < nopts; i++) {
                   if (strncasecmp(opts[i], "hashalg=", 8) == 0) {
                           if ((hash = ssh_digest_alg_by_name(opts[i] + 8)) == -1)
                                   fatal("Unsupported hash algorithm");
                   } else {
                           error("Invalid option \"%s\"", opts[i]);
                           return SSH_ERR_INVALID_ARGUMENT;
                   }
           }
         if (fname == NULL)          if (fname == NULL)
                 fatal_f("no filename");                  fatal_f("no filename");
         if (stat(fname, &st) == -1) {          if (stat(fname, &st) == -1) {
Line 1472 
Line 1482 
         }          }
         if ((r = sshkey_load_public(fname, &public, &comment)) != 0)          if ((r = sshkey_load_public(fname, &public, &comment)) != 0)
                 fatal_r(r, "Failed to read v2 public key from \"%s\"", fname);                  fatal_r(r, "Failed to read v2 public key from \"%s\"", fname);
         export_dns_rr(hname, public, stdout, print_generic);          export_dns_rr(hname, public, stdout, print_generic, hash);
         sshkey_free(public);          sshkey_free(public);
         free(comment);          free(comment);
         return 1;          return 1;
Line 1894 
Line 1904 
 }  }
   
 static void  static void
   parse_hex_u64(const char *s, uint64_t *up)
   {
           char *ep;
           unsigned long long ull;
   
           errno = 0;
           ull = strtoull(s, &ep, 16);
           if (*s == '\0' || *ep != '\0')
                   fatal("Invalid certificate time: not a number");
           if (errno == ERANGE && ull == ULONG_MAX)
                   fatal_fr(SSH_ERR_SYSTEM_ERROR, "Invalid certificate time");
           *up = (uint64_t)ull;
   }
   
   static void
 parse_cert_times(char *timespec)  parse_cert_times(char *timespec)
 {  {
         char *from, *to;          char *from, *to;
Line 1915 
Line 1940 
   
         /*          /*
          * from:to, where           * from:to, where
          * from := [+-]timespec | YYYYMMDD | YYYYMMDDHHMMSS | "always"           * from := [+-]timespec | YYYYMMDD | YYYYMMDDHHMMSS | 0x... | "always"
          *   to := [+-]timespec | YYYYMMDD | YYYYMMDDHHMMSS | "forever"           *   to := [+-]timespec | YYYYMMDD | YYYYMMDDHHMMSS | 0x... | "forever"
          */           */
         from = xstrdup(timespec);          from = xstrdup(timespec);
         to = strchr(from, ':');          to = strchr(from, ':');
Line 1928 
Line 1953 
                 cert_valid_from = parse_relative_time(from, now);                  cert_valid_from = parse_relative_time(from, now);
         else if (strcmp(from, "always") == 0)          else if (strcmp(from, "always") == 0)
                 cert_valid_from = 0;                  cert_valid_from = 0;
           else if (strncmp(from, "0x", 2) == 0)
                   parse_hex_u64(from, &cert_valid_from);
         else if (parse_absolute_time(from, &cert_valid_from) != 0)          else if (parse_absolute_time(from, &cert_valid_from) != 0)
                 fatal("Invalid from time \"%s\"", from);                  fatal("Invalid from time \"%s\"", from);
   
Line 1935 
Line 1962 
                 cert_valid_to = parse_relative_time(to, now);                  cert_valid_to = parse_relative_time(to, now);
         else if (strcmp(to, "forever") == 0)          else if (strcmp(to, "forever") == 0)
                 cert_valid_to = ~(u_int64_t)0;                  cert_valid_to = ~(u_int64_t)0;
           else if (strncmp(to, "0x", 2) == 0)
                   parse_hex_u64(to, &cert_valid_to);
         else if (parse_absolute_time(to, &cert_valid_to) != 0)          else if (parse_absolute_time(to, &cert_valid_to) != 0)
                 fatal("Invalid to time \"%s\"", to);                  fatal("Invalid to time \"%s\"", to);
   
Line 3501 
Line 3530 
                         else                          else
                                 fatal("Unsupported moduli option %s", optarg);                                  fatal("Unsupported moduli option %s", optarg);
                         break;                          break;
                 case '?':  
                 default:                  default:
                         usage();                          usage();
                 }                  }
Line 3681 
Line 3709 
   
                 if (have_identity) {                  if (have_identity) {
                         n = do_print_resource_record(pw, identity_file,                          n = do_print_resource_record(pw, identity_file,
                             rr_hostname, print_generic);                              rr_hostname, print_generic, opts, nopts);
                         if (n == 0)                          if (n == 0)
                                 fatal("%s: %s", identity_file, strerror(errno));                                  fatal("%s: %s", identity_file, strerror(errno));
                         exit(0);                          exit(0);
Line 3689 
Line 3717 
   
                         n += do_print_resource_record(pw,                          n += do_print_resource_record(pw,
                             _PATH_HOST_RSA_KEY_FILE, rr_hostname,                              _PATH_HOST_RSA_KEY_FILE, rr_hostname,
                             print_generic);                              print_generic, opts, nopts);
                         n += do_print_resource_record(pw,                          n += do_print_resource_record(pw,
                             _PATH_HOST_DSA_KEY_FILE, rr_hostname,                              _PATH_HOST_DSA_KEY_FILE, rr_hostname,
                             print_generic);                              print_generic, opts, nopts);
                         n += do_print_resource_record(pw,                          n += do_print_resource_record(pw,
                             _PATH_HOST_ECDSA_KEY_FILE, rr_hostname,                              _PATH_HOST_ECDSA_KEY_FILE, rr_hostname,
                             print_generic);                              print_generic, opts, nopts);
                         n += do_print_resource_record(pw,                          n += do_print_resource_record(pw,
                             _PATH_HOST_ED25519_KEY_FILE, rr_hostname,                              _PATH_HOST_ED25519_KEY_FILE, rr_hostname,
                             print_generic);                              print_generic, opts, nopts);
                         n += do_print_resource_record(pw,                          n += do_print_resource_record(pw,
                             _PATH_HOST_XMSS_KEY_FILE, rr_hostname,                              _PATH_HOST_XMSS_KEY_FILE, rr_hostname,
                             print_generic);                              print_generic, opts, nopts);
                         if (n == 0)                          if (n == 0)
                                 fatal("no keys found.");                                  fatal("no keys found.");
                         exit(0);                          exit(0);

Legend:
Removed from v.1.458  
changed lines
  Added in v.1.463