diff options
author | Martin Willi <martin@revosec.ch> | 2011-10-13 13:02:42 +0200 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2011-10-14 10:05:48 +0200 |
commit | 4ae99247b5f13e7604f97de76f86da0b1df6ad17 (patch) | |
tree | 7f191e2e77377a776a0a1426ccfaac4cdffe8184 /src | |
parent | e64d1141ff38c8aee86400d8a6fc5e7d430192d2 (diff) | |
download | strongswan-4ae99247b5f13e7604f97de76f86da0b1df6ad17.tar.bz2 strongswan-4ae99247b5f13e7604f97de76f86da0b1df6ad17.tar.xz |
Add features support to eap-aka plugin
Diffstat (limited to 'src')
-rw-r--r-- | src/libcharon/plugins/eap_aka/eap_aka_plugin.c | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/src/libcharon/plugins/eap_aka/eap_aka_plugin.c b/src/libcharon/plugins/eap_aka/eap_aka_plugin.c index 361ebbed1..83805d727 100644 --- a/src/libcharon/plugins/eap_aka/eap_aka_plugin.c +++ b/src/libcharon/plugins/eap_aka/eap_aka_plugin.c @@ -45,14 +45,34 @@ METHOD(plugin_t, get_name, char*, return "eap-aka"; } +METHOD(plugin_t, get_features, int, + private_eap_aka_plugin_t *this, plugin_feature_t *features[]) +{ + static plugin_feature_t f[] = { + PLUGIN_PROVIDE(CUSTOM, "aka-manager"), + PLUGIN_CALLBACK(eap_method_register, eap_aka_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_aka_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_aka_plugin_t *this) { lib->set(lib, "aka-manager", NULL); - charon->eap->remove_method(charon->eap, - (eap_constructor_t)eap_aka_server_create); - charon->eap->remove_method(charon->eap, - (eap_constructor_t)eap_aka_peer_create); this->mgr->destroy(this->mgr); free(this); } @@ -68,17 +88,12 @@ plugin_t *eap_aka_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_AKA, 0, EAP_SERVER, - (eap_constructor_t)eap_aka_server_create); - charon->eap->add_method(charon->eap, EAP_AKA, 0, EAP_PEER, - (eap_constructor_t)eap_aka_peer_create); lib->set(lib, "aka-manager", this->mgr); return &this->public.plugin; |