summaryrefslogtreecommitdiff
path: root/src/lib/libssl/s3_lib.c
diff options
context:
space:
mode:
authorjsing <>2022-01-06 18:23:56 +0000
committerjsing <>2022-01-06 18:23:56 +0000
commit8aaae3574818dcc48e518588a5f21f25567c50f6 (patch)
tree576e268ac740ee1d976432ed20601d429a60115e /src/lib/libssl/s3_lib.c
parent58c29787c787c30889a5c9cdee9a109dfb201177 (diff)
downloadopenbsd-8aaae3574818dcc48e518588a5f21f25567c50f6.tar.gz
openbsd-8aaae3574818dcc48e518588a5f21f25567c50f6.tar.bz2
openbsd-8aaae3574818dcc48e518588a5f21f25567c50f6.zip
Convert legacy TLS client to tls_key_share.
This requires adding DHE support to tls_key_share. In doing so, tls_key_share_peer_public() has to lose the group argument and gains an invalid_key argument. The one place that actually needs the group check is tlsext_keyshare_client_parse(), so add code to do this. ok inoguchi@ tb@
Diffstat (limited to 'src/lib/libssl/s3_lib.c')
-rw-r--r--src/lib/libssl/s3_lib.c28
1 files changed, 5 insertions, 23 deletions
diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c
index b83a380547..54261c575a 100644
--- a/src/lib/libssl/s3_lib.c
+++ b/src/lib/libssl/s3_lib.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: s3_lib.c,v 1.220 2022/01/05 17:10:02 jsing Exp $ */ 1/* $OpenBSD: s3_lib.c,v 1.221 2022/01/06 18:23:56 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -1665,35 +1665,17 @@ long
1665_SSL_get_peer_tmp_key(SSL *s, EVP_PKEY **key) 1665_SSL_get_peer_tmp_key(SSL *s, EVP_PKEY **key)
1666{ 1666{
1667 EVP_PKEY *pkey = NULL; 1667 EVP_PKEY *pkey = NULL;
1668 SESS_CERT *sc;
1669 int ret = 0; 1668 int ret = 0;
1670 1669
1671 *key = NULL; 1670 *key = NULL;
1672 1671
1673 if (s->session == NULL || s->session->sess_cert == NULL) 1672 if (S3I(s)->hs.key_share == NULL)
1674 return 0; 1673 goto err;
1675
1676 sc = s->session->sess_cert;
1677 1674
1678 if ((pkey = EVP_PKEY_new()) == NULL) 1675 if ((pkey = EVP_PKEY_new()) == NULL)
1679 return 0;
1680
1681 if (sc->peer_dh_tmp != NULL) {
1682 if (!EVP_PKEY_set1_DH(pkey, sc->peer_dh_tmp))
1683 goto err;
1684 } else if (sc->peer_ecdh_tmp) {
1685 if (!EVP_PKEY_set1_EC_KEY(pkey, sc->peer_ecdh_tmp))
1686 goto err;
1687 } else if (sc->peer_x25519_tmp != NULL) {
1688 if (!ssl_kex_dummy_ecdhe_x25519(pkey))
1689 goto err;
1690 } else if (S3I(s)->hs.key_share != NULL) {
1691 if (!tls_key_share_peer_pkey(S3I(s)->hs.key_share,
1692 pkey))
1693 goto err;
1694 } else {
1695 goto err; 1676 goto err;
1696 } 1677 if (!tls_key_share_peer_pkey(S3I(s)->hs.key_share, pkey))
1678 goto err;
1697 1679
1698 *key = pkey; 1680 *key = pkey;
1699 pkey = NULL; 1681 pkey = NULL;