diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libssl/tls13_internal.h | 3 | ||||
| -rw-r--r-- | src/lib/libssl/tls13_legacy.c | 6 | ||||
| -rw-r--r-- | src/lib/libssl/tls13_lib.c | 24 | ||||
| -rw-r--r-- | src/lib/libssl/tls13_record_layer.c | 4 |
4 files changed, 29 insertions, 8 deletions
diff --git a/src/lib/libssl/tls13_internal.h b/src/lib/libssl/tls13_internal.h index 764b58b00b..d597ef5a96 100644 --- a/src/lib/libssl/tls13_internal.h +++ b/src/lib/libssl/tls13_internal.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: tls13_internal.h,v 1.76 2020/05/11 17:28:33 jsing Exp $ */ | 1 | /* $OpenBSD: tls13_internal.h,v 1.77 2020/05/11 17:46:46 jsing Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2018 Bob Beck <beck@openbsd.org> | 3 | * Copyright (c) 2018 Bob Beck <beck@openbsd.org> |
| 4 | * Copyright (c) 2018 Theo Buehler <tb@openbsd.org> | 4 | * Copyright (c) 2018 Theo Buehler <tb@openbsd.org> |
| @@ -178,6 +178,7 @@ struct tls13_record_layer_callbacks { | |||
| 178 | tls13_read_cb wire_read; | 178 | tls13_read_cb wire_read; |
| 179 | tls13_write_cb wire_write; | 179 | tls13_write_cb wire_write; |
| 180 | tls13_alert_cb alert_recv; | 180 | tls13_alert_cb alert_recv; |
| 181 | tls13_alert_cb alert_sent; | ||
| 181 | tls13_phh_recv_cb phh_recv; | 182 | tls13_phh_recv_cb phh_recv; |
| 182 | tls13_phh_sent_cb phh_sent; | 183 | tls13_phh_sent_cb phh_sent; |
| 183 | }; | 184 | }; |
diff --git a/src/lib/libssl/tls13_legacy.c b/src/lib/libssl/tls13_legacy.c index 8f8259344f..af1ad2169d 100644 --- a/src/lib/libssl/tls13_legacy.c +++ b/src/lib/libssl/tls13_legacy.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: tls13_legacy.c,v 1.5 2020/05/10 16:59:51 jsing Exp $ */ | 1 | /* $OpenBSD: tls13_legacy.c,v 1.6 2020/05/11 17:46:46 jsing Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org> |
| 4 | * | 4 | * |
| @@ -487,8 +487,8 @@ tls13_legacy_shutdown(SSL *ssl) | |||
| 487 | } | 487 | } |
| 488 | 488 | ||
| 489 | /* Send close notify. */ | 489 | /* Send close notify. */ |
| 490 | if (!ctx->close_notify_sent) { | 490 | if (!(ssl->internal->shutdown & SSL_SENT_SHUTDOWN)) { |
| 491 | ctx->close_notify_sent = 1; | 491 | ssl->internal->shutdown |= SSL_SENT_SHUTDOWN; |
| 492 | if ((ret = tls13_send_alert(ctx->rl, TLS13_ALERT_CLOSE_NOTIFY)) < 0) | 492 | if ((ret = tls13_send_alert(ctx->rl, TLS13_ALERT_CLOSE_NOTIFY)) < 0) |
| 493 | return tls13_legacy_return_code(ssl, ret); | 493 | return tls13_legacy_return_code(ssl, ret); |
| 494 | } | 494 | } |
diff --git a/src/lib/libssl/tls13_lib.c b/src/lib/libssl/tls13_lib.c index f096fe633e..e86c4fd07f 100644 --- a/src/lib/libssl/tls13_lib.c +++ b/src/lib/libssl/tls13_lib.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: tls13_lib.c,v 1.42 2020/05/11 17:28:33 jsing Exp $ */ | 1 | /* $OpenBSD: tls13_lib.c,v 1.43 2020/05/11 17:46:46 jsing Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org> |
| 4 | * Copyright (c) 2019 Bob Beck <beck@openbsd.org> | 4 | * Copyright (c) 2019 Bob Beck <beck@openbsd.org> |
| @@ -106,7 +106,6 @@ static void | |||
| 106 | tls13_alert_received_cb(uint8_t alert_desc, void *arg) | 106 | tls13_alert_received_cb(uint8_t alert_desc, void *arg) |
| 107 | { | 107 | { |
| 108 | struct tls13_ctx *ctx = arg; | 108 | struct tls13_ctx *ctx = arg; |
| 109 | SSL *s = ctx->ssl; | ||
| 110 | 109 | ||
| 111 | if (alert_desc == TLS13_ALERT_CLOSE_NOTIFY) { | 110 | if (alert_desc == TLS13_ALERT_CLOSE_NOTIFY) { |
| 112 | ctx->close_notify_recv = 1; | 111 | ctx->close_notify_recv = 1; |
| @@ -129,7 +128,25 @@ tls13_alert_received_cb(uint8_t alert_desc, void *arg) | |||
| 129 | SSLerror(ctx->ssl, SSL_AD_REASON_OFFSET + alert_desc); | 128 | SSLerror(ctx->ssl, SSL_AD_REASON_OFFSET + alert_desc); |
| 130 | ERR_asprintf_error_data("SSL alert number %d", alert_desc); | 129 | ERR_asprintf_error_data("SSL alert number %d", alert_desc); |
| 131 | 130 | ||
| 132 | SSL_CTX_remove_session(s->ctx, s->session); | 131 | SSL_CTX_remove_session(ctx->ssl->ctx, ctx->ssl->session); |
| 132 | } | ||
| 133 | |||
| 134 | static void | ||
| 135 | tls13_alert_sent_cb(uint8_t alert_desc, void *arg) | ||
| 136 | { | ||
| 137 | struct tls13_ctx *ctx = arg; | ||
| 138 | |||
| 139 | if (alert_desc == SSL_AD_CLOSE_NOTIFY) { | ||
| 140 | ctx->close_notify_sent = 1; | ||
| 141 | return; | ||
| 142 | } | ||
| 143 | |||
| 144 | if (alert_desc == SSL_AD_USER_CANCELLED) { | ||
| 145 | return; | ||
| 146 | } | ||
| 147 | |||
| 148 | /* All other alerts are treated as fatal in TLSv1.3. */ | ||
| 149 | SSLerror(ctx->ssl, SSL_AD_REASON_OFFSET + alert_desc); | ||
| 133 | } | 150 | } |
| 134 | 151 | ||
| 135 | static void | 152 | static void |
| @@ -336,6 +353,7 @@ static const struct tls13_record_layer_callbacks rl_callbacks = { | |||
| 336 | .wire_read = tls13_legacy_wire_read_cb, | 353 | .wire_read = tls13_legacy_wire_read_cb, |
| 337 | .wire_write = tls13_legacy_wire_write_cb, | 354 | .wire_write = tls13_legacy_wire_write_cb, |
| 338 | .alert_recv = tls13_alert_received_cb, | 355 | .alert_recv = tls13_alert_received_cb, |
| 356 | .alert_sent = tls13_alert_sent_cb, | ||
| 339 | .phh_recv = tls13_phh_received_cb, | 357 | .phh_recv = tls13_phh_received_cb, |
| 340 | .phh_sent = tls13_phh_done_cb, | 358 | .phh_sent = tls13_phh_done_cb, |
| 341 | }; | 359 | }; |
diff --git a/src/lib/libssl/tls13_record_layer.c b/src/lib/libssl/tls13_record_layer.c index 62b32e4631..e7650b1ecc 100644 --- a/src/lib/libssl/tls13_record_layer.c +++ b/src/lib/libssl/tls13_record_layer.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: tls13_record_layer.c,v 1.38 2020/05/11 17:28:33 jsing Exp $ */ | 1 | /* $OpenBSD: tls13_record_layer.c,v 1.39 2020/05/11 17:46:46 jsing Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org> |
| 4 | * | 4 | * |
| @@ -321,6 +321,8 @@ tls13_record_layer_send_alert(struct tls13_record_layer *rl) | |||
| 321 | ret = TLS13_IO_ALERT; | 321 | ret = TLS13_IO_ALERT; |
| 322 | } | 322 | } |
| 323 | 323 | ||
| 324 | rl->cb.alert_sent(rl->alert_desc, rl->cb_arg); | ||
| 325 | |||
| 324 | return ret; | 326 | return ret; |
| 325 | } | 327 | } |
| 326 | 328 | ||
