diff options
author | Jouni Malinen <j@w1.fi> | 2017-12-27 19:06:02 (GMT) |
---|---|---|
committer | Jouni Malinen <j@w1.fi> | 2017-12-27 19:06:02 (GMT) |
commit | 2cb40e9f402c82815ea1f685ceb9816106fda445 (patch) | |
tree | 5332c1011177498b343c70c1dc0e73710e257bda /wpa_supplicant/wpa_supplicant.c | |
parent | cc15799f6d9515070e949b906d5af9ad097719b4 (diff) | |
download | hostap-2cb40e9f402c82815ea1f685ceb9816106fda445.zip hostap-2cb40e9f402c82815ea1f685ceb9816106fda445.tar.gz hostap-2cb40e9f402c82815ea1f685ceb9816106fda445.tar.bz2 |
OWE: Try all supported DH groups automatically on STA
If a specific DH group for OWE is not set with the owe_group parameter,
try all supported DH groups (currently 19, 20, 21) one by one if the AP
keeps rejecting groups with the status code 77.
Signed-off-by: Jouni Malinen <j@w1.fi>
Diffstat (limited to 'wpa_supplicant/wpa_supplicant.c')
-rw-r--r-- | wpa_supplicant/wpa_supplicant.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c index 984fe02..9bc2c27 100644 --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c @@ -2617,10 +2617,20 @@ static u8 * wpas_populate_assoc_ies( if (algs == WPA_AUTH_ALG_OPEN && ssid->key_mgmt == WPA_KEY_MGMT_OWE) { struct wpabuf *owe_ie; - u16 group = OWE_DH_GROUP; + u16 group; - if (ssid->owe_group) + if (ssid->owe_group) { group = ssid->owe_group; + } else { + if (wpa_s->last_owe_group == 19) + group = 20; + else if (wpa_s->last_owe_group == 20) + group = 21; + else + group = OWE_DH_GROUP; + } + wpa_s->last_owe_group = group; + wpa_printf(MSG_DEBUG, "OWE: Try to use group %u", group); owe_ie = owe_build_assoc_req(wpa_s->wpa, group); if (owe_ie && wpabuf_len(owe_ie) <= max_wpa_ie_len - wpa_ie_len) { @@ -3405,6 +3415,7 @@ void wpa_supplicant_select_network(struct wpa_supplicant *wpa_s, wpa_s->disconnected = 0; wpa_s->reassociate = 1; + wpa_s->last_owe_group = 0; if (wpa_s->connect_without_scan || wpa_supplicant_fast_associate(wpa_s) != 1) { @@ -6659,6 +6670,7 @@ void wpas_request_connection(struct wpa_supplicant *wpa_s) wpa_s->extra_blacklist_count = 0; wpa_s->disconnected = 0; wpa_s->reassociate = 1; + wpa_s->last_owe_group = 0; if (wpa_supplicant_fast_associate(wpa_s) != 1) wpa_supplicant_req_scan(wpa_s, 0, 0); |