summaryrefslogtreecommitdiffstats
path: root/lib/libssl/s3_lib.c
diff options
context:
space:
mode:
authorjsing <jsing@openbsd.org>2020-01-30 17:09:23 +0000
committerjsing <jsing@openbsd.org>2020-01-30 17:09:23 +0000
commit4673309b7add502ba4c75a5eed0b550a38c0a8b1 (patch)
tree2e79c3808af558cd2138d008ecdfa90a87136f99 /lib/libssl/s3_lib.c
parentFactor out/rewrite the ECDHE EC point key exchange code. (diff)
downloadwireguard-openbsd-4673309b7add502ba4c75a5eed0b550a38c0a8b1.tar.xz
wireguard-openbsd-4673309b7add502ba4c75a5eed0b550a38c0a8b1.zip
Provide struct/functions for handling TLSv1.3 key shares.
Pull out the key share handling code and provide a clean/self contained interface. This will make it easier to support groups other than X25519. ok beck@ inoguchi@ tb@
Diffstat (limited to 'lib/libssl/s3_lib.c')
-rw-r--r--lib/libssl/s3_lib.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/lib/libssl/s3_lib.c b/lib/libssl/s3_lib.c
index 252242e053b..2832ef4a93a 100644
--- a/lib/libssl/s3_lib.c
+++ b/lib/libssl/s3_lib.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: s3_lib.c,v 1.189 2020/01/23 10:40:59 jsing Exp $ */
+/* $OpenBSD: s3_lib.c,v 1.190 2020/01/30 17:09:23 jsing Exp $ */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
@@ -1564,12 +1564,8 @@ ssl3_free(SSL *s)
DH_free(S3I(s)->tmp.dh);
EC_KEY_free(S3I(s)->tmp.ecdh);
- freezero(S3I(s)->tmp.x25519, X25519_KEY_LENGTH);
-
+ tls13_key_share_free(S3I(s)->hs_tls13.key_share);
tls13_secrets_destroy(S3I(s)->hs_tls13.secrets);
- freezero(S3I(s)->hs_tls13.x25519_private, X25519_KEY_LENGTH);
- freezero(S3I(s)->hs_tls13.x25519_public, X25519_KEY_LENGTH);
- freezero(S3I(s)->hs_tls13.x25519_peer_public, X25519_KEY_LENGTH);
freezero(S3I(s)->hs_tls13.cookie, S3I(s)->hs_tls13.cookie_len);
sk_X509_NAME_pop_free(S3I(s)->tmp.ca_names, X509_NAME_free);
@@ -1599,21 +1595,17 @@ ssl3_clear(SSL *s)
S3I(s)->tmp.dh = NULL;
EC_KEY_free(S3I(s)->tmp.ecdh);
S3I(s)->tmp.ecdh = NULL;
+ S3I(s)->tmp.ecdh_nid = NID_undef;
+
freezero(S3I(s)->hs.sigalgs, S3I(s)->hs.sigalgs_len);
S3I(s)->hs.sigalgs = NULL;
S3I(s)->hs.sigalgs_len = 0;
- freezero(S3I(s)->tmp.x25519, X25519_KEY_LENGTH);
- S3I(s)->tmp.x25519 = NULL;
+ tls13_key_share_free(S3I(s)->hs_tls13.key_share);
+ S3I(s)->hs_tls13.key_share = NULL;
tls13_secrets_destroy(S3I(s)->hs_tls13.secrets);
S3I(s)->hs_tls13.secrets = NULL;
- freezero(S3I(s)->hs_tls13.x25519_private, X25519_KEY_LENGTH);
- S3I(s)->hs_tls13.x25519_private = NULL;
- freezero(S3I(s)->hs_tls13.x25519_public, X25519_KEY_LENGTH);
- S3I(s)->hs_tls13.x25519_public = NULL;
- freezero(S3I(s)->hs_tls13.x25519_peer_public, X25519_KEY_LENGTH);
- S3I(s)->hs_tls13.x25519_peer_public = NULL;
freezero(S3I(s)->hs_tls13.cookie, S3I(s)->hs_tls13.cookie_len);
S3I(s)->hs_tls13.cookie = NULL;
S3I(s)->hs_tls13.cookie_len = 0;