Don't generate an unnecessary Diffie-Hellman key in TLS 1.3 clients.
authorDavid Benjamin <davidben@google.com>
Tue, 23 Jul 2019 18:14:48 +0000 (14:14 -0400)
committerDavid Benjamin <davidben@google.com>
Thu, 25 Jul 2019 20:26:06 +0000 (16:26 -0400)
commite4a282fe030363a87d52d4a3214eb7490036015e
treeaf395d501c42137e4539b584786dd03406062ca4
parent54aa9d51b09d67e90db443f682cface795f5af9e
Don't generate an unnecessary Diffie-Hellman key in TLS 1.3 clients.

tls_parse_stoc_key_share was generating a new EVP_PKEY public/private
keypair and then overrides it with the server public key, so the
generation was a waste anyway. Instead, it should create a
parameters-only EVP_PKEY.

(This is a consequence of OpenSSL using the same type for empty key,
empty key with key type, empty key with key type + parameters, public
key, and private key. As a result, it's easy to mistakenly mix such
things up, as happened here.)

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Kurt Roeckx <kurt@roeckx.be>
(Merged from https://github.com/openssl/openssl/pull/9445)

(cherry picked from commit 166c0b98fd6e8b1bb341397642527a9396468f6c)
ssl/statem/extensions_clnt.c