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

Diff for /src/usr.bin/ssh/cipher.c between version 1.111 and 1.112

version 1.111, 2018/02/23 15:58:37 version 1.112, 2018/09/13 02:08:33
Line 438 
Line 438 
 }  }
   
 int  int
 cipher_get_keyiv(struct sshcipher_ctx *cc, u_char *iv, u_int len)  cipher_get_keyiv(struct sshcipher_ctx *cc, u_char *iv, size_t len)
 {  {
 #ifdef WITH_OPENSSL  #ifdef WITH_OPENSSL
         const struct sshcipher *c = cc->cipher;          const struct sshcipher *c = cc->cipher;
Line 465 
Line 465 
                 return 0;                  return 0;
         else if (evplen < 0)          else if (evplen < 0)
                 return SSH_ERR_LIBCRYPTO_ERROR;                  return SSH_ERR_LIBCRYPTO_ERROR;
         if ((u_int)evplen != len)          if ((size_t)evplen != len)
                 return SSH_ERR_INVALID_ARGUMENT;                  return SSH_ERR_INVALID_ARGUMENT;
         if (cipher_authlen(c)) {          if (cipher_authlen(c)) {
                 if (!EVP_CIPHER_CTX_ctrl(cc->evp, EVP_CTRL_GCM_IV_GEN,                  if (!EVP_CIPHER_CTX_ctrl(cc->evp, EVP_CTRL_GCM_IV_GEN,
                    len, iv))                     len, iv))
                        return SSH_ERR_LIBCRYPTO_ERROR;                         return SSH_ERR_LIBCRYPTO_ERROR;
         } else          } else if (!EVP_CIPHER_CTX_get_iv(cc->evp, iv, len))
                 memcpy(iv, cc->evp->iv, len);                 return SSH_ERR_LIBCRYPTO_ERROR;
 #endif  #endif
         return 0;          return 0;
 }  }
   
 int  int
 cipher_set_keyiv(struct sshcipher_ctx *cc, const u_char *iv)  cipher_set_keyiv(struct sshcipher_ctx *cc, const u_char *iv, size_t len)
 {  {
 #ifdef WITH_OPENSSL  #ifdef WITH_OPENSSL
         const struct sshcipher *c = cc->cipher;          const struct sshcipher *c = cc->cipher;
Line 494 
Line 494 
         evplen = EVP_CIPHER_CTX_iv_length(cc->evp);          evplen = EVP_CIPHER_CTX_iv_length(cc->evp);
         if (evplen <= 0)          if (evplen <= 0)
                 return SSH_ERR_LIBCRYPTO_ERROR;                  return SSH_ERR_LIBCRYPTO_ERROR;
           if ((size_t)evplen != len)
                   return SSH_ERR_INVALID_ARGUMENT;
         if (cipher_authlen(c)) {          if (cipher_authlen(c)) {
                 /* XXX iv arg is const, but EVP_CIPHER_CTX_ctrl isn't */                  /* XXX iv arg is const, but EVP_CIPHER_CTX_ctrl isn't */
                 if (!EVP_CIPHER_CTX_ctrl(cc->evp,                  if (!EVP_CIPHER_CTX_ctrl(cc->evp,
                     EVP_CTRL_GCM_SET_IV_FIXED, -1, (void *)iv))                      EVP_CTRL_GCM_SET_IV_FIXED, -1, (void *)iv))
                         return SSH_ERR_LIBCRYPTO_ERROR;                          return SSH_ERR_LIBCRYPTO_ERROR;
         } else          } else if (!EVP_CIPHER_CTX_set_iv(cc->evp, iv, evplen))
                 memcpy(cc->evp->iv, iv, evplen);                  return SSH_ERR_LIBCRYPTO_ERROR;
 #endif  #endif
         return 0;          return 0;
 }  }

Legend:
Removed from v.1.111  
changed lines
  Added in v.1.112