summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJoel Sing <jsing@cvs.openbsd.org>2020-05-09 15:30:22 +0000
committerJoel Sing <jsing@cvs.openbsd.org>2020-05-09 15:30:22 +0000
commitac7895d867cc4803b196b6928888975ee923a969 (patch)
treec35e6a76c3e1ac00cc6f2afb9016f3e2c1cf0d14 /lib
parenta4cfe5fce54390c5e2b81325b310c906df3171c5 (diff)
Add a middlebox_compat flag and condition session ID randomisation on it.
ok tb@
Diffstat (limited to 'lib')
-rw-r--r--lib/libssl/tls13_client.c4
-rw-r--r--lib/libssl/tls13_internal.h3
-rw-r--r--lib/libssl/tls13_lib.c4
3 files changed, 7 insertions, 4 deletions
diff --git a/lib/libssl/tls13_client.c b/lib/libssl/tls13_client.c
index aab83dcc692..d5ac6ba5e07 100644
--- a/lib/libssl/tls13_client.c
+++ b/lib/libssl/tls13_client.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tls13_client.c,v 1.55 2020/05/09 15:05:50 beck Exp $ */
+/* $OpenBSD: tls13_client.c,v 1.56 2020/05/09 15:30:21 jsing Exp $ */
/*
* Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org>
*
@@ -61,7 +61,7 @@ tls13_client_init(struct tls13_ctx *ctx)
* legacy session identifier triggers compatibility mode (see RFC 8446
* Appendix D.4). In the pre-TLSv1.3 case a zero length value is used.
*/
- if (ctx->hs->max_version >= TLS1_3_VERSION) {
+ if (ctx->middlebox_compat && ctx->hs->max_version >= TLS1_3_VERSION) {
arc4random_buf(ctx->hs->legacy_session_id,
sizeof(ctx->hs->legacy_session_id));
ctx->hs->legacy_session_id_len =
diff --git a/lib/libssl/tls13_internal.h b/lib/libssl/tls13_internal.h
index b699b205010..f15d11551a8 100644
--- a/lib/libssl/tls13_internal.h
+++ b/lib/libssl/tls13_internal.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: tls13_internal.h,v 1.68 2020/05/09 15:05:50 beck Exp $ */
+/* $OpenBSD: tls13_internal.h,v 1.69 2020/05/09 15:30:21 jsing Exp $ */
/*
* Copyright (c) 2018 Bob Beck <beck@openbsd.org>
* Copyright (c) 2018 Theo Buehler <tb@openbsd.org>
@@ -218,6 +218,7 @@ struct tls13_ctx {
uint8_t mode;
struct tls13_handshake_stage handshake_stage;
int handshake_completed;
+ int middlebox_compat;
int close_notify_sent;
int close_notify_recv;
diff --git a/lib/libssl/tls13_lib.c b/lib/libssl/tls13_lib.c
index 37f300ae43b..3825707d5c9 100644
--- a/lib/libssl/tls13_lib.c
+++ b/lib/libssl/tls13_lib.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tls13_lib.c,v 1.37 2020/05/09 15:05:50 beck Exp $ */
+/* $OpenBSD: tls13_lib.c,v 1.38 2020/05/09 15:30:21 jsing Exp $ */
/*
* Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org>
* Copyright (c) 2019 Bob Beck <beck@openbsd.org>
@@ -351,6 +351,8 @@ tls13_ctx_new(int mode)
ctx->handshake_message_recv_cb = tls13_legacy_handshake_message_recv_cb;
ctx->ocsp_status_recv_cb = tls13_legacy_ocsp_status_recv_cb;
+ ctx->middlebox_compat = 1;
+
return ctx;
err: