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 ...@@ -433,7 +433,7 @@ bool STAClass::connect(const char *ssid, const char *passphrase, int32_t channel
*/ */
bool STAClass::connect( 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 *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) { if (_esp_netif == NULL) {
log_e("STA not started! You must call begin() first."); log_e("STA not started! You must call begin() first.");
...@@ -467,6 +467,14 @@ bool STAClass::connect( ...@@ -467,6 +467,14 @@ bool STAClass::connect(
return false; 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 (ca_pem) {
#if __has_include("esp_eap_client.h") #if __has_include("esp_eap_client.h")
esp_eap_client_set_ca_cert((uint8_t *)ca_pem, strlen(ca_pem)); esp_eap_client_set_ca_cert((uint8_t *)ca_pem, strlen(ca_pem));
...@@ -503,7 +511,7 @@ bool STAClass::connect( ...@@ -503,7 +511,7 @@ bool STAClass::connect(
esp_wifi_sta_wpa2_ent_enable(); //set config settings to enable function esp_wifi_sta_wpa2_ent_enable(); //set config settings to enable function
#endif #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) { bool STAClass::disconnect(bool eraseap, unsigned long timeout) {
......
...@@ -65,13 +65,13 @@ wl_status_t WiFiSTAClass::status() { ...@@ -65,13 +65,13 @@ wl_status_t WiFiSTAClass::status() {
wl_status_t WiFiSTAClass::begin( 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 *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()) { if (!STA.begin()) {
return WL_CONNECT_FAILED; 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; return WL_CONNECT_FAILED;
} }
......
...@@ -55,7 +55,8 @@ public: ...@@ -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 *ssid, const char *passphrase = NULL, int32_t channel = 0, const uint8_t *bssid = NULL, bool connect = true);
bool connect( 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 *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 disconnect(bool eraseap = false, unsigned long timeout = 0);
bool reconnect(); bool reconnect();
...@@ -109,16 +110,17 @@ public: ...@@ -109,16 +110,17 @@ public:
wl_status_t begin( 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 *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( 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_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 &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( 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(), 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); 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