int eap_peer_peap_register(void) { struct eap_method *eap; int ret; eap = eap_peer_method_alloc(EAP_PEER_METHOD_INTERFACE_VERSION, EAP_VENDOR_IETF, EAP_TYPE_PEAP, "PEAP"); if (eap == NULL) return -1; eap->init = eap_peap_init; eap->deinit = eap_peap_deinit; eap->process = eap_peap_process; eap->isKeyAvailable = eap_peap_isKeyAvailable; eap->getKey = eap_peap_getKey; eap->get_status = eap_peap_get_status; eap->has_reauth_data = eap_peap_has_reauth_data; eap->deinit_for_reauth = eap_peap_deinit_for_reauth; eap->init_for_reauth = eap_peap_init_for_reauth; ret = eap_peer_method_register(eap); if (ret) eap_peer_method_free(eap); return ret; }
int eap_peer_aka_prime_register(void) { struct eap_method *eap; int ret; eap = eap_peer_method_alloc(EAP_PEER_METHOD_INTERFACE_VERSION, EAP_VENDOR_IETF, EAP_TYPE_AKA_PRIME, "AKA'"); if (eap == NULL) return -1; eap->init = eap_aka_prime_init; eap->deinit = eap_aka_deinit; eap->process = eap_aka_process; eap->isKeyAvailable = eap_aka_isKeyAvailable; eap->getKey = eap_aka_getKey; eap->has_reauth_data = eap_aka_has_reauth_data; eap->deinit_for_reauth = eap_aka_deinit_for_reauth; eap->init_for_reauth = eap_aka_init_for_reauth; eap->get_identity = eap_aka_get_identity; eap->get_emsk = eap_aka_get_emsk; ret = eap_peer_method_register(eap); if (ret) eap_peer_method_free(eap); return ret; }
/** * eap_peer_unregister_methods - Unregister EAP peer methods * * This function is called at program termination to unregister all EAP peer * methods. */ void eap_peer_unregister_methods(void) { struct eap_method *m; #ifdef CONFIG_DYNAMIC_EAP_METHODS void *handle; #endif /* CONFIG_DYNAMIC_EAP_METHODS */ while (eap_methods) { m = eap_methods; eap_methods = eap_methods->next; #ifdef CONFIG_DYNAMIC_EAP_METHODS handle = m->dl_handle; #endif /* CONFIG_DYNAMIC_EAP_METHODS */ if (m->free) m->free(m); else eap_peer_method_free(m); #ifdef CONFIG_DYNAMIC_EAP_METHODS if (handle) dlclose(handle); #endif /* CONFIG_DYNAMIC_EAP_METHODS */ } }
int eap_peer_sim_register(void) { struct eap_method *eap; int ret; eap = eap_peer_method_alloc(EAP_PEER_METHOD_INTERFACE_VERSION, EAP_VENDOR_IETF, EAP_TYPE_SIM, "SIM"); if (eap == NULL) return -1; eap->init = eap_sim_init; eap->deinit = eap_sim_deinit; eap->process = eap_sim_process; eap->isKeyAvailable = eap_sim_isKeyAvailable; eap->getKey = eap_sim_getKey; eap->getSessionId = eap_sim_get_session_id; eap->has_reauth_data = eap_sim_has_reauth_data; eap->deinit_for_reauth = eap_sim_deinit_for_reauth; eap->init_for_reauth = eap_sim_init_for_reauth; eap->get_identity = eap_sim_get_identity; eap->get_emsk = eap_sim_get_emsk; ret = eap_peer_method_register(eap); if (ret) eap_peer_method_free(eap); return ret; }
int eap_peer_wfa_unauth_tls_register(void) { struct eap_method *eap; int ret; eap = eap_peer_method_alloc(EAP_PEER_METHOD_INTERFACE_VERSION, EAP_VENDOR_WFA_NEW, EAP_VENDOR_WFA_UNAUTH_TLS, "WFA-UNAUTH-TLS"); if (eap == NULL) return -1; eap->init = eap_wfa_unauth_tls_init; eap->deinit = eap_tls_deinit; eap->process = eap_tls_process; eap->isKeyAvailable = eap_tls_isKeyAvailable; eap->getKey = eap_tls_getKey; eap->get_status = eap_tls_get_status; eap->has_reauth_data = eap_tls_has_reauth_data; eap->deinit_for_reauth = eap_tls_deinit_for_reauth; eap->init_for_reauth = eap_tls_init_for_reauth; eap->get_emsk = eap_tls_get_emsk; ret = eap_peer_method_register(eap); if (ret) eap_peer_method_free(eap); return ret; }
/** * eap_peer_method_unload - Unload a dynamic EAP method library (shared object) * @method: Pointer to the dynamically loaded EAP method * Returns: 0 on success, -1 on failure * * This function can be used to unload EAP methods that have been previously * loaded with eap_peer_method_load(). Before unloading the method, all * references to the method must be removed to make sure that no dereferences * of freed memory will occur after unloading. */ int eap_peer_method_unload(struct eap_method *method) { struct eap_method *m, *prev; void *handle; m = eap_methods; prev = NULL; while (m) { if (m == method) break; prev = m; m = m->next; } if (m == NULL || m->dl_handle == NULL) return -1; if (prev) prev->next = m->next; else eap_methods = m->next; handle = m->dl_handle; if (m->free) m->free(m); else eap_peer_method_free(m); dlclose(handle); return 0; }
int eap_peer_tnc_register(void) { struct eap_method *eap; int ret; eap = eap_peer_method_alloc(EAP_PEER_METHOD_INTERFACE_VERSION, EAP_VENDOR_IETF, EAP_TYPE_TNC, "TNC"); if (eap == NULL) return -1; eap->init = eap_tnc_init; eap->deinit = eap_tnc_deinit; eap->process = eap_tnc_process; ret = eap_peer_method_register(eap); if (ret) eap_peer_method_free(eap); return ret; }
int eap_peer_wsc_register(void) { struct eap_method *eap; int ret; eap = eap_peer_method_alloc(EAP_PEER_METHOD_INTERFACE_VERSION, EAP_VENDOR_WFA, EAP_VENDOR_TYPE_WSC, "WSC"); if (eap == NULL) { return -1; } eap->init = eap_wsc_init; eap->deinit = eap_wsc_deinit; eap->process = eap_wsc_process; ret = eap_peer_method_register(eap); if (ret) { eap_peer_method_free(eap); } return ret; }
int eap_peer_leap_register(void) { struct eap_method *eap; int ret; eap = eap_peer_method_alloc(EAP_PEER_METHOD_INTERFACE_VERSION, EAP_VENDOR_IETF, EAP_TYPE_LEAP, "LEAP"); if (eap == NULL) return -1; eap->init = eap_leap_init; eap->deinit = eap_leap_deinit; eap->process = eap_leap_process; eap->isKeyAvailable = eap_leap_isKeyAvailable; eap->getKey = eap_leap_getKey; ret = eap_peer_method_register(eap); if (ret) eap_peer_method_free(eap); return ret; }
int eap_peer_vendor_test_register(void) { struct eap_method *eap; int ret; eap = eap_peer_method_alloc(EAP_PEER_METHOD_INTERFACE_VERSION, EAP_VENDOR_ID, EAP_VENDOR_TYPE, "VENDOR-TEST"); if (eap == NULL) return -1; eap->init = eap_vendor_test_init; eap->deinit = eap_vendor_test_deinit; eap->process = eap_vendor_test_process; eap->isKeyAvailable = eap_vendor_test_isKeyAvailable; eap->getKey = eap_vendor_test_getKey; ret = eap_peer_method_register(eap); if (ret) eap_peer_method_free(eap); return ret; }
int eap_peer_wps_register(void) { #define EAP_VENDOR_ID_WPS 0x0000372a #define EAP_VENDOR_TYPE_WPS 1 struct eap_method *eap; int ret; eap = eap_peer_method_alloc(EAP_PEER_METHOD_INTERFACE_VERSION, EAP_VENDOR_ID_WPS, EAP_VENDOR_TYPE_WPS, "WPS"); if (eap == NULL) return -1; eap->init = eap_wps_init; eap->deinit = eap_wps_deinit; eap->process = eap_wps_process; ret = eap_peer_method_register(eap); if (ret) eap_peer_method_free(eap); return ret; }
int eap_peer_pwd_register(void) { struct eap_method *eap; int ret; EVP_add_digest(EVP_sha256()); eap = eap_peer_method_alloc(EAP_PEER_METHOD_INTERFACE_VERSION, EAP_VENDOR_IETF, EAP_TYPE_PWD, "PWD"); if (eap == NULL) return -1; eap->init = eap_pwd_init; eap->deinit = eap_pwd_deinit; eap->process = eap_pwd_process; eap->isKeyAvailable = eap_pwd_key_available; eap->getKey = eap_pwd_getkey; eap->get_emsk = eap_pwd_get_emsk; ret = eap_peer_method_register(eap); if (ret) eap_peer_method_free(eap); return ret; }
int eap_peer_pax_register(void) { struct eap_method *eap; int ret; eap = eap_peer_method_alloc(EAP_PEER_METHOD_INTERFACE_VERSION, EAP_VENDOR_IETF, EAP_TYPE_PAX, "PAX"); if (eap == NULL) return -1; eap->init = eap_pax_init; eap->deinit = eap_pax_deinit; eap->process = eap_pax_process; eap->isKeyAvailable = eap_pax_isKeyAvailable; eap->getKey = eap_pax_getKey; eap->get_emsk = eap_pax_get_emsk; eap->getSessionId = eap_pax_get_session_id; ret = eap_peer_method_register(eap); if (ret) eap_peer_method_free(eap); return ret; }
int eap_peer_mschapv2_register(void) { struct eap_method *eap; int ret; eap = eap_peer_method_alloc(EAP_VENDOR_IETF, EAP_TYPE_MSCHAPV2, "MSCHAPV2"); if (eap == NULL) return -1; eap->init = eap_mschapv2_init; eap->deinit = eap_mschapv2_deinit; eap->process = eap_mschapv2_process; eap->isKeyAvailable = eap_mschapv2_isKeyAvailable; eap->getKey = eap_mschapv2_getKey; ret = eap_peer_method_register(eap); if (ret) eap_peer_method_free(eap); return ret; }