Unverified Commit 356e738e authored by Me No Dev's avatar Me No Dev Committed by GitHub

Add support for specifying a WPA2 EAP-TTLS phase 2 method to WiFi.begin (#9639)

parent f6cbea13
......@@ -433,7 +433,7 @@ bool STAClass::connect(const char *ssid, const char *passphrase, int32_t channel
*/
bool STAClass::connect(
const char *wpa2_ssid, wpa2_auth_method_t method, const char *wpa2_identity, const char *wpa2_username, const char *wpa2_password, const char *ca_pem,
const char *client_crt, const char *client_key, int32_t channel, const uint8_t *bssid, bool tryConnect
const char *client_crt, const char *client_key, int ttls_phase2_type, int32_t channel, const uint8_t *bssid, bool tryConnect
) {
if (_esp_netif == NULL) {
log_e("STA not started! You must call begin() first.");
......@@ -467,6 +467,14 @@ bool STAClass::connect(
return false;
}
if (ttls_phase2_type >= 0) {
#if __has_include("esp_eap_client.h")
esp_eap_client_set_ttls_phase2_method((esp_eap_ttls_phase2_types)ttls_phase2_type);
#else
esp_wifi_sta_wpa2_ent_set_ttls_phase2_method((esp_eap_ttls_phase2_types)ttls_phase2_type);
#endif
}
if (ca_pem) {
#if __has_include("esp_eap_client.h")
esp_eap_client_set_ca_cert((uint8_t *)ca_pem, strlen(ca_pem));
......@@ -503,7 +511,7 @@ bool STAClass::connect(
esp_wifi_sta_wpa2_ent_enable(); //set config settings to enable function
#endif
return connect(wpa2_ssid, NULL, 0, NULL, tryConnect); //connect to wifi
return connect(wpa2_ssid, NULL, channel, bssid, tryConnect); //connect to wifi
}
bool STAClass::disconnect(bool eraseap, unsigned long timeout) {
......
......@@ -65,13 +65,13 @@ wl_status_t WiFiSTAClass::status() {
wl_status_t WiFiSTAClass::begin(
const char *wpa2_ssid, wpa2_auth_method_t method, const char *wpa2_identity, const char *wpa2_username, const char *wpa2_password, const char *ca_pem,
const char *client_crt, const char *client_key, int32_t channel, const uint8_t *bssid, bool connect
const char *client_crt, const char *client_key, int ttls_phase2_type, int32_t channel, const uint8_t *bssid, bool connect
) {
if (!STA.begin()) {
return WL_CONNECT_FAILED;
}
if (!STA.connect(wpa2_ssid, method, wpa2_identity, wpa2_username, wpa2_password, ca_pem, client_crt, client_key, channel, bssid, connect)) {
if (!STA.connect(wpa2_ssid, method, wpa2_identity, wpa2_username, wpa2_password, ca_pem, client_crt, client_key, ttls_phase2_type, channel, bssid, connect)) {
return WL_CONNECT_FAILED;
}
......
......@@ -55,7 +55,8 @@ public:
bool connect(const char *ssid, const char *passphrase = NULL, int32_t channel = 0, const uint8_t *bssid = NULL, bool connect = true);
bool connect(
const char *wpa2_ssid, wpa2_auth_method_t method, const char *wpa2_identity = NULL, const char *wpa2_username = NULL, const char *wpa2_password = NULL,
const char *ca_pem = NULL, const char *client_crt = NULL, const char *client_key = NULL, int32_t channel = 0, const uint8_t *bssid = 0, bool connect = true
const char *ca_pem = NULL, const char *client_crt = NULL, const char *client_key = NULL, int ttls_phase2_type = -1, int32_t channel = 0,
const uint8_t *bssid = 0, bool connect = true
);
bool disconnect(bool eraseap = false, unsigned long timeout = 0);
bool reconnect();
......@@ -109,16 +110,17 @@ public:
wl_status_t begin(
const char *wpa2_ssid, wpa2_auth_method_t method, const char *wpa2_identity = NULL, const char *wpa2_username = NULL, const char *wpa2_password = NULL,
const char *ca_pem = NULL, const char *client_crt = NULL, const char *client_key = NULL, int32_t channel = 0, const uint8_t *bssid = 0, bool connect = true
const char *ca_pem = NULL, const char *client_crt = NULL, const char *client_key = NULL, int ttls_phase2_type = -1, int32_t channel = 0,
const uint8_t *bssid = 0, bool connect = true
);
wl_status_t begin(
const String &wpa2_ssid, wpa2_auth_method_t method, const String &wpa2_identity = (const char *)NULL, const String &wpa2_username = (const char *)NULL,
const String &wpa2_password = (const char *)NULL, const String &ca_pem = (const char *)NULL, const String &client_crt = (const char *)NULL,
const String &client_key = (const char *)NULL, int32_t channel = 0, const uint8_t *bssid = 0, bool connect = true
const String &client_key = (const char *)NULL, int ttls_phase2_type = -1, int32_t channel = 0, const uint8_t *bssid = 0, bool connect = true
) {
return begin(
wpa2_ssid.c_str(), method, wpa2_identity.c_str(), wpa2_username.c_str(), wpa2_password.c_str(), ca_pem.c_str(), client_crt.c_str(), client_key.c_str(),
channel, bssid, connect
ttls_phase2_type, channel, bssid, connect
);
}
wl_status_t begin(const char *ssid, const char *passphrase = NULL, int32_t channel = 0, const uint8_t *bssid = NULL, bool connect = true);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment