trace back crypto algorithms to the plugins that registered them

This commit is contained in:
Andreas Steffen
2010-12-18 16:31:12 +01:00
parent ae09bc62bc
commit 5932f41fcc
30 changed files with 587 additions and 400 deletions
+5 -4
View File
@@ -741,9 +741,10 @@ static void proposal_add_supported_ike(private_proposal_t *this)
integrity_algorithm_t integrity;
pseudo_random_function_t prf;
diffie_hellman_group_t group;
const char *plugin_name;
enumerator = lib->crypto->create_crypter_enumerator(lib->crypto);
while (enumerator->enumerate(enumerator, &encryption))
while (enumerator->enumerate(enumerator, &encryption, &plugin_name))
{
switch (encryption)
{
@@ -778,7 +779,7 @@ static void proposal_add_supported_ike(private_proposal_t *this)
enumerator->destroy(enumerator);
enumerator = lib->crypto->create_signer_enumerator(lib->crypto);
while (enumerator->enumerate(enumerator, &integrity))
while (enumerator->enumerate(enumerator, &integrity, &plugin_name))
{
switch (integrity)
{
@@ -797,7 +798,7 @@ static void proposal_add_supported_ike(private_proposal_t *this)
enumerator->destroy(enumerator);
enumerator = lib->crypto->create_prf_enumerator(lib->crypto);
while (enumerator->enumerate(enumerator, &prf))
while (enumerator->enumerate(enumerator, &prf, &plugin_name))
{
switch (prf)
{
@@ -816,7 +817,7 @@ static void proposal_add_supported_ike(private_proposal_t *this)
enumerator->destroy(enumerator);
enumerator = lib->crypto->create_dh_enumerator(lib->crypto);
while (enumerator->enumerate(enumerator, &group))
while (enumerator->enumerate(enumerator, &group, &plugin_name))
{
switch (group)
{
@@ -28,6 +28,8 @@
#include <threading/condvar.h>
#include <threading/mutex.h>
static const char *plugin_name = "load_tester";
typedef struct private_load_tester_plugin_t private_load_tester_plugin_t;
/**
@@ -189,7 +191,7 @@ plugin_t *load_tester_plugin_create()
this = malloc_thing(private_load_tester_plugin_t);
this->public.plugin.destroy = (void(*)(plugin_t*))destroy;
lib->crypto->add_dh(lib->crypto, MODP_NULL,
lib->crypto->add_dh(lib->crypto, MODP_NULL, plugin_name,
(dh_constructor_t)load_tester_diffie_hellman_create);
this->delay = lib->settings->get_int(lib->settings,
+27 -12
View File
@@ -1070,49 +1070,64 @@ static void list_algs(FILE *out)
hash_algorithm_t hash;
pseudo_random_function_t prf;
diffie_hellman_group_t group;
rng_quality_t quality;
const char *plugin_name;
fprintf(out, "\n");
fprintf(out, "List of registered IKEv2 Algorithms:\n");
fprintf(out, "\n encryption: ");
enumerator = lib->crypto->create_crypter_enumerator(lib->crypto);
while (enumerator->enumerate(enumerator, &encryption))
while (enumerator->enumerate(enumerator, &encryption, &plugin_name))
{
fprintf(out, "%N ", encryption_algorithm_names, encryption);
fprintf(out, "%N[%s] ", encryption_algorithm_names, encryption,
plugin_name);
}
enumerator->destroy(enumerator);
fprintf(out, "\n integrity: ");
enumerator = lib->crypto->create_signer_enumerator(lib->crypto);
while (enumerator->enumerate(enumerator, &integrity))
while (enumerator->enumerate(enumerator, &integrity, &plugin_name))
{
fprintf(out, "%N ", integrity_algorithm_names, integrity);
fprintf(out, "%N[%s] ", integrity_algorithm_names, integrity,
plugin_name);
}
enumerator->destroy(enumerator);
fprintf(out, "\n aead: ");
enumerator = lib->crypto->create_aead_enumerator(lib->crypto);
while (enumerator->enumerate(enumerator, &encryption))
while (enumerator->enumerate(enumerator, &encryption, &plugin_name))
{
fprintf(out, "%N ", encryption_algorithm_names, encryption);
fprintf(out, "%N[%s] ", encryption_algorithm_names, encryption,
plugin_name);
}
enumerator->destroy(enumerator);
fprintf(out, "\n hasher: ");
enumerator = lib->crypto->create_hasher_enumerator(lib->crypto);
while (enumerator->enumerate(enumerator, &hash))
while (enumerator->enumerate(enumerator, &hash, &plugin_name))
{
fprintf(out, "%N ", hash_algorithm_names, hash);
fprintf(out, "%N[%s] ", hash_algorithm_names, hash,
plugin_name);
}
enumerator->destroy(enumerator);
fprintf(out, "\n prf: ");
enumerator = lib->crypto->create_prf_enumerator(lib->crypto);
while (enumerator->enumerate(enumerator, &prf))
while (enumerator->enumerate(enumerator, &prf, &plugin_name))
{
fprintf(out, "%N ", pseudo_random_function_names, prf);
fprintf(out, "%N[%s] ", pseudo_random_function_names, prf,
plugin_name);
}
enumerator->destroy(enumerator);
fprintf(out, "\n dh-group: ");
enumerator = lib->crypto->create_dh_enumerator(lib->crypto);
while (enumerator->enumerate(enumerator, &group))
while (enumerator->enumerate(enumerator, &group, &plugin_name))
{
fprintf(out, "%N ", diffie_hellman_group_names, group);
fprintf(out, "%N[%s] ", diffie_hellman_group_names, group,
plugin_name);
}
enumerator->destroy(enumerator);
fprintf(out, "\n random-gen: ");
enumerator = lib->crypto->create_rng_enumerator(lib->crypto);
while (enumerator->enumerate(enumerator, &quality, &plugin_name))
{
fprintf(out, "%N[%s] ", rng_quality_names, quality, plugin_name);
}
enumerator->destroy(enumerator);
fprintf(out, "\n");