Support ft-psk and ft-sae connection 98/281498/2 accepted/tizen/unified/20220923.052717
authorJaehyun Kim <jeik01.kim@samsung.com>
Mon, 19 Sep 2022 12:49:30 +0000 (21:49 +0900)
committerJaehyun Kim <jeik01.kim@samsung.com>
Mon, 19 Sep 2022 12:51:28 +0000 (12:51 +0000)
Change-Id: I05d8d3934a8a75c874b41cb44654b7bc61b34060
Signed-off-by: Jaehyun Kim <jeik01.kim@samsung.com>
gsupplicant/gsupplicant.h
gsupplicant/supplicant.c
plugins/wifi.c

index 884c92e..3b19519 100755 (executable)
@@ -71,6 +71,7 @@ extern "C" {
 #define G_SUPPLICANT_KEYMGMT_WPS               (1 << 9)
 #if defined TIZEN_EXT
 #define G_SUPPLICANT_KEYMGMT_SAE               (1 << 10)
+#define G_SUPPLICANT_KEYMGMT_FT_SAE            (1 << 11)
 #define G_SUPPLICANT_KEYMGMT_OWE               (1 << 22)
 #define G_SUPPLICANT_KEYMGMT_DPP               (1 << 23)
 #endif
index e457fef..12aed30 100755 (executable)
@@ -122,6 +122,7 @@ static struct strvalmap keymgmt_map[] = {
        { "wps",                G_SUPPLICANT_KEYMGMT_WPS                },
 #if defined TIZEN_EXT
        { "sae",                G_SUPPLICANT_KEYMGMT_SAE                },
+       { "ft-sae",             G_SUPPLICANT_KEYMGMT_FT_SAE             },
        { "owe",                G_SUPPLICANT_KEYMGMT_OWE                },
        { "dpp",                G_SUPPLICANT_KEYMGMT_DPP                },
 #endif
@@ -3230,7 +3231,8 @@ static void bss_compute_security(struct g_supplicant_bss *bss)
 #endif
 
 #if defined TIZEN_EXT
-       if (bss->keymgmt & G_SUPPLICANT_KEYMGMT_SAE)
+       if (bss->keymgmt & G_SUPPLICANT_KEYMGMT_SAE |
+                       bss->keymgmt & G_SUPPLICANT_KEYMGMT_FT_SAE)
                bss->sae = TRUE;
        if (bss->keymgmt & G_SUPPLICANT_KEYMGMT_OWE)
                bss->owe = TRUE;
@@ -7340,7 +7342,14 @@ static void add_network_security(DBusMessageIter *dict, GSupplicantSSID *ssid)
                add_network_security_ciphers(dict, ssid);
                break;
        case G_SUPPLICANT_SECURITY_PSK:
+#if defined TIZEN_EXT
+               if (ssid->keymgmt & G_SUPPLICANT_KEYMGMT_WPA_FT_PSK)
+                       key_mgmt = "FT-PSK WPA-PSK";
+               else
+                       key_mgmt = "WPA-PSK";
+#else
                key_mgmt = "WPA-PSK";
+#endif
                add_network_security_psk(dict, ssid);
                add_network_security_ciphers(dict, ssid);
                add_network_security_proto(dict, ssid);
@@ -7365,8 +7374,13 @@ static void add_network_security(DBusMessageIter *dict, GSupplicantSSID *ssid)
                add_network_security_proto(dict, ssid);
                break;
        case G_SUPPLICANT_SECURITY_SAE:
-               if (ssid->keymgmt & G_SUPPLICANT_KEYMGMT_WPA_PSK)
-                       key_mgmt = "SAE WPA-PSK"; // WFA (WPA3 & WPA2 Mixed -> WPA2 only)
+               if (ssid->keymgmt & G_SUPPLICANT_KEYMGMT_FT_SAE) {
+                       if (ssid->keymgmt & G_SUPPLICANT_KEYMGMT_SAE)
+                               key_mgmt = "FT-SAE SAE";
+                       else
+                               key_mgmt = "FT-SAE";
+               } else if (ssid->keymgmt & G_SUPPLICANT_KEYMGMT_WPA_PSK)
+                       key_mgmt = "SAE WPA-PSK";
                else
                        key_mgmt = "SAE";
                add_network_security_psk(dict, ssid);
index 7a8eccc..20b1293 100755 (executable)
@@ -5298,11 +5298,16 @@ static GSList *get_supported_security_list(unsigned int keymgmt,
                        sec_list = g_slist_prepend (sec_list, "psk");
                        sec_list = g_slist_prepend (sec_list, "rsn");
                }
-       } else if (keymgmt & G_SUPPLICANT_KEYMGMT_WPA_FT_PSK)
+       }
+
+       if (keymgmt & G_SUPPLICANT_KEYMGMT_WPA_FT_PSK)
                sec_list = g_slist_prepend (sec_list, "ft_psk");
 
        if (keymgmt & G_SUPPLICANT_KEYMGMT_SAE)
                sec_list = g_slist_prepend (sec_list, "sae");
+       if (keymgmt & G_SUPPLICANT_KEYMGMT_FT_SAE)
+               sec_list = g_slist_prepend (sec_list, "ft_sae");
+
        if (keymgmt & G_SUPPLICANT_KEYMGMT_OWE || owe_transition_mode)
                sec_list = g_slist_prepend (sec_list, "owe");
        if (keymgmt & G_SUPPLICANT_KEYMGMT_DPP)