diff --git a/src/ssl.c b/src/ssl.c index f2451329c..58569f3e9 100755 --- a/src/ssl.c +++ b/src/ssl.c @@ -18539,6 +18539,7 @@ WOLFSSL_DH *wolfSSL_d2i_DHparams(WOLFSSL_DH **dh, const unsigned char **pp, wolfSSL_DH_free(newDH); return NULL; } + newDH->inSet = 1; if (SetDhExternal(newDH) != WOLFSSL_SUCCESS) { WOLFSSL_MSG("SetDhExternal failed"); diff --git a/wolfcrypt/src/evp.c b/wolfcrypt/src/evp.c index af4129fc4..d9207900c 100644 --- a/wolfcrypt/src/evp.c +++ b/wolfcrypt/src/evp.c @@ -5826,8 +5826,6 @@ int wolfSSL_EVP_PKEY_set1_DH(WOLFSSL_EVP_PKEY *pkey, WOLFSSL_DH *key) word32 derSz = 0; byte* derBuf = NULL; DhKey* dhkey = NULL; - mp_int pubKey; - mp_int privKey; WOLFSSL_ENTER("wolfSSL_EVP_PKEY_set1_DH"); @@ -5849,11 +5847,8 @@ int wolfSSL_EVP_PKEY_set1_DH(WOLFSSL_EVP_PKEY *pkey, WOLFSSL_DH *key) dhkey = (DhKey*)key->internal; - pubKey = dhkey->pub; - privKey = dhkey->priv; - - havePublic = mp_unsigned_bin_size(&pubKey) > 0; - havePrivate = mp_unsigned_bin_size(&privKey) > 0; + havePublic = mp_unsigned_bin_size(&dhkey->pub) > 0; + havePrivate = mp_unsigned_bin_size(&dhkey->priv) > 0; /* Get size of DER buffer only */ if (havePublic && !havePrivate) { @@ -5891,15 +5886,8 @@ int wolfSSL_EVP_PKEY_set1_DH(WOLFSSL_EVP_PKEY *pkey, WOLFSSL_DH *key) } /* Store DH key into pkey (DER format) */ - pkey->pkey.ptr = (char*)XMALLOC(derSz, pkey->heap, DYNAMIC_TYPE_DER); - if (pkey->pkey.ptr == NULL) { - WOLFSSL_MSG("key malloc failed"); - XFREE(derBuf, pkey->heap, DYNAMIC_TYPE_TMP_BUFFER); - return WOLFSSL_FAILURE; - } + pkey->pkey.ptr = (char*)derBuf; pkey->pkey_sz = derSz; - XMEMCPY(pkey->pkey.ptr, derBuf, derSz); - XFREE(derBuf, pkey->heap, DYNAMIC_TYPE_TMP_BUFFER); return WOLFSSL_SUCCESS; }