summaryrefslogtreecommitdiff
path: root/src/lib/libssl/s3_lib.c
diff options
context:
space:
mode:
authorjsing <>2020-01-30 17:09:23 +0000
committerjsing <>2020-01-30 17:09:23 +0000
commitf0f131814afdbc818e8b7b88541fca62af421a5d (patch)
tree7eeb14d221177f2f4d5d5b5c1ba2452ace34da8e /src/lib/libssl/s3_lib.c
parent1f07a6fc3b3b9d44b731e6cf17fd00b540758db8 (diff)
downloadopenbsd-f0f131814afdbc818e8b7b88541fca62af421a5d.tar.gz
openbsd-f0f131814afdbc818e8b7b88541fca62af421a5d.tar.bz2
openbsd-f0f131814afdbc818e8b7b88541fca62af421a5d.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 'src/lib/libssl/s3_lib.c')
-rw-r--r--src/lib/libssl/s3_lib.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c
index 252242e053..2832ef4a93 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.189 2020/01/23 10:40:59 jsing Exp $ */ 1/* $OpenBSD: s3_lib.c,v 1.190 2020/01/30 17:09:23 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 *
@@ -1564,12 +1564,8 @@ ssl3_free(SSL *s)
1564 DH_free(S3I(s)->tmp.dh); 1564 DH_free(S3I(s)->tmp.dh);
1565 EC_KEY_free(S3I(s)->tmp.ecdh); 1565 EC_KEY_free(S3I(s)->tmp.ecdh);
1566 1566
1567 freezero(S3I(s)->tmp.x25519, X25519_KEY_LENGTH); 1567 tls13_key_share_free(S3I(s)->hs_tls13.key_share);
1568
1569 tls13_secrets_destroy(S3I(s)->hs_tls13.secrets); 1568 tls13_secrets_destroy(S3I(s)->hs_tls13.secrets);
1570 freezero(S3I(s)->hs_tls13.x25519_private, X25519_KEY_LENGTH);
1571 freezero(S3I(s)->hs_tls13.x25519_public, X25519_KEY_LENGTH);
1572 freezero(S3I(s)->hs_tls13.x25519_peer_public, X25519_KEY_LENGTH);
1573 freezero(S3I(s)->hs_tls13.cookie, S3I(s)->hs_tls13.cookie_len); 1569 freezero(S3I(s)->hs_tls13.cookie, S3I(s)->hs_tls13.cookie_len);
1574 1570
1575 sk_X509_NAME_pop_free(S3I(s)->tmp.ca_names, X509_NAME_free); 1571 sk_X509_NAME_pop_free(S3I(s)->tmp.ca_names, X509_NAME_free);
@@ -1599,21 +1595,17 @@ ssl3_clear(SSL *s)
1599 S3I(s)->tmp.dh = NULL; 1595 S3I(s)->tmp.dh = NULL;
1600 EC_KEY_free(S3I(s)->tmp.ecdh); 1596 EC_KEY_free(S3I(s)->tmp.ecdh);
1601 S3I(s)->tmp.ecdh = NULL; 1597 S3I(s)->tmp.ecdh = NULL;
1598 S3I(s)->tmp.ecdh_nid = NID_undef;
1599
1602 freezero(S3I(s)->hs.sigalgs, S3I(s)->hs.sigalgs_len); 1600 freezero(S3I(s)->hs.sigalgs, S3I(s)->hs.sigalgs_len);
1603 S3I(s)->hs.sigalgs = NULL; 1601 S3I(s)->hs.sigalgs = NULL;
1604 S3I(s)->hs.sigalgs_len = 0; 1602 S3I(s)->hs.sigalgs_len = 0;
1605 1603
1606 freezero(S3I(s)->tmp.x25519, X25519_KEY_LENGTH); 1604 tls13_key_share_free(S3I(s)->hs_tls13.key_share);
1607 S3I(s)->tmp.x25519 = NULL; 1605 S3I(s)->hs_tls13.key_share = NULL;
1608 1606
1609 tls13_secrets_destroy(S3I(s)->hs_tls13.secrets); 1607 tls13_secrets_destroy(S3I(s)->hs_tls13.secrets);
1610 S3I(s)->hs_tls13.secrets = NULL; 1608 S3I(s)->hs_tls13.secrets = NULL;
1611 freezero(S3I(s)->hs_tls13.x25519_private, X25519_KEY_LENGTH);
1612 S3I(s)->hs_tls13.x25519_private = NULL;
1613 freezero(S3I(s)->hs_tls13.x25519_public, X25519_KEY_LENGTH);
1614 S3I(s)->hs_tls13.x25519_public = NULL;
1615 freezero(S3I(s)->hs_tls13.x25519_peer_public, X25519_KEY_LENGTH);
1616 S3I(s)->hs_tls13.x25519_peer_public = NULL;
1617 freezero(S3I(s)->hs_tls13.cookie, S3I(s)->hs_tls13.cookie_len); 1609 freezero(S3I(s)->hs_tls13.cookie, S3I(s)->hs_tls13.cookie_len);
1618 S3I(s)->hs_tls13.cookie = NULL; 1610 S3I(s)->hs_tls13.cookie = NULL;
1619 S3I(s)->hs_tls13.cookie_len = 0; 1611 S3I(s)->hs_tls13.cookie_len = 0;