/*
* Copyright (C) 2015-2020 Tobias Brunner
- * Copyright (C) 2015-2018 Andreas Steffen
+ * Copyright (C) 2015-2019 Andreas Steffen
* Copyright (C) 2014 Martin Willi
*
* Copyright (C) secunet Security Networks AG
}
}
+/**
+ * List additional key exchanges
+ */
+static void list_ake(vici_builder_t *b, proposal_t *proposal)
+{
+ transform_type_t transform;
+ char ake_str[5];
+ uint16_t alg;
+ int ake;
+
+ for (ake = 1; ake <= 7; ake++)
+ {
+ transform = ADDITIONAL_KEY_EXCHANGE_1 + ake - 1;
+ 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);
+ }
+ }
+}
+
/**
* List IPsec-related details about a CHILD_SA
*/
{
b->add_kv(b, "dh-group", "%N", key_exchange_method_names, alg);
}
+ list_ake(b, proposal);
if (proposal->get_algorithm(proposal, EXTENDED_SEQUENCE_NUMBERS,
&alg, NULL) && alg == EXT_SEQ_NUMBERS)
{
{
b->add_kv(b, "dh-group", "%N", key_exchange_method_names, alg);
}
+ list_ake(b, proposal);
}
add_condition(b, ike_sa, "ppk", COND_PPK);
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))
{
/*
+ * Copyright (C) 2016-2019 Andreas Steffen
+ * Copyright (C) 2015-2020 Tobias Brunner
* Copyright (C) 2014 Martin Willi
- * Copyright (C) 2016 Andreas Steffen
*
* Copyright (C) secunet Security Networks AG
*
return 0;
}
+/**
+ * Print additional key exchanges
+ */
+static void print_ake(hashtable_t *sa)
+{
+ char ake_str[5];
+ int ake;
+
+ for (ake = 1; ake <= 7; ake++)
+ {
+ sprintf(ake_str, "ake%d", ake);
+ if (sa->get(sa, ake_str))
+ {
+ printf("/KE%d_%s", ake, sa->get(sa, ake_str));
+ }
+ }
+}
+
CALLBACK(child_sas, int,
hashtable_t *ike, vici_res_t *res, char *name)
{
{
printf("/%s", child->get(child, "dh-group"));
}
+ print_ake(child);
if (child->get(child, "esn"))
{
printf("/ESN");
}
printf("/%s", ike->get(ike, "prf-alg"));
printf("/%s", ike->get(ike, "dh-group"));
+ print_ake(ike);
if (streq(ike->get(ike, "ppk"), "yes"))
{
printf("/PPK");