From 1db00784cbdacc1903dcfcc39ad13bc9a64d3c2e Mon Sep 17 00:00:00 2001 From: Andreas Steffen Date: Tue, 19 Nov 2019 20:44:39 +0100 Subject: [PATCH] vici: List additional key exchanges --- src/libcharon/plugins/vici/vici_query.c | 18 ++++++++++++++++-- src/swanctl/commands/list_sas.c | 13 ++++++++++++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/libcharon/plugins/vici/vici_query.c b/src/libcharon/plugins/vici/vici_query.c index 9de4370819..d3725342c9 100644 --- a/src/libcharon/plugins/vici/vici_query.c +++ b/src/libcharon/plugins/vici/vici_query.c @@ -1,6 +1,6 @@ /* * Copyright (C) 2015-2017 Tobias Brunner - * Copyright (C) 2015-2018 Andreas Steffen + * Copyright (C) 2015-2019 Andreas Steffen * HSR Hochschule fuer Technik Rapperswil * * Copyright (C) 2014 Martin Willi @@ -387,6 +387,7 @@ static void list_ike(private_vici_query_t *this, vici_builder_t *b, proposal_t *proposal; uint32_t if_id; uint16_t alg, ks; + int ake; host_t *host; b->add_kv(b, "uniqueid", "%u", ike_sa->get_unique_id(ike_sa)); @@ -470,6 +471,19 @@ static void list_ike(private_vici_query_t *this, vici_builder_t *b, { b->add_kv(b, "dh-group", "%N", key_exchange_method_names, alg); } + for (ake = 1; ake <= 7; ake++) + { + transform_type_t transform = ADDITIONAL_KEY_EXCHANGE_1 + ake -1; + char ake_str[5]; + + if (proposal->get_algorithm(proposal, transform, &alg, NULL)) + { + + sprintf(ake_str, "ake%d", ake); + b->add_kv(b, ake_str, "%N", key_exchange_method_names, alg); + } + + } } add_condition(b, ike_sa, "ppk", COND_PPK); @@ -1335,7 +1349,7 @@ CALLBACK(get_algorithms, vici_message_t*, enumerator->destroy(enumerator); b->end_section(b); - b->begin_section(b, "dh"); + b->begin_section(b, "ke"); enumerator = lib->crypto->create_ke_enumerator(lib->crypto); while (enumerator->enumerate(enumerator, &group, &plugin_name)) { diff --git a/src/swanctl/commands/list_sas.c b/src/swanctl/commands/list_sas.c index ca2436dd2f..0c289c9304 100644 --- a/src/swanctl/commands/list_sas.c +++ b/src/swanctl/commands/list_sas.c @@ -2,7 +2,7 @@ * Copyright (C) 2014 Martin Willi * Copyright (C) 2014 revosec AG * - * Copyright (C) 2016 Andreas Steffen + * Copyright (C) 2016-2019 Andreas Steffen * HSR Hochschule fuer Technik Rapperswil * This program is free software; you can redistribute it and/or modify it @@ -239,6 +239,7 @@ CALLBACK(ike_sa, int, { if (streq(name, "child-sas")) { + int ake; bool is_initiator = streq(ike->get(ike, "initiator"), "yes"); printf("%s: #%s, %s, IKEv%s, %s_i%s %s_r%s\n", @@ -290,6 +291,16 @@ CALLBACK(ike_sa, int, } printf("/%s", ike->get(ike, "prf-alg")); printf("/%s", ike->get(ike, "dh-group")); + for (ake = 1; ake <= 7; ake++) + { + char ake_str[5]; + + sprintf(ake_str, "ake%d", ake); + if (ike->get(ike, ake_str)) + { + printf("/%s", ike->get(ike, ake_str)); + } + } if (streq(ike->get(ike, "ppk"), "yes")) { printf("/PPK"); -- 2.47.2