SAE-PK: AP functionality
This adds AP side functionality for SAE-PK. The new sae_password configuration parameters can now be used to enable SAE-PK mode whenever SAE is enabled. Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
parent
00e4fbdcc5
commit
20ccf97b3d
9 changed files with 228 additions and 25 deletions
|
@ -427,6 +427,14 @@ static void hostapd_ext_capab_byte(struct hostapd_data *hapd, u8 *pos, int idx)
|
|||
if (hapd->conf->beacon_prot)
|
||||
*pos |= 0x10; /* Bit 84 - Beacon Protection Enabled */
|
||||
break;
|
||||
case 11: /* Bits 88-95 */
|
||||
#ifdef CONFIG_SAE_PK
|
||||
if (hapd->conf->wpa &&
|
||||
wpa_key_mgmt_sae(hapd->conf->wpa_key_mgmt) &&
|
||||
hostapd_sae_pk_exclusively(hapd->conf))
|
||||
*pos |= 0x01; /* Bit 88 - SAE PK Exclusively */
|
||||
#endif /* CONFIG_SAE_PK */
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -487,6 +495,12 @@ u8 * hostapd_eid_ext_capab(struct hostapd_data *hapd, u8 *eid)
|
|||
#endif /* CONFIG_SAE */
|
||||
if (len < 11 && hapd->conf->beacon_prot)
|
||||
len = 11;
|
||||
#ifdef CONFIG_SAE_PK
|
||||
if (len < 12 && hapd->conf->wpa &&
|
||||
wpa_key_mgmt_sae(hapd->conf->wpa_key_mgmt) &&
|
||||
hostapd_sae_pk_exclusively(hapd->conf))
|
||||
len = 12;
|
||||
#endif /* CONFIG_SAE_PK */
|
||||
if (len < hapd->iface->extended_capa_len)
|
||||
len = hapd->iface->extended_capa_len;
|
||||
if (len == 0)
|
||||
|
@ -1081,11 +1095,16 @@ int get_tx_parameters(struct sta_info *sta, int ap_max_chanwidth,
|
|||
u8 * hostapd_eid_rsnxe(struct hostapd_data *hapd, u8 *eid, size_t len)
|
||||
{
|
||||
u8 *pos = eid;
|
||||
bool sae_pk = false;
|
||||
|
||||
#ifdef CONFIG_SAE_PK
|
||||
sae_pk = hostapd_sae_pk_in_use(hapd->conf);
|
||||
#endif /* CONFIG_SAE_PK */
|
||||
|
||||
if (!(hapd->conf->wpa & WPA_PROTO_RSN) ||
|
||||
!wpa_key_mgmt_sae(hapd->conf->wpa_key_mgmt) ||
|
||||
(hapd->conf->sae_pwe != 1 && hapd->conf->sae_pwe != 2 &&
|
||||
!hostapd_sae_pw_id_in_use(hapd->conf)) ||
|
||||
!hostapd_sae_pw_id_in_use(hapd->conf) && !sae_pk) ||
|
||||
hapd->conf->sae_pwe == 3 ||
|
||||
len < 3)
|
||||
return pos;
|
||||
|
@ -1094,7 +1113,12 @@ u8 * hostapd_eid_rsnxe(struct hostapd_data *hapd, u8 *eid, size_t len)
|
|||
*pos++ = 1;
|
||||
/* bits 0-3 = 0 since only one octet of Extended RSN Capabilities is
|
||||
* used for now */
|
||||
*pos++ = BIT(WLAN_RSNX_CAPAB_SAE_H2E);
|
||||
*pos = BIT(WLAN_RSNX_CAPAB_SAE_H2E);
|
||||
#ifdef CONFIG_SAE_PK
|
||||
if (sae_pk)
|
||||
*pos |= BIT(WLAN_RSNX_CAPAB_SAE_PK);
|
||||
#endif /* CONFIG_SAE_PK */
|
||||
pos++;
|
||||
|
||||
return pos;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue