Remove CONFIG_IEEE80211W build parameter
Hardcode this to be defined and remove the separate build options for PMF since this functionality is needed with large number of newer protocol extensions and is also something that should be enabled in all WPA2/WPA3 networks. Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
0229261874
commit
7d2ed8bae8
76 changed files with 11 additions and 537 deletions
|
@ -9,7 +9,6 @@ install:
|
|||
include ../lib.rules
|
||||
|
||||
CFLAGS += -DCONFIG_IEEE80211R
|
||||
CFLAGS += -DCONFIG_IEEE80211W
|
||||
CFLAGS += -DCONFIG_HS20
|
||||
CFLAGS += -DCONFIG_SAE
|
||||
CFLAGS += -DCONFIG_SUITE
|
||||
|
|
|
@ -212,11 +212,9 @@ int wpa_eapol_key_mic(const u8 *key, size_t key_len, int akmp, int ver,
|
|||
return -1;
|
||||
os_memcpy(mic, hash, MD5_MAC_LEN);
|
||||
break;
|
||||
#if defined(CONFIG_IEEE80211R) || defined(CONFIG_IEEE80211W)
|
||||
case WPA_KEY_INFO_TYPE_AES_128_CMAC:
|
||||
wpa_printf(MSG_DEBUG, "WPA: EAPOL-Key MIC using AES-CMAC");
|
||||
return omac1_aes_128(key, buf, len, mic);
|
||||
#endif /* CONFIG_IEEE80211R || CONFIG_IEEE80211W */
|
||||
case WPA_KEY_INFO_TYPE_AKM_DEFINED:
|
||||
switch (akmp) {
|
||||
#ifdef CONFIG_SAE
|
||||
|
@ -410,14 +408,10 @@ int wpa_pmk_to_ptk(const u8 *pmk, size_t pmk_len, const char *label,
|
|||
return -1;
|
||||
#endif /* CONFIG_SUITEB192 || CONFIG_FILS */
|
||||
} else if (wpa_key_mgmt_sha256(akmp) || akmp == WPA_KEY_MGMT_OWE) {
|
||||
#if defined(CONFIG_IEEE80211W) || defined(CONFIG_SAE) || defined(CONFIG_FILS)
|
||||
wpa_printf(MSG_DEBUG, "WPA: PTK derivation using PRF(SHA256)");
|
||||
if (sha256_prf(pmk, pmk_len, label, data, data_len,
|
||||
tmp, ptk_len) < 0)
|
||||
return -1;
|
||||
#else /* CONFIG_IEEE80211W or CONFIG_SAE or CONFIG_FILS */
|
||||
return -1;
|
||||
#endif /* CONFIG_IEEE80211W or CONFIG_SAE or CONFIG_FILS */
|
||||
#ifdef CONFIG_DPP
|
||||
} else if (akmp == WPA_KEY_MGMT_DPP && pmk_len == 32) {
|
||||
wpa_printf(MSG_DEBUG, "WPA: PTK derivation using PRF(SHA256)");
|
||||
|
@ -892,12 +886,10 @@ static int wpa_ft_parse_ftie(const u8 *ie, size_t ie_len,
|
|||
parse->r0kh_id = pos;
|
||||
parse->r0kh_id_len = len;
|
||||
break;
|
||||
#ifdef CONFIG_IEEE80211W
|
||||
case FTIE_SUBELEM_IGTK:
|
||||
parse->igtk = pos;
|
||||
parse->igtk_len = len;
|
||||
break;
|
||||
#endif /* CONFIG_IEEE80211W */
|
||||
#ifdef CONFIG_OCV
|
||||
case FTIE_SUBELEM_OCI:
|
||||
parse->oci = pos;
|
||||
|
@ -1092,10 +1084,8 @@ static int rsn_selector_to_bitfield(const u8 *s)
|
|||
return WPA_CIPHER_TKIP;
|
||||
if (RSN_SELECTOR_GET(s) == RSN_CIPHER_SUITE_CCMP)
|
||||
return WPA_CIPHER_CCMP;
|
||||
#ifdef CONFIG_IEEE80211W
|
||||
if (RSN_SELECTOR_GET(s) == RSN_CIPHER_SUITE_AES_128_CMAC)
|
||||
return WPA_CIPHER_AES_128_CMAC;
|
||||
#endif /* CONFIG_IEEE80211W */
|
||||
if (RSN_SELECTOR_GET(s) == RSN_CIPHER_SUITE_GCMP)
|
||||
return WPA_CIPHER_GCMP;
|
||||
if (RSN_SELECTOR_GET(s) == RSN_CIPHER_SUITE_CCMP_256)
|
||||
|
@ -1130,12 +1120,10 @@ static int rsn_key_mgmt_to_bitfield(const u8 *s)
|
|||
return WPA_KEY_MGMT_FT_IEEE8021X_SHA384;
|
||||
#endif /* CONFIG_SHA384 */
|
||||
#endif /* CONFIG_IEEE80211R */
|
||||
#ifdef CONFIG_IEEE80211W
|
||||
if (RSN_SELECTOR_GET(s) == RSN_AUTH_KEY_MGMT_802_1X_SHA256)
|
||||
return WPA_KEY_MGMT_IEEE8021X_SHA256;
|
||||
if (RSN_SELECTOR_GET(s) == RSN_AUTH_KEY_MGMT_PSK_SHA256)
|
||||
return WPA_KEY_MGMT_PSK_SHA256;
|
||||
#endif /* CONFIG_IEEE80211W */
|
||||
#ifdef CONFIG_SAE
|
||||
if (RSN_SELECTOR_GET(s) == RSN_AUTH_KEY_MGMT_SAE)
|
||||
return WPA_KEY_MGMT_SAE;
|
||||
|
@ -1175,7 +1163,6 @@ int wpa_cipher_valid_group(int cipher)
|
|||
}
|
||||
|
||||
|
||||
#ifdef CONFIG_IEEE80211W
|
||||
int wpa_cipher_valid_mgmt_group(int cipher)
|
||||
{
|
||||
return cipher == WPA_CIPHER_AES_128_CMAC ||
|
||||
|
@ -1183,7 +1170,6 @@ int wpa_cipher_valid_mgmt_group(int cipher)
|
|||
cipher == WPA_CIPHER_BIP_GMAC_256 ||
|
||||
cipher == WPA_CIPHER_BIP_CMAC_256;
|
||||
}
|
||||
#endif /* CONFIG_IEEE80211W */
|
||||
|
||||
|
||||
/**
|
||||
|
@ -1208,11 +1194,7 @@ int wpa_parse_wpa_ie_rsn(const u8 *rsn_ie, size_t rsn_ie_len,
|
|||
data->capabilities = 0;
|
||||
data->pmkid = NULL;
|
||||
data->num_pmkid = 0;
|
||||
#ifdef CONFIG_IEEE80211W
|
||||
data->mgmt_group_cipher = WPA_CIPHER_AES_128_CMAC;
|
||||
#else /* CONFIG_IEEE80211W */
|
||||
data->mgmt_group_cipher = 0;
|
||||
#endif /* CONFIG_IEEE80211W */
|
||||
|
||||
if (rsn_ie_len == 0) {
|
||||
/* No RSN IE - fail silently */
|
||||
|
@ -1287,13 +1269,11 @@ int wpa_parse_wpa_ie_rsn(const u8 *rsn_ie, size_t rsn_ie_len,
|
|||
pos += RSN_SELECTOR_LEN;
|
||||
left -= RSN_SELECTOR_LEN;
|
||||
}
|
||||
#ifdef CONFIG_IEEE80211W
|
||||
if (data->pairwise_cipher & WPA_CIPHER_AES_128_CMAC) {
|
||||
wpa_printf(MSG_DEBUG, "%s: AES-128-CMAC used as "
|
||||
"pairwise cipher", __func__);
|
||||
return -1;
|
||||
}
|
||||
#endif /* CONFIG_IEEE80211W */
|
||||
} else if (left == 1) {
|
||||
wpa_printf(MSG_DEBUG, "%s: ie too short (for key mgmt)",
|
||||
__func__);
|
||||
|
@ -1345,7 +1325,6 @@ int wpa_parse_wpa_ie_rsn(const u8 *rsn_ie, size_t rsn_ie_len,
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_IEEE80211W
|
||||
if (left >= 4) {
|
||||
data->mgmt_group_cipher = rsn_selector_to_bitfield(pos);
|
||||
if (!wpa_cipher_valid_mgmt_group(data->mgmt_group_cipher)) {
|
||||
|
@ -1358,7 +1337,6 @@ int wpa_parse_wpa_ie_rsn(const u8 *rsn_ie, size_t rsn_ie_len,
|
|||
pos += RSN_SELECTOR_LEN;
|
||||
left -= RSN_SELECTOR_LEN;
|
||||
}
|
||||
#endif /* CONFIG_IEEE80211W */
|
||||
|
||||
if (left > 0) {
|
||||
wpa_hexdump(MSG_DEBUG,
|
||||
|
@ -1857,11 +1835,9 @@ void rsn_pmkid(const u8 *pmk, size_t pmk_len, const u8 *aa, const u8 *spa,
|
|||
wpa_printf(MSG_DEBUG, "RSN: Derive PMKID using HMAC-SHA-384");
|
||||
hmac_sha384_vector(pmk, pmk_len, 3, addr, len, hash);
|
||||
#endif /* CONFIG_FILS || CONFIG_SHA384 */
|
||||
#if defined(CONFIG_IEEE80211W) || defined(CONFIG_FILS)
|
||||
} else if (wpa_key_mgmt_sha256(akmp)) {
|
||||
wpa_printf(MSG_DEBUG, "RSN: Derive PMKID using HMAC-SHA-256");
|
||||
hmac_sha256_vector(pmk, pmk_len, 3, addr, len, hash);
|
||||
#endif /* CONFIG_IEEE80211W || CONFIG_FILS */
|
||||
} else {
|
||||
wpa_printf(MSG_DEBUG, "RSN: Derive PMKID using HMAC-SHA-1");
|
||||
hmac_sha1_vector(pmk, pmk_len, 3, addr, len, hash);
|
||||
|
@ -2012,12 +1988,10 @@ const char * wpa_key_mgmt_txt(int key_mgmt, int proto)
|
|||
case WPA_KEY_MGMT_FT_PSK:
|
||||
return "FT-PSK";
|
||||
#endif /* CONFIG_IEEE80211R */
|
||||
#ifdef CONFIG_IEEE80211W
|
||||
case WPA_KEY_MGMT_IEEE8021X_SHA256:
|
||||
return "WPA2-EAP-SHA256";
|
||||
case WPA_KEY_MGMT_PSK_SHA256:
|
||||
return "WPA2-PSK-SHA256";
|
||||
#endif /* CONFIG_IEEE80211W */
|
||||
case WPA_KEY_MGMT_WPS:
|
||||
return "WPS";
|
||||
case WPA_KEY_MGMT_SAE:
|
||||
|
|
|
@ -104,9 +104,7 @@ WPA_CIPHER_BIP_CMAC_256)
|
|||
#endif
|
||||
#define RSN_KEY_DATA_MAC_ADDR RSN_SELECTOR(0x00, 0x0f, 0xac, 3)
|
||||
#define RSN_KEY_DATA_PMKID RSN_SELECTOR(0x00, 0x0f, 0xac, 4)
|
||||
#ifdef CONFIG_IEEE80211W
|
||||
#define RSN_KEY_DATA_IGTK RSN_SELECTOR(0x00, 0x0f, 0xac, 9)
|
||||
#endif /* CONFIG_IEEE80211W */
|
||||
#define RSN_KEY_DATA_KEYID RSN_SELECTOR(0x00, 0x0f, 0xac, 10)
|
||||
#define RSN_KEY_DATA_MULTIBAND_GTK RSN_SELECTOR(0x00, 0x0f, 0xac, 11)
|
||||
#define RSN_KEY_DATA_MULTIBAND_KEYID RSN_SELECTOR(0x00, 0x0f, 0xac, 12)
|
||||
|
@ -130,10 +128,8 @@ WPA_CIPHER_BIP_CMAC_256)
|
|||
#pragma pack(push, 1)
|
||||
#endif /* _MSC_VER */
|
||||
|
||||
#ifdef CONFIG_IEEE80211W
|
||||
#define WPA_IGTK_LEN 16
|
||||
#define WPA_IGTK_MAX_LEN 32
|
||||
#endif /* CONFIG_IEEE80211W */
|
||||
|
||||
|
||||
/* IEEE 802.11, 7.3.2.25.3 RSN Capabilities */
|
||||
|
@ -226,12 +222,10 @@ struct wpa_gtk {
|
|||
size_t gtk_len;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_IEEE80211W
|
||||
struct wpa_igtk {
|
||||
u8 igtk[WPA_IGTK_MAX_LEN];
|
||||
size_t igtk_len;
|
||||
};
|
||||
#endif /* CONFIG_IEEE80211W */
|
||||
|
||||
/* WPA IE version 1
|
||||
* 00-50-f2:1 (OUI:OUI type)
|
||||
|
@ -291,14 +285,12 @@ struct rsn_error_kde {
|
|||
be16 error_type;
|
||||
} STRUCT_PACKED;
|
||||
|
||||
#ifdef CONFIG_IEEE80211W
|
||||
#define WPA_IGTK_KDE_PREFIX_LEN (2 + 6)
|
||||
struct wpa_igtk_kde {
|
||||
u8 keyid[2];
|
||||
u8 pn[6];
|
||||
u8 igtk[WPA_IGTK_MAX_LEN];
|
||||
} STRUCT_PACKED;
|
||||
#endif /* CONFIG_IEEE80211W */
|
||||
|
||||
struct rsn_mdie {
|
||||
u8 mobility_domain[MOBILITY_DOMAIN_ID_LEN];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue