Remove DH usage from tls_process_cke_dhe
We instead set the encoded public key directly in the EVP_PKEY object.
@@ -2962,11 +2962,8 @@ static int tls_process_cke_rsa(SSL *s, PACKET *pkt)
static int tls_process_cke_dhe(SSL *s, PACKET *pkt)
{
-#ifndef OPENSSL_NO_DH
EVP_PKEY *skey = NULL;
- DH *cdh;
unsigned int i;
- BIGNUM *pub_key;
const unsigned char *data;
EVP_PKEY *ckey = NULL;
int ret = 0;
@@ -2996,11 +2993,8 @@ static int tls_process_cke_dhe(SSL *s, PACKET *pkt)
goto err;
}
- cdh = EVP_PKEY_get0_DH(ckey);
- pub_key = BN_bin2bn(data, i, NULL);
- if (pub_key == NULL || cdh == NULL || !DH_set0_key(cdh, pub_key, NULL)) {
+ if (!EVP_PKEY_set1_encoded_public_key(ckey, data, i)) {
SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
- BN_free(pub_key);
goto err;
}
@@ -3015,11 +3009,6 @@ static int tls_process_cke_dhe(SSL *s, PACKET *pkt)
err:
EVP_PKEY_free(ckey);
return ret;
-#else
- /* Should never happen */
- SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
- return 0;
-#endif
}
static int tls_process_cke_ecdhe(SSL *s, PACKET *pkt)
