From 86fa7dbef6291a76e73bd9c163c231b69eadd883 Mon Sep 17 00:00:00 2001 From: tb <> Date: Sat, 25 Jan 2020 13:11:20 +0000 Subject: Support legacy message callbacks. First step for SSL_set_msg_callback(3) support. Makes openssl s_client -msg work for handshake messages. ok beck jsing --- src/lib/libssl/tls13_lib.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'src/lib/libssl/tls13_lib.c') diff --git a/src/lib/libssl/tls13_lib.c b/src/lib/libssl/tls13_lib.c index f17f2ff0de..950b5a4019 100644 --- a/src/lib/libssl/tls13_lib.c +++ b/src/lib/libssl/tls13_lib.c @@ -1,4 +1,4 @@ -/* $OpenBSD: tls13_lib.c,v 1.29 2020/01/24 05:11:34 beck Exp $ */ +/* $OpenBSD: tls13_lib.c,v 1.30 2020/01/25 13:11:20 tb Exp $ */ /* * Copyright (c) 2018, 2019 Joel Sing * Copyright (c) 2019 Bob Beck @@ -105,6 +105,30 @@ tls13_alert_received_cb(uint8_t alert_desc, void *arg) SSL_CTX_remove_session(s->ctx, s->session); } +static void +tls13_legacy_handshake_message_recv_cb(void *arg, CBS *cbs) +{ + struct tls13_ctx *ctx = arg; + SSL *s = ctx->ssl; + + if (s->internal->msg_callback != NULL) + s->internal->msg_callback(0, TLS1_3_VERSION, SSL3_RT_HANDSHAKE, + CBS_data(cbs), CBS_len(cbs), s, + s->internal->msg_callback_arg); +} + +static void +tls13_legacy_handshake_message_sent_cb(void *arg, CBS *cbs) +{ + struct tls13_ctx *ctx = arg; + SSL *s = ctx->ssl; + + if (s->internal->msg_callback != NULL) + s->internal->msg_callback(1, TLS1_3_VERSION, SSL3_RT_HANDSHAKE, + CBS_data(cbs), CBS_len(cbs), s, + s->internal->msg_callback_arg); +} + static int tls13_phh_update_local_traffic_secret(struct tls13_ctx *ctx) { @@ -263,6 +287,9 @@ tls13_ctx_new(int mode) tls13_phh_received_cb, tls13_phh_done_cb, ctx)) == NULL) goto err; + ctx->handshake_message_sent_cb = tls13_legacy_handshake_message_sent_cb; + ctx->handshake_message_recv_cb = tls13_legacy_handshake_message_recv_cb; + return ctx; err: -- cgit v1.2.3-55-g6feb