[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.83 and 1.84

version 1.83, 2019/09/06 05:23:55 version 1.84, 2019/10/09 00:04:42
Line 3154 
Line 3154 
                 if ((r = sshkey_froms(buf, &k)) != 0 ||                  if ((r = sshkey_froms(buf, &k)) != 0 ||
                     (r = sshbuf_get_bignum2(buf, &dsa_priv_key)) != 0)                      (r = sshbuf_get_bignum2(buf, &dsa_priv_key)) != 0)
                         goto out;                          goto out;
                   if (k->type != type) {
                           r = SSH_ERR_INVALID_FORMAT;
                           goto out;
                   }
                 if (!DSA_set0_key(k->dsa, NULL, dsa_priv_key)) {                  if (!DSA_set0_key(k->dsa, NULL, dsa_priv_key)) {
                         r = SSH_ERR_LIBCRYPTO_ERROR;                          r = SSH_ERR_LIBCRYPTO_ERROR;
                         goto out;                          goto out;
Line 3196 
Line 3200 
                 if ((r = sshkey_froms(buf, &k)) != 0 ||                  if ((r = sshkey_froms(buf, &k)) != 0 ||
                     (r = sshbuf_get_bignum2(buf, &exponent)) != 0)                      (r = sshbuf_get_bignum2(buf, &exponent)) != 0)
                         goto out;                          goto out;
                   if (k->type != type ||
                       k->ecdsa_nid != sshkey_ecdsa_nid_from_name(tname)) {
                           r = SSH_ERR_INVALID_FORMAT;
                           goto out;
                   }
                 if (EC_KEY_set_private_key(k->ecdsa, exponent) != 1) {                  if (EC_KEY_set_private_key(k->ecdsa, exponent) != 1) {
                         r = SSH_ERR_LIBCRYPTO_ERROR;                          r = SSH_ERR_LIBCRYPTO_ERROR;
                         goto out;                          goto out;
Line 3239 
Line 3248 
                     (r = sshbuf_get_bignum2(buf, &rsa_p)) != 0 ||                      (r = sshbuf_get_bignum2(buf, &rsa_p)) != 0 ||
                     (r = sshbuf_get_bignum2(buf, &rsa_q)) != 0)                      (r = sshbuf_get_bignum2(buf, &rsa_q)) != 0)
                         goto out;                          goto out;
                   if (k->type != type) {
                           r = SSH_ERR_INVALID_FORMAT;
                           goto out;
                   }
                 if (!RSA_set0_key(k->rsa, NULL, NULL, rsa_d)) {                  if (!RSA_set0_key(k->rsa, NULL, NULL, rsa_d)) {
                         r = SSH_ERR_LIBCRYPTO_ERROR;                          r = SSH_ERR_LIBCRYPTO_ERROR;
                         goto out;                          goto out;
Line 3276 
Line 3289 
                     (r = sshbuf_get_string(buf, &ed25519_pk, &pklen)) != 0 ||                      (r = sshbuf_get_string(buf, &ed25519_pk, &pklen)) != 0 ||
                     (r = sshbuf_get_string(buf, &ed25519_sk, &sklen)) != 0)                      (r = sshbuf_get_string(buf, &ed25519_sk, &sklen)) != 0)
                         goto out;                          goto out;
                   if (k->type != type) {
                           r = SSH_ERR_INVALID_FORMAT;
                           goto out;
                   }
                 if (pklen != ED25519_PK_SZ || sklen != ED25519_SK_SZ) {                  if (pklen != ED25519_PK_SZ || sklen != ED25519_SK_SZ) {
                         r = SSH_ERR_INVALID_FORMAT;                          r = SSH_ERR_INVALID_FORMAT;
                         goto out;                          goto out;
                 }                  }
                 k->ed25519_pk = ed25519_pk;                  k->ed25519_pk = ed25519_pk;
                 k->ed25519_sk = ed25519_sk;                  k->ed25519_sk = ed25519_sk;
                 ed25519_pk = ed25519_sk = NULL;                  ed25519_pk = ed25519_sk = NULL; /* transferred */
                 break;                  break;
 #ifdef WITH_XMSS  #ifdef WITH_XMSS
         case KEY_XMSS:          case KEY_XMSS:
Line 3313 
Line 3330 
                     (r = sshbuf_get_string(buf, &xmss_pk, &pklen)) != 0 ||                      (r = sshbuf_get_string(buf, &xmss_pk, &pklen)) != 0 ||
                     (r = sshbuf_get_string(buf, &xmss_sk, &sklen)) != 0)                      (r = sshbuf_get_string(buf, &xmss_sk, &sklen)) != 0)
                         goto out;                          goto out;
                 if (strcmp(xmss_name, k->xmss_name)) {                  if (k->type != type || strcmp(xmss_name, k->xmss_name) != 0) {
                         r = SSH_ERR_INVALID_FORMAT;                          r = SSH_ERR_INVALID_FORMAT;
                         goto out;                          goto out;
                 }                  }
Line 3820 
Line 3837 
         }          }
   
         /* check that an appropriate amount of auth data is present */          /* check that an appropriate amount of auth data is present */
         if (sshbuf_len(decoded) < encrypted_len + authlen) {          if (sshbuf_len(decoded) < authlen ||
               sshbuf_len(decoded) - authlen < encrypted_len) {
                 r = SSH_ERR_INVALID_FORMAT;                  r = SSH_ERR_INVALID_FORMAT;
                 goto out;                  goto out;
         }          }

Legend:
Removed from v.1.83  
changed lines
  Added in v.1.84