[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.463 and 1.471

version 1.463, 2023/02/28 08:45:24 version 1.471, 2023/09/04 10:29:58
Line 61 
Line 61 
 #include "ssh-pkcs11.h"  #include "ssh-pkcs11.h"
 #endif  #endif
   
 #ifdef WITH_OPENSSL  #define DEFAULT_KEY_TYPE_NAME "ed25519"
 # define DEFAULT_KEY_TYPE_NAME "rsa"  
 #else  
 # define DEFAULT_KEY_TYPE_NAME "ed25519"  
 #endif  
   
 /*  /*
  * Default number of bits in the RSA, DSA and ECDSA keys.  These value can be   * Default number of bits in the RSA, DSA and ECDSA keys.  These value can be
Line 252 
Line 248 
         char *name = NULL;          char *name = NULL;
   
         if (key_type_name == NULL)          if (key_type_name == NULL)
                 name = _PATH_SSH_CLIENT_ID_RSA;                  name = _PATH_SSH_CLIENT_ID_ED25519;
         else {          else {
                 switch (sshkey_type_from_name(key_type_name)) {                  switch (sshkey_type_from_name(key_type_name)) {
                 case KEY_DSA_CERT:                  case KEY_DSA_CERT:
Line 459 
Line 455 
 {  {
         struct sshkey *key = NULL;          struct sshkey *key = NULL;
         char *type, *cipher;          char *type, *cipher;
           const char *alg = NULL;
         u_char e1, e2, e3, *sig = NULL, data[] = "abcde12345";          u_char e1, e2, e3, *sig = NULL, data[] = "abcde12345";
         int r, rlen, ktype;          int r, rlen, ktype;
         u_int magic, i1, i2, i3, i4;          u_int magic, i1, i2, i3, i4;
Line 567 
Line 564 
                 if ((r = ssh_rsa_complete_crt_parameters(key, rsa_iqmp)) != 0)                  if ((r = ssh_rsa_complete_crt_parameters(key, rsa_iqmp)) != 0)
                         fatal_fr(r, "generate RSA parameters");                          fatal_fr(r, "generate RSA parameters");
                 BN_clear_free(rsa_iqmp);                  BN_clear_free(rsa_iqmp);
                   alg = "rsa-sha2-256";
                 break;                  break;
         }          }
         rlen = sshbuf_len(b);          rlen = sshbuf_len(b);
Line 575 
Line 573 
   
         /* try the key */          /* try the key */
         if ((r = sshkey_sign(key, &sig, &slen, data, sizeof(data),          if ((r = sshkey_sign(key, &sig, &slen, data, sizeof(data),
             NULL, NULL, NULL, 0)) != 0)              alg, NULL, NULL, 0)) != 0)
                 error_fr(r, "signing with converted key failed");                  error_fr(r, "signing with converted key failed");
         else if ((r = sshkey_verify(key, sig, slen, data, sizeof(data),          else if ((r = sshkey_verify(key, sig, slen, data, sizeof(data),
             NULL, 0, NULL)) != 0)              alg, 0, NULL)) != 0)
                 error_fr(r, "verification with converted key failed");                  error_fr(r, "verification with converted key failed");
         if (r != 0) {          if (r != 0) {
                 sshkey_free(key);                  sshkey_free(key);
Line 974 
Line 972 
                  * accept a public key prefixed with a hostname or options.                   * accept a public key prefixed with a hostname or options.
                  * Try a bare key first, otherwise skip the leading stuff.                   * Try a bare key first, otherwise skip the leading stuff.
                  */                   */
                   comment = NULL;
                 if ((public = try_read_key(&cp)) == NULL) {                  if ((public = try_read_key(&cp)) == NULL) {
                         i = strtol(cp, &ep, 10);                          i = strtol(cp, &ep, 10);
                         if (i == 0 || ep == NULL ||                          if (i == 0 || ep == NULL ||
Line 1161 
Line 1160 
         case HKF_STATUS_OK:          case HKF_STATUS_OK:
         case HKF_STATUS_MATCHED:          case HKF_STATUS_MATCHED:
                 /*                  /*
                  * Don't hash hosts already already hashed, with wildcard                   * Don't hash hosts already hashed, with wildcard
                  * characters or a CA/revocation marker.                   * characters or a CA/revocation marker.
                  */                   */
                 if (was_hashed || has_wild || l->marker != MRK_NONE) {                  if (was_hashed || has_wild || l->marker != MRK_NONE) {
Line 2197 
Line 2196 
         if ((r = sshbuf_load_file(path, &krlbuf)) != 0)          if ((r = sshbuf_load_file(path, &krlbuf)) != 0)
                 fatal_r(r, "Unable to load KRL %s", path);                  fatal_r(r, "Unable to load KRL %s", path);
         /* XXX check sigs */          /* XXX check sigs */
         if ((r = ssh_krl_from_blob(krlbuf, krlp, NULL, 0)) != 0 ||          if ((r = ssh_krl_from_blob(krlbuf, krlp)) != 0 ||
             *krlp == NULL)              *krlp == NULL)
                 fatal_r(r, "Invalid KRL file %s", path);                  fatal_r(r, "Invalid KRL file %s", path);
         sshbuf_free(krlbuf);          sshbuf_free(krlbuf);
Line 2220 
Line 2219 
          * OpenSSH base64 hashes omit trailing '='           * OpenSSH base64 hashes omit trailing '='
          * characters; put them back for decode.           * characters; put them back for decode.
          */           */
         tlen = strlen(cp);          if ((tlen = strlen(cp)) >= SIZE_MAX - 5)
                   fatal_f("hash too long: %zu bytes", tlen);
         tmp = xmalloc(tlen + 4 + 1);          tmp = xmalloc(tlen + 4 + 1);
         strlcpy(tmp, cp, tlen + 1);          strlcpy(tmp, cp, tlen + 1);
         while ((tlen % 4) != 0) {          while ((tlen % 4) != 0) {
Line 2262 
Line 2262 
         if (!quiet)          if (!quiet)
                 printf("Revoking from %s\n", path);                  printf("Revoking from %s\n", path);
         while (getline(&line, &linesize, krl_spec) != -1) {          while (getline(&line, &linesize, krl_spec) != -1) {
                   if (linesize >= INT_MAX) {
                           fatal_f("%s contains unparsable line, len=%zu",
                               path, linesize);
                   }
                 lnum++;                  lnum++;
                 was_explicit_key = was_sha1 = was_sha256 = was_hash = 0;                  was_explicit_key = was_sha1 = was_sha256 = was_hash = 0;
                 cp = line + strspn(line, " \t");                  cp = line + strspn(line, " \t");
Line 2435 
Line 2439 
   
         if ((kbuf = sshbuf_new()) == NULL)          if ((kbuf = sshbuf_new()) == NULL)
                 fatal("sshbuf_new failed");                  fatal("sshbuf_new failed");
         if (ssh_krl_to_blob(krl, kbuf, NULL, 0) != 0)          if (ssh_krl_to_blob(krl, kbuf) != 0)
                 fatal("Couldn't generate KRL");                  fatal("Couldn't generate KRL");
         if ((r = sshbuf_write_file(identity_file, kbuf)) != 0)          if ((r = sshbuf_write_file(identity_file, kbuf)) != 0)
                 fatal("write %s: %s", identity_file, strerror(errno));                  fatal("write %s: %s", identity_file, strerror(errno));
Line 2992 
Line 2996 
                 } else if (strncmp(opts[i], "start-line=", 11) == 0) {                  } else if (strncmp(opts[i], "start-line=", 11) == 0) {
                         start_lineno = strtoul(opts[i]+11, NULL, 10);                          start_lineno = strtoul(opts[i]+11, NULL, 10);
                 } else if (strncmp(opts[i], "checkpoint=", 11) == 0) {                  } else if (strncmp(opts[i], "checkpoint=", 11) == 0) {
                           free(checkpoint);
                         checkpoint = xstrdup(opts[i]+11);                          checkpoint = xstrdup(opts[i]+11);
                 } else if (strncmp(opts[i], "generator=", 10) == 0) {                  } else if (strncmp(opts[i], "generator=", 10) == 0) {
                         generator_wanted = (u_int32_t)strtonum(                          generator_wanted = (u_int32_t)strtonum(
Line 3030 
Line 3035 
             generator_wanted, checkpoint,              generator_wanted, checkpoint,
             start_lineno, lines_to_process) != 0)              start_lineno, lines_to_process) != 0)
                 fatal("modulus screening failed");                  fatal("modulus screening failed");
           if (in != stdin)
                   (void)fclose(in);
           free(checkpoint);
 #else /* WITH_OPENSSL */  #else /* WITH_OPENSSL */
         fatal("Moduli screening is not supported");          fatal("Moduli screening is not supported");
 #endif /* WITH_OPENSSL */  #endif /* WITH_OPENSSL */

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