{
size_t len;
- if (!wpa_cipher_valid_mgmt_group(sm->mgmt_group_cipher))
- return 0;
-
if (ie->mlo_igtk[link_id]) {
len = wpa_cipher_key_len(sm->mgmt_group_cipher);
if (ie->mlo_igtk_len[link_id] !=
{
u8 i;
+ if (!wpa_cipher_valid_mgmt_group(sm->mgmt_group_cipher) ||
+ sm->mgmt_group_cipher == WPA_CIPHER_GTK_NOT_USED)
+ return 0;
+
for (i = 0; i < MAX_NUM_MLO_LINKS; i++) {
if (!(sm->mlo.valid_links & BIT(i)))
continue;
u8 link_id,
struct wpa_eapol_ie_parse *ie)
{
- if (!ie->mlo_igtk[link_id]) {
- wpa_msg(sm->ctx->msg_ctx, MSG_ERROR,
- "RSN: IGTK not found for link ID %u", link_id);
- return -1;
- }
-
- if (ie->mlo_igtk_len[link_id] != RSN_MLO_IGTK_KDE_PREFIX_LENGTH +
+ if (ie->mlo_igtk[link_id] &&
+ ie->mlo_igtk_len[link_id] != RSN_MLO_IGTK_KDE_PREFIX_LENGTH +
(unsigned int) wpa_cipher_key_len(sm->mgmt_group_cipher)) {
wpa_msg(sm->ctx->msg_ctx, MSG_INFO,
"RSN MLO: Invalid IGTK KDE length %lu for link ID %u",
if (!sm->beacon_prot)
return 0;
- if (!ie->mlo_bigtk[link_id]) {
- wpa_msg(sm->ctx->msg_ctx, MSG_ERROR,
- "RSN: BIGTK not found for link ID %u", link_id);
- return -1;
- }
-
- if (ie->mlo_bigtk_len[link_id] != RSN_MLO_BIGTK_KDE_PREFIX_LENGTH +
+ if (ie->mlo_bigtk[link_id] &&
+ ie->mlo_bigtk_len[link_id] != RSN_MLO_BIGTK_KDE_PREFIX_LENGTH +
(unsigned int) wpa_cipher_key_len(sm->mgmt_group_cipher)) {
wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
"RSN MLO: Invalid BIGTK KDE length %lu for link ID %u",
goto failed;
}
- if (!wpa_sm_pmf_enabled(sm))
- continue;
-
- if (wpa_validate_mlo_ieee80211w_kdes(sm, i, &ie) < 0)
+ if (sm->mgmt_group_cipher != WPA_CIPHER_GTK_NOT_USED &&
+ wpa_cipher_valid_mgmt_group(sm->mgmt_group_cipher) &&
+ wpa_validate_mlo_ieee80211w_kdes(sm, i, &ie) < 0)
goto failed;
}