diff options
author | Martin Willi <martin@revosec.ch> | 2011-10-13 13:46:34 +0200 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2011-10-14 10:05:48 +0200 |
commit | 49458758f6f80f61851ccfa9f416735f60a723f3 (patch) | |
tree | c8b0b1ebe601c9e5f311a9301879d550e1af2d9c /src/libcharon/plugins/eap_sim | |
parent | 1cb9a6d8ba2c5da8f59399fa265e93e73b2b0b49 (diff) | |
download | strongswan-49458758f6f80f61851ccfa9f416735f60a723f3.tar.bz2 strongswan-49458758f6f80f61851ccfa9f416735f60a723f3.tar.xz |
Add features support to eap-sim plugin
Diffstat (limited to 'src/libcharon/plugins/eap_sim')
-rw-r--r-- | src/libcharon/plugins/eap_sim/eap_sim_plugin.c | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/src/libcharon/plugins/eap_sim/eap_sim_plugin.c b/src/libcharon/plugins/eap_sim/eap_sim_plugin.c index c148025bd..5f1672d29 100644 --- a/src/libcharon/plugins/eap_sim/eap_sim_plugin.c +++ b/src/libcharon/plugins/eap_sim/eap_sim_plugin.c @@ -45,14 +45,34 @@ METHOD(plugin_t, get_name, char*, return "eap-sim"; } +METHOD(plugin_t, get_features, int, + private_eap_sim_plugin_t *this, plugin_feature_t *features[]) +{ + static plugin_feature_t f[] = { + PLUGIN_PROVIDE(CUSTOM, "sim-manager"), + PLUGIN_CALLBACK(eap_method_register, eap_sim_server_create), + PLUGIN_PROVIDE(EAP_SERVER, EAP_AKA), + PLUGIN_DEPENDS(RNG, RNG_WEAK), + PLUGIN_DEPENDS(HASHER, HASH_SHA1), + PLUGIN_DEPENDS(PRF, PRF_FIPS_SHA1_160), + PLUGIN_DEPENDS(SIGNER, AUTH_HMAC_SHA1_128), + PLUGIN_DEPENDS(CRYPTER, ENCR_AES_CBC, 16), + PLUGIN_CALLBACK(eap_method_register, eap_sim_peer_create), + PLUGIN_PROVIDE(EAP_PEER, EAP_AKA), + PLUGIN_DEPENDS(RNG, RNG_WEAK), + PLUGIN_DEPENDS(HASHER, HASH_SHA1), + PLUGIN_DEPENDS(PRF, PRF_FIPS_SHA1_160), + PLUGIN_DEPENDS(SIGNER, AUTH_HMAC_SHA1_128), + PLUGIN_DEPENDS(CRYPTER, ENCR_AES_CBC, 16), + }; + *features = f; + return countof(f); +} + METHOD(plugin_t, destroy, void, private_eap_sim_plugin_t *this) { lib->set(lib, "sim-manager", NULL); - charon->eap->remove_method(charon->eap, - (eap_constructor_t)eap_sim_server_create); - charon->eap->remove_method(charon->eap, - (eap_constructor_t)eap_sim_peer_create); this->mgr->destroy(this->mgr); free(this); } @@ -68,17 +88,12 @@ plugin_t *eap_sim_plugin_create() .public = { .plugin = { .get_name = _get_name, - .reload = (void*)return_false, + .get_features = _get_features, .destroy = _destroy, }, }, .mgr = simaka_manager_create(), ); - - charon->eap->add_method(charon->eap, EAP_SIM, 0, EAP_SERVER, - (eap_constructor_t)eap_sim_server_create); - charon->eap->add_method(charon->eap, EAP_SIM, 0, EAP_PEER, - (eap_constructor_t)eap_sim_peer_create); lib->set(lib, "sim-manager", this->mgr); return &this->public.plugin; |