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

Diff for /src/usr.bin/ssh/sshkey.c between version 1.138 and 1.139

version 1.138, 2023/08/21 04:36:46 version 1.139, 2023/10/11 22:41:05
Line 3367 
Line 3367 
         struct sshkey *prv = NULL;          struct sshkey *prv = NULL;
         BIO *bio = NULL;          BIO *bio = NULL;
         int r;          int r;
           size_t len;
   
         if (keyp != NULL)          if (keyp != NULL)
                 *keyp = NULL;                  *keyp = NULL;
Line 3443 
Line 3444 
                 if (prv != NULL && prv->ecdsa != NULL)                  if (prv != NULL && prv->ecdsa != NULL)
                         sshkey_dump_ec_key(prv->ecdsa);                          sshkey_dump_ec_key(prv->ecdsa);
 #endif  #endif
           } else if (EVP_PKEY_base_id(pk) == EVP_PKEY_ED25519 &&
               (type == KEY_UNSPEC || type == KEY_ED25519)) {
                   if ((prv = sshkey_new(KEY_UNSPEC)) == NULL ||
                       (prv->ed25519_sk = calloc(1, ED25519_SK_SZ)) == NULL ||
                       (prv->ed25519_pk = calloc(1, ED25519_PK_SZ)) == NULL) {
                           r = SSH_ERR_ALLOC_FAIL;
                           goto out;
                   }
                   prv->type = KEY_ED25519;
                   len = ED25519_PK_SZ;
                   if (!EVP_PKEY_get_raw_public_key(pk, prv->ed25519_pk, &len)) {
                           r = SSH_ERR_LIBCRYPTO_ERROR;
                           goto out;
                   }
                   if (len != ED25519_PK_SZ) {
                           r = SSH_ERR_INVALID_FORMAT;
                           goto out;
                   }
                   len = ED25519_SK_SZ - ED25519_PK_SZ;
                   if (!EVP_PKEY_get_raw_private_key(pk, prv->ed25519_sk, &len)) {
                           r = SSH_ERR_LIBCRYPTO_ERROR;
                           goto out;
                   }
                   if (len != ED25519_SK_SZ - ED25519_PK_SZ) {
                           r = SSH_ERR_INVALID_FORMAT;
                           goto out;
                   }
                   /* Append the public key to our private key */
                   memcpy(prv->ed25519_sk + (ED25519_SK_SZ - ED25519_PK_SZ),
                       prv->ed25519_pk, ED25519_PK_SZ);
   #ifdef DEBUG_PK
                   sshbuf_dump_data(prv->ed25519_sk, ED25519_SK_SZ, stderr);
   #endif
         } else {          } else {
                 r = SSH_ERR_INVALID_FORMAT;                  r = SSH_ERR_INVALID_FORMAT;
                 goto out;                  goto out;
Line 3472 
Line 3506 
                 *commentp = NULL;                  *commentp = NULL;
   
         switch (type) {          switch (type) {
         case KEY_ED25519:  
         case KEY_XMSS:          case KEY_XMSS:
                 /* No fallback for new-format-only keys */                  /* No fallback for new-format-only keys */
                 return sshkey_parse_private2(blob, type, passphrase,                  return sshkey_parse_private2(blob, type, passphrase,

Legend:
Removed from v.1.138  
changed lines
  Added in v.1.139