OWE: Define and parse OWE AKM selector
This adds a new RSN AKM "OWE". Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
9c7aac738b
commit
a1ea1b4522
15 changed files with 79 additions and 10 deletions
|
@ -732,6 +732,10 @@ static int wpa_config_parse_key_mgmt(const struct parse_data *data,
|
|||
val |= WPA_KEY_MGMT_FT_FILS_SHA384;
|
||||
#endif /* CONFIG_IEEE80211R */
|
||||
#endif /* CONFIG_FILS */
|
||||
#ifdef CONFIG_OWE
|
||||
else if (os_strcmp(start, "OWE") == 0)
|
||||
val |= WPA_KEY_MGMT_OWE;
|
||||
#endif /* CONFIG_OWE */
|
||||
else {
|
||||
wpa_printf(MSG_ERROR, "Line %d: invalid key_mgmt '%s'",
|
||||
line, start);
|
||||
|
|
|
@ -2578,6 +2578,16 @@ static char * wpa_supplicant_ie_txt(char *pos, char *end, const char *proto,
|
|||
#endif /* CONFIG_IEEE80211R */
|
||||
#endif /* CONFIG_FILS */
|
||||
|
||||
#ifdef CONFIG_OWE
|
||||
if (data.key_mgmt & WPA_KEY_MGMT_OWE) {
|
||||
ret = os_snprintf(pos, end - pos, "%sOWE",
|
||||
pos == start ? "" : "+");
|
||||
if (os_snprintf_error(end - pos, ret))
|
||||
return pos;
|
||||
pos += ret;
|
||||
}
|
||||
#endif /* CONFIG_OWE */
|
||||
|
||||
if (data.key_mgmt & WPA_KEY_MGMT_OSEN) {
|
||||
ret = os_snprintf(pos, end - pos, "%sOSEN",
|
||||
pos == start ? "" : "+");
|
||||
|
|
|
@ -302,7 +302,8 @@ void wpa_supplicant_mark_disassoc(struct wpa_supplicant *wpa_s)
|
|||
|
||||
eapol_sm_notify_portEnabled(wpa_s->eapol, FALSE);
|
||||
eapol_sm_notify_portValid(wpa_s->eapol, FALSE);
|
||||
if (wpa_key_mgmt_wpa_psk(wpa_s->key_mgmt))
|
||||
if (wpa_key_mgmt_wpa_psk(wpa_s->key_mgmt) ||
|
||||
wpa_s->key_mgmt == WPA_KEY_MGMT_OWE)
|
||||
eapol_sm_notify_eap_success(wpa_s->eapol, FALSE);
|
||||
wpa_s->ap_ies_from_associnfo = 0;
|
||||
wpa_s->current_ssid = NULL;
|
||||
|
@ -2521,7 +2522,8 @@ static void wpa_supplicant_event_assoc(struct wpa_supplicant *wpa_s,
|
|||
eapol_sm_notify_portEnabled(wpa_s->eapol, FALSE);
|
||||
eapol_sm_notify_portValid(wpa_s->eapol, FALSE);
|
||||
}
|
||||
if (wpa_key_mgmt_wpa_psk(wpa_s->key_mgmt) || ft_completed ||
|
||||
if (wpa_key_mgmt_wpa_psk(wpa_s->key_mgmt) ||
|
||||
wpa_s->key_mgmt == WPA_KEY_MGMT_OWE || ft_completed ||
|
||||
already_authorized)
|
||||
eapol_sm_notify_eap_success(wpa_s->eapol, FALSE);
|
||||
/* 802.1X::portControl = Auto */
|
||||
|
|
|
@ -997,7 +997,8 @@ int wpa_supplicant_reload_configuration(struct wpa_supplicant *wpa_s)
|
|||
* TODO: should notify EAPOL SM about changes in opensc_engine_path,
|
||||
* pkcs11_engine_path, pkcs11_module_path, openssl_ciphers.
|
||||
*/
|
||||
if (wpa_key_mgmt_wpa_psk(wpa_s->key_mgmt)) {
|
||||
if (wpa_key_mgmt_wpa_psk(wpa_s->key_mgmt) ||
|
||||
wpa_s->key_mgmt == WPA_KEY_MGMT_OWE) {
|
||||
/*
|
||||
* Clear forced success to clear EAP state for next
|
||||
* authentication.
|
||||
|
@ -1333,6 +1334,11 @@ int wpa_supplicant_set_suites(struct wpa_supplicant *wpa_s,
|
|||
wpa_s->key_mgmt = WPA_KEY_MGMT_OSEN;
|
||||
wpa_dbg(wpa_s, MSG_DEBUG, "HS 2.0: using KEY_MGMT OSEN");
|
||||
#endif /* CONFIG_HS20 */
|
||||
#ifdef CONFIG_OWE
|
||||
} else if (sel & WPA_KEY_MGMT_OWE) {
|
||||
wpa_s->key_mgmt = WPA_KEY_MGMT_OWE;
|
||||
wpa_dbg(wpa_s, MSG_DEBUG, "RSN: using KEY_MGMT OWE");
|
||||
#endif /* CONFIG_OWE */
|
||||
} else {
|
||||
wpa_msg(wpa_s, MSG_WARNING, "WPA: Failed to select "
|
||||
"authenticated key management type");
|
||||
|
@ -3575,6 +3581,7 @@ void wpa_supplicant_rx_eapol(void *ctx, const u8 *src_addr,
|
|||
|
||||
os_memcpy(wpa_s->last_eapol_src, src_addr, ETH_ALEN);
|
||||
if (!wpa_key_mgmt_wpa_psk(wpa_s->key_mgmt) &&
|
||||
wpa_s->key_mgmt != WPA_KEY_MGMT_OWE &&
|
||||
eapol_sm_rx_eapol(wpa_s->eapol, src_addr, buf, len) > 0)
|
||||
return;
|
||||
wpa_drv_poll(wpa_s);
|
||||
|
|
|
@ -146,6 +146,7 @@ static int wpa_supplicant_eapol_send(void *ctx, int type, const u8 *buf,
|
|||
* extra copy here */
|
||||
|
||||
if (wpa_key_mgmt_wpa_psk(wpa_s->key_mgmt) ||
|
||||
wpa_s->key_mgmt == WPA_KEY_MGMT_OWE ||
|
||||
wpa_s->key_mgmt == WPA_KEY_MGMT_NONE) {
|
||||
/* Current SSID is not using IEEE 802.1X/EAP, so drop possible
|
||||
* EAPOL frames (mainly, EAPOL-Start) from EAPOL state
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue