From 4919aea8d5eb95fc78f1abb15c848bc2b6a6e867 Mon Sep 17 00:00:00 2001 From: Jan Vidar Krey Date: Tue, 5 Aug 2014 17:45:32 +0200 Subject: [PATCH] Send information through ADC client interface about the TLS connection. --- src/tools/adcclient.c | 9 ++++++++- src/tools/adcclient.h | 6 ++++++ src/tools/admin.c | 1 + 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/tools/adcclient.c b/src/tools/adcclient.c index 24ccc7e..d6c332a 100644 --- a/src/tools/adcclient.c +++ b/src/tools/adcclient.c @@ -634,7 +634,14 @@ static void ADC_client_on_connected(struct ADC_client* client) static void ADC_client_on_connected_ssl(struct ADC_client* client) { ADC_TRACE; - client->callback(client, ADC_CLIENT_SSL_OK, 0); + struct ADC_client_callback_data data; + struct ADC_client_tls_info tls_info; + data.tls_info = &tls_info; + + tls_info.version = net_ssl_get_tls_version(client->con); + tls_info.cipher = net_ssl_get_tls_cipher(client->con); + + client->callback(client, ADC_CLIENT_SSL_OK, &data); ADC_client_send_handshake(client); } #endif diff --git a/src/tools/adcclient.h b/src/tools/adcclient.h index 5f0e4e8..1ca38b3 100644 --- a/src/tools/adcclient.h +++ b/src/tools/adcclient.h @@ -95,6 +95,11 @@ struct ADC_client_quit_reason int flags; }; +struct ADC_client_tls_info +{ + const char* cipher; + const char* version; +}; struct ADC_client_callback_data { @@ -103,6 +108,7 @@ struct ADC_client_callback_data struct ADC_chat_message* chat; struct ADC_user* user; struct ADC_client_quit_reason* quit; + struct ADC_client_tls_info* tls_info; }; }; diff --git a/src/tools/admin.c b/src/tools/admin.c index 1916988..a753d8e 100644 --- a/src/tools/admin.c +++ b/src/tools/admin.c @@ -108,6 +108,7 @@ static int handle(struct ADC_client* client, enum ADC_client_callback_type type, break; case ADC_CLIENT_SSL_OK: + printf("*** SSL connected (%s/%s).\n", data->tls_info->version, data->tls_info->cipher); break; case ADC_CLIENT_LOGGING_IN: