[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.299 and 1.302

version 1.299, 2017/03/10 04:26:06 version 1.302, 2017/04/30 23:18:44
Line 143 
Line 143 
 char *certflags_command = NULL;  char *certflags_command = NULL;
 char *certflags_src_addr = NULL;  char *certflags_src_addr = NULL;
   
   /* Arbitrary extensions specified by user */
   struct cert_userext {
           char *key;
           char *val;
           int crit;
   };
   struct cert_userext *cert_userext;
   size_t ncert_userext;
   
 /* Conversion to/from various formats */  /* Conversion to/from various formats */
 int convert_to = 0;  int convert_to = 0;
 int convert_from = 0;  int convert_from = 0;
Line 231 
Line 240 
                 name = _PATH_SSH_CLIENT_ID_RSA;                  name = _PATH_SSH_CLIENT_ID_RSA;
         else {          else {
                 switch (sshkey_type_from_name(key_type_name)) {                  switch (sshkey_type_from_name(key_type_name)) {
                 case KEY_RSA1:  
                         name = _PATH_SSH_CLIENT_IDENTITY;  
                         break;  
                 case KEY_DSA_CERT:                  case KEY_DSA_CERT:
                 case KEY_DSA:                  case KEY_DSA:
                         name = _PATH_SSH_CLIENT_ID_DSA;                          name = _PATH_SSH_CLIENT_ID_DSA;
Line 303 
Line 309 
         char comment[61];          char comment[61];
         int r;          int r;
   
         if (k->type == KEY_RSA1)  
                 fatal("version 1 keys are not supported");  
         if ((r = sshkey_to_blob(k, &blob, &len)) != 0)          if ((r = sshkey_to_blob(k, &blob, &len)) != 0)
                 fatal("key_to_blob failed: %s", ssh_err(r));                  fatal("key_to_blob failed: %s", ssh_err(r));
         /* Comment + surrounds must fit into 72 chars (RFC 4716 sec 3.3) */          /* Comment + surrounds must fit into 72 chars (RFC 4716 sec 3.3) */
Line 326 
Line 330 
 do_convert_to_pkcs8(struct sshkey *k)  do_convert_to_pkcs8(struct sshkey *k)
 {  {
         switch (sshkey_type_plain(k->type)) {          switch (sshkey_type_plain(k->type)) {
         case KEY_RSA1:  
         case KEY_RSA:          case KEY_RSA:
                 if (!PEM_write_RSA_PUBKEY(stdout, k->rsa))                  if (!PEM_write_RSA_PUBKEY(stdout, k->rsa))
                         fatal("PEM_write_RSA_PUBKEY failed");                          fatal("PEM_write_RSA_PUBKEY failed");
Line 349 
Line 352 
 do_convert_to_pem(struct sshkey *k)  do_convert_to_pem(struct sshkey *k)
 {  {
         switch (sshkey_type_plain(k->type)) {          switch (sshkey_type_plain(k->type)) {
         case KEY_RSA1:  
         case KEY_RSA:          case KEY_RSA:
                 if (!PEM_write_RSAPublicKey(stdout, k->rsa))                  if (!PEM_write_RSAPublicKey(stdout, k->rsa))
                         fatal("PEM_write_RSAPublicKey failed");                          fatal("PEM_write_RSAPublicKey failed");
Line 802 
Line 804 
         struct sshkey *ret;          struct sshkey *ret;
         int r;          int r;
   
         if ((ret = sshkey_new(KEY_RSA1)) == NULL)  
                 fatal("sshkey_new failed");  
         /* Try RSA1 */  
         if ((r = sshkey_read(ret, cpp)) == 0)  
                 return ret;  
         /* Try modern */  
         sshkey_free(ret);  
         if ((ret = sshkey_new(KEY_UNSPEC)) == NULL)          if ((ret = sshkey_new(KEY_UNSPEC)) == NULL)
                 fatal("sshkey_new failed");                  fatal("sshkey_new failed");
         if ((r = sshkey_read(ret, cpp)) == 0)          if ((r = sshkey_read(ret, cpp)) == 0)
Line 964 
Line 959 
                 char *path;                  char *path;
         } key_types[] = {          } key_types[] = {
 #ifdef WITH_OPENSSL  #ifdef WITH_OPENSSL
 #ifdef WITH_SSH1  
                 { "rsa1", "RSA1", _PATH_HOST_KEY_FILE },  
 #endif /* WITH_SSH1 */  
                 { "rsa", "RSA" ,_PATH_HOST_RSA_KEY_FILE },                  { "rsa", "RSA" ,_PATH_HOST_RSA_KEY_FILE },
                 { "dsa", "DSA", _PATH_HOST_DSA_KEY_FILE },                  { "dsa", "DSA", _PATH_HOST_DSA_KEY_FILE },
                 { "ecdsa", "ECDSA",_PATH_HOST_ECDSA_KEY_FILE },                  { "ecdsa", "ECDSA",_PATH_HOST_ECDSA_KEY_FILE },
Line 1420 
Line 1412 
                 }                  }
         }          }
   
         if (private->type != KEY_RSA1 && private->type != KEY_ED25519 &&          if (private->type != KEY_ED25519 && !use_new_format) {
             !use_new_format) {                  error("Comments are only supported for keys stored in "
                 error("Comments are only supported for RSA1 or keys stored in "  
                     "the new format (-o).");                      "the new format (-o).");
                 explicit_bzero(passphrase, strlen(passphrase));                  explicit_bzero(passphrase, strlen(passphrase));
                 sshkey_free(private);                  sshkey_free(private);
Line 1515 
Line 1506 
 static void  static void
 prepare_options_buf(struct sshbuf *c, int which)  prepare_options_buf(struct sshbuf *c, int which)
 {  {
           size_t i;
   
         sshbuf_reset(c);          sshbuf_reset(c);
         if ((which & OPTIONS_CRITICAL) != 0 &&          if ((which & OPTIONS_CRITICAL) != 0 &&
             certflags_command != NULL)              certflags_command != NULL)
Line 1537 
Line 1530 
         if ((which & OPTIONS_CRITICAL) != 0 &&          if ((which & OPTIONS_CRITICAL) != 0 &&
             certflags_src_addr != NULL)              certflags_src_addr != NULL)
                 add_string_option(c, "source-address", certflags_src_addr);                  add_string_option(c, "source-address", certflags_src_addr);
           for (i = 0; i < ncert_userext; i++) {
                   if ((cert_userext[i].crit && (which & OPTIONS_EXTENSIONS)) ||
                       (!cert_userext[i].crit && (which & OPTIONS_CRITICAL)))
                           continue;
                   if (cert_userext[i].val == NULL)
                           add_flag_option(c, cert_userext[i].key);
                   else {
                           add_string_option(c, cert_userext[i].key,
                               cert_userext[i].val);
                   }
           }
 }  }
   
 static struct sshkey *  static struct sshkey *
Line 1773 
Line 1777 
 static void  static void
 add_cert_option(char *opt)  add_cert_option(char *opt)
 {  {
         char *val;          char *val, *cp;
           int iscrit = 0;
   
         if (strcasecmp(opt, "clear") == 0)          if (strcasecmp(opt, "clear") == 0)
                 certflags_flags = 0;                  certflags_flags = 0;
Line 1813 
Line 1818 
                 if (addr_match_cidr_list(NULL, val) != 0)                  if (addr_match_cidr_list(NULL, val) != 0)
                         fatal("Invalid source-address list");                          fatal("Invalid source-address list");
                 certflags_src_addr = xstrdup(val);                  certflags_src_addr = xstrdup(val);
           } else if (strncasecmp(opt, "extension:", 10) == 0 ||
                      (iscrit = (strncasecmp(opt, "critical:", 9) == 0))) {
                   val = xstrdup(strchr(opt, ':') + 1);
                   if ((cp = strchr(val, '=')) != NULL)
                           *cp++ = '\0';
                   cert_userext = xreallocarray(cert_userext, ncert_userext + 1,
                       sizeof(*cert_userext));
                   cert_userext[ncert_userext].key = val;
                   cert_userext[ncert_userext].val = cp == NULL ?
                       NULL : xstrdup(cp);
                   cert_userext[ncert_userext].crit = iscrit;
                   ncert_userext++;
         } else          } else
                 fatal("Unsupported certificate option \"%s\"", opt);                  fatal("Unsupported certificate option \"%s\"", opt);
 }  }
Line 2195 
Line 2212 
 }  }
 #endif  #endif
   
 #ifdef WITH_SSH1  
 # define RSA1_USAGE " | rsa1"  
 #else  
 # define RSA1_USAGE ""  
 #endif  
   
 static void  static void
 usage(void)  usage(void)
 {  {
         fprintf(stderr,          fprintf(stderr,
             "usage: ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa%s]\n"              "usage: ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa]\n"
             "                  [-N new_passphrase] [-C comment] [-f output_keyfile]\n"              "                  [-N new_passphrase] [-C comment] [-f output_keyfile]\n"
             "       ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]\n"              "       ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]\n"
             "       ssh-keygen -i [-m key_format] [-f input_keyfile]\n"              "       ssh-keygen -i [-m key_format] [-f input_keyfile]\n"
Line 2213 
Line 2224 
             "       ssh-keygen -y [-f input_keyfile]\n"              "       ssh-keygen -y [-f input_keyfile]\n"
             "       ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]\n"              "       ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]\n"
             "       ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]\n"              "       ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]\n"
             "       ssh-keygen -B [-f input_keyfile]\n", RSA1_USAGE);              "       ssh-keygen -B [-f input_keyfile]\n");
 #ifdef ENABLE_PKCS11  #ifdef ENABLE_PKCS11
         fprintf(stderr,          fprintf(stderr,
             "       ssh-keygen -D pkcs11\n");              "       ssh-keygen -D pkcs11\n");

Legend:
Removed from v.1.299  
changed lines
  Added in v.1.302