diff --git a/wpa_supplicant/Android.mk b/wpa_supplicant/Android.mk index a8d6a7f94..db8eaae79 100644 --- a/wpa_supplicant/Android.mk +++ b/wpa_supplicant/Android.mk @@ -238,6 +238,12 @@ NEED_ECC=y NEED_DH_GROUPS=y endif +ifdef CONFIG_FILS +L_CFLAGS += -DCONFIG_FILS +NEED_CRC32=y +NEED_SHA384=y +endif + ifdef CONFIG_WNM L_CFLAGS += -DCONFIG_WNM OBJS += wnm_sta.c @@ -1284,6 +1290,10 @@ ifdef NEED_ECC L_CFLAGS += -DCONFIG_ECC endif +ifdef NEED_CRC32 +OBJS += src/utils/crc32.c +endif + ifdef CONFIG_NO_RANDOM_POOL L_CFLAGS += -DCONFIG_NO_RANDOM_POOL else diff --git a/wpa_supplicant/Makefile b/wpa_supplicant/Makefile index f3e86c1de..a0393e6f1 100644 --- a/wpa_supplicant/Makefile +++ b/wpa_supplicant/Makefile @@ -271,6 +271,12 @@ NEED_ECC=y NEED_DH_GROUPS=y endif +ifdef CONFIG_FILS +CFLAGS += -DCONFIG_FILS +NEED_CRC32=y +NEED_SHA384=y +endif + ifdef CONFIG_WNM CFLAGS += -DCONFIG_WNM OBJS += wnm_sta.o @@ -1330,6 +1336,10 @@ ifdef NEED_ECC CFLAGS += -DCONFIG_ECC endif +ifdef NEED_CRC32 +OBJS += ../src/utils/crc32.o +endif + ifdef CONFIG_NO_RANDOM_POOL CFLAGS += -DCONFIG_NO_RANDOM_POOL else diff --git a/wpa_supplicant/config.c b/wpa_supplicant/config.c index dd922caf8..a0b64b22a 100644 --- a/wpa_supplicant/config.c +++ b/wpa_supplicant/config.c @@ -719,6 +719,18 @@ static int wpa_config_parse_key_mgmt(const struct parse_data *data, else if (os_strcmp(start, "WPA-EAP-SUITE-B-192") == 0) val |= WPA_KEY_MGMT_IEEE8021X_SUITE_B_192; #endif /* CONFIG_SUITEB192 */ +#ifdef CONFIG_FILS + else if (os_strcmp(start, "FILS-SHA256") == 0) + val |= WPA_KEY_MGMT_FILS_SHA256; + else if (os_strcmp(start, "FILS-SHA384") == 0) + val |= WPA_KEY_MGMT_FILS_SHA384; +#ifdef CONFIG_IEEE80211R + else if (os_strcmp(start, "FT-FILS-SHA256") == 0) + val |= WPA_KEY_MGMT_FT_FILS_SHA256; + else if (os_strcmp(start, "FT-FILS-SHA384") == 0) + val |= WPA_KEY_MGMT_FT_FILS_SHA384; +#endif /* CONFIG_IEEE80211R */ +#endif /* CONFIG_FILS */ else { wpa_printf(MSG_ERROR, "Line %d: invalid key_mgmt '%s'", line, start); diff --git a/wpa_supplicant/defconfig b/wpa_supplicant/defconfig index 1d05198f8..d27c68053 100644 --- a/wpa_supplicant/defconfig +++ b/wpa_supplicant/defconfig @@ -548,3 +548,8 @@ CONFIG_PEERKEY=y # Support Multi Band Operation #CONFIG_MBO=y + +# Fast Initial Link Setup (FILS) (IEEE 802.11ai) +# Note: This is an experimental and not yet complete implementation. This +# should not be enabled for production use. +#CONFIG_FILS=y diff --git a/wpa_supplicant/wpa_supplicant.conf b/wpa_supplicant/wpa_supplicant.conf index b3138e301..047ca9001 100644 --- a/wpa_supplicant/wpa_supplicant.conf +++ b/wpa_supplicant/wpa_supplicant.conf @@ -822,6 +822,10 @@ fast_reauth=1 # WPA-EAP-SUITE-B = Suite B 128-bit level # WPA-EAP-SUITE-B-192 = Suite B 192-bit level # OSEN = Hotspot 2.0 Rel 2 online signup connection +# FILS-SHA256 = Fast Initial Link Setup with SHA256 +# FILS-SHA384 = Fast Initial Link Setup with SHA384 +# FT-FILS-SHA256 = FT and Fast Initial Link Setup with SHA256 +# FT-FILS-SHA384 = FT and Fast Initial Link Setup with SHA384 # If not set, this defaults to: WPA-PSK WPA-EAP # # ieee80211w: whether management frame protection is enabled