wlantest: Derive PTK in MLO using MLD MAC addresses for FT over-the-air

IEEE P802.11be/D4.0 does not seem to have changed the rules for deriving
PTK in FT hierarchy since there were no changes to 12.7.1.6.5 (PTK)
where BSSID and STA-ADDR are used. However, the MLO changes for FT and
for PTK derivation in non-FT cases seem to imply that this FT case is
also supposed to use MLD MAC addresses.

Commit 628b9f1022 ("wlantest: Derive PMK-R1 and PTK using AA/SPA for
MLO FT over-the-DS") did this already for FT over-the-DS, so do the same
for FT over-the-air.

Signed-off-by: Jouni Malinen <quic_jouni@quicinc.com>
This commit is contained in:
Jouni Malinen 2023-08-31 21:10:54 +03:00 committed by Jouni Malinen
parent d3ab6e001f
commit a845601ffe

View file

@ -528,7 +528,7 @@ static void process_ft_auth(struct wlantest *wt, struct wlantest_bss *bss,
u8 ptk_name[WPA_PMK_NAME_LEN]; u8 ptk_name[WPA_PMK_NAME_LEN];
struct wlantest_bss *old_bss; struct wlantest_bss *old_bss;
struct wlantest_sta *old_sta = NULL; struct wlantest_sta *old_sta = NULL;
const u8 *spa; const u8 *spa, *aa;
struct ieee802_11_elems elems; struct ieee802_11_elems elems;
const u8 *ie; const u8 *ie;
size_t ie_len; size_t ie_len;
@ -566,6 +566,7 @@ static void process_ft_auth(struct wlantest *wt, struct wlantest_bss *bss,
goto out; goto out;
spa = elems.basic_mle ? sta->mld_mac_addr : sta->addr; spa = elems.basic_mle ? sta->mld_mac_addr : sta->addr;
aa = elems.basic_mle ? bss->mld_mac_addr : bss->bssid;
if (!parse.fte_snonce || if (!parse.fte_snonce ||
os_memcmp(sta->snonce, parse.fte_snonce, WPA_NONCE_LEN) != 0) { os_memcmp(sta->snonce, parse.fte_snonce, WPA_NONCE_LEN) != 0) {
@ -607,7 +608,7 @@ static void process_ft_auth(struct wlantest *wt, struct wlantest_bss *bss,
if (!parse.fte_anonce || !parse.fte_snonce || if (!parse.fte_anonce || !parse.fte_snonce ||
wpa_pmk_r1_to_ptk(sta->pmk_r1, sta->pmk_r1_len, parse.fte_snonce, wpa_pmk_r1_to_ptk(sta->pmk_r1, sta->pmk_r1_len, parse.fte_snonce,
parse.fte_anonce, sta->addr, bss->bssid, parse.fte_anonce, spa, aa,
sta->pmk_r1_name, &ptk, ptk_name, sta->key_mgmt, sta->pmk_r1_name, &ptk, ptk_name, sta->key_mgmt,
sta->pairwise_cipher, 0) < 0) sta->pairwise_cipher, 0) < 0)
goto out; goto out;