Add support for OWE security mode 24/210824/1
authorYu <jiung.yu@samsung.com>
Thu, 25 Jul 2019 05:49:24 +0000 (14:49 +0900)
committerYu <jiung.yu@samsung.com>
Thu, 25 Jul 2019 05:49:24 +0000 (14:49 +0900)
Change-Id: I65fe3abe254a985e13e4977268218148f44d43fc

include/network_interface.h
include/network_wlan.h
include/wifi-manager.h
src/network_dbus.c
src/network_interface.c
src/network_internal.c
src/wifi_ap.c
src/wifi_internal.c
test/wifi_manager_test.c
tool/wifi_mgr_tool.c

index e80010250cf55dacb37487bee3de72bce1afaa71..a07b01d64ea01ed2e3775bb22c5123ab41431693 100755 (executable)
@@ -125,6 +125,8 @@ typedef enum {
        WIFI_SEC_WPA_PSK,
        WIFI_SEC_WPA2_PSK,
        WIFI_SEC_EAP,
+       WIFI_SEC_SAE,
+       WIFI_SEC_OWE,
 } net_wifi_security_type_e;
 
 typedef enum {
index 58264aac137290fe58efe8783ab1be20770cd634..58b33c126ffb59027b83640578c1ec30f1f43d99 100755 (executable)
@@ -119,7 +119,8 @@ typedef enum {
        WLAN_SEC_MODE_WPA_PSK,                          /** WPA-PSK */
        WLAN_SEC_MODE_WPA2_PSK,                         /** WPA2-PSK */
        WLAN_SEC_MODE_WPA_FT_PSK,
-       WLAN_SEC_MODE_SAE,                              /** SAE */
+       WLAN_SEC_MODE_SAE,                                      /** SAE */
+       WLAN_SEC_MODE_OWE,                                      /** OWE */
 } wlan_security_mode_type_e;
 
 /**
index ebf995a00c61a2ca57c128d5b95e439600cb1560..acf585bfa381c379d80f191c770132ec54f4a656 100755 (executable)
@@ -374,7 +374,8 @@ typedef enum {
        WIFI_MANAGER_SECURITY_TYPE_WPA2_PSK = 3,    /**< WPA2-PSK */
        WIFI_MANAGER_SECURITY_TYPE_EAP = 4,         /**< EAP */
        WIFI_MANAGER_SECURITY_TYPE_WPA_FT_PSK = 5,  /**< FT-PSK (Since 5.0) */
-       WIFI_MANAGER_SECURITY_TYPE_SAE = 6,    /**< SAE (Since 5.5) */
+       WIFI_MANAGER_SECURITY_TYPE_SAE = 6,         /**< SAE (Since 5.5) */
+       WIFI_MANAGER_SECURITY_TYPE_OWE = 7,         /**< OWE (Since 5.5) */
 } wifi_manager_security_type_e;
 
 /**
index 4f2377e0948ced86e39ef191a864e9b1637084d8..907aefb5c08f9855aca8bcc7482f3db33776ffd7 100755 (executable)
@@ -27,6 +27,8 @@
 #define WIFI_SECURITY_WEP                      "wep"
 #define WIFI_SECURITY_WPA_PSK          "psk"
 #define WIFI_SECURITY_EAP                      "ieee8021x"
+#define WIFI_SECURITY_SAE                      "sae"
+#define WIFI_SECURITY_OWE                      "owe"
 
 extern __thread network_info_s NetworkInfo;
 extern __thread network_request_table_s request_table[NETWORK_REQUEST_TYPE_MAX];
@@ -128,6 +130,10 @@ static net_wifi_security_type_e __net_wifi_security_type_to_int(const gchar *typ
                ret = WIFI_SEC_WPA_PSK;
        else if (g_strcmp0(type, WIFI_SECURITY_EAP) == 0)
                ret = WIFI_SEC_EAP;
+       else if (g_strcmp0(type, WIFI_SECURITY_SAE) == 0)
+               ret = WIFI_SEC_SAE;
+       else if (g_strcmp0(type, WIFI_SECURITY_OWE) == 0)
+               ret = WIFI_SEC_OWE;
        else
                WIFI_LOG(WIFI_ERROR, "Not supported type (%s)", type);
 
@@ -1335,7 +1341,6 @@ int _net_dbus_connect_service(const net_wifi_connect_service_info_t *wifi_connec
 
                goto error; //LCOV_EXCL_LINE
        }
-
        if (wifi_connection_info->is_hidden == TRUE) {
                //LCOV_EXCL_START
                char *target_name = __net_make_group_name(wifi_connection_info->ssid,
@@ -1368,7 +1373,8 @@ int _net_dbus_connect_service(const net_wifi_connect_service_info_t *wifi_connec
                                wifi_connection_info->ssid,
                                wifi_connection_info->passphrase,
                                prof_info->ProfileName);
-       } else if (g_strcmp0(wifi_connection_info->security, "none") != 0) {
+       } else if (g_strcmp0(wifi_connection_info->security, "none") != 0 &&
+                       g_strcmp0(wifi_connection_info->security, "owe") != 0) {
                Error = _net_dbus_set_agent_passphrase_and_connect(
                                wifi_connection_info->passphrase, prof_info->ProfileName);
                if (NET_ERR_NONE != Error) {
index 0b6ff12c5aef5c208af5aa8ec828e2e38a509b05..d058b7a99a334f2f8cc10036a2d880ea307bee6f 100755 (executable)
@@ -861,6 +861,9 @@ static int __net_extract_wifi_info(GVariantIter *array, net_profile_info_s* Prof
                                else if (g_strcmp0(value, "sae") == 0 &&
                                                 ProfInfo->security_info.sec_mode < WLAN_SEC_MODE_SAE)
                                        ProfInfo->security_info.sec_mode = WLAN_SEC_MODE_SAE;
+                               else if (g_strcmp0(value, "owe") == 0 &&
+                                                ProfInfo->security_info.sec_mode < WLAN_SEC_MODE_SAE)
+                                       ProfInfo->security_info.sec_mode = WLAN_SEC_MODE_OWE;
                                else if (g_strcmp0(value, "wps") == 0)
                                        ProfInfo->security_info.wps_support = TRUE;
                                else if (ProfInfo->security_info.sec_mode < WLAN_SEC_MODE_NONE)
index 15f65f2d95fb08577238aed85f1664ea8b2ba6ac..1e0bd17f6620fb58fde19af96515b58f5b462231 100755 (executable)
@@ -288,6 +288,10 @@ int _net_open_connection_with_wifi_info(const net_wifi_connection_info_s* wifi_i
                                (char *)wifi_info->security_info.authentication.sae.saeKey;
                break;
 
+       case WLAN_SEC_MODE_OWE:
+               wifi_connection_info.security = "owe";
+               break;
+
        case WLAN_SEC_MODE_IEEE8021X:
                wifi_connection_info.security = "ieee8021x";
 
index b21402fc46431a465356439cb50d56d8f06a7519..08b1bc20e0ef847669ea2b4fd27e880e0cb77b6e 100755 (executable)
@@ -100,6 +100,9 @@ static char *__wifi_create_profile_name(const char *ssid,
        case WLAN_SEC_MODE_SAE:
                g_sec = "sae";
                break;
+       case WLAN_SEC_MODE_OWE:
+               g_sec = "owe";
+               break;
        default:
                WIFI_LOG(WIFI_ERROR, "Invalid security type");
                return NULL;
@@ -1684,6 +1687,9 @@ EXPORT_API int wifi_manager_ap_get_security_type(wifi_manager_ap_h ap,
        case WLAN_SEC_MODE_SAE:
                *type = WIFI_MANAGER_SECURITY_TYPE_SAE;
                break;
+       case WLAN_SEC_MODE_OWE:
+               *type = WIFI_MANAGER_SECURITY_TYPE_OWE;
+               break;
        default:
                /* __NETWORK_CAPI_FUNC_EXIT__; */
                return WIFI_MANAGER_ERROR_OPERATION_FAILED;
@@ -1733,6 +1739,9 @@ EXPORT_API int wifi_manager_ap_set_security_type(wifi_manager_ap_h ap,
        case WIFI_MANAGER_SECURITY_TYPE_SAE:
                profile_info->security_info.sec_mode = WLAN_SEC_MODE_SAE;
                break;
+       case WIFI_MANAGER_SECURITY_TYPE_OWE:
+               profile_info->security_info.sec_mode = WLAN_SEC_MODE_OWE;
+               break;
        default:
                __NETWORK_CAPI_FUNC_EXIT__;
                return WIFI_MANAGER_ERROR_INVALID_PARAMETER;
@@ -1856,6 +1865,7 @@ EXPORT_API int wifi_manager_ap_is_passphrase_required(wifi_manager_ap_h ap,
        //LCOV_EXCL_START
        switch (profile_info->security_info.sec_mode) {
        case WLAN_SEC_MODE_NONE:
+       case WLAN_SEC_MODE_OWE:
                *required = false;
                break;
        case WLAN_SEC_MODE_WEP:
@@ -1909,6 +1919,7 @@ EXPORT_API int wifi_manager_ap_set_passphrase(wifi_manager_ap_h ap, const char *
                break;
        case WLAN_SEC_MODE_NONE:
        case WLAN_SEC_MODE_IEEE8021X:
+       case WLAN_SEC_MODE_OWE:
        default:
                __NETWORK_CAPI_FUNC_EXIT__;
                return WIFI_MANAGER_ERROR_OPERATION_FAILED;
index d6887690cdc2be9b5d110ea7578d583563a3902b..7b0a31ea267f9dc1e7be1736b8fbab138ac32e8c 100755 (executable)
@@ -32,6 +32,7 @@ static gboolean multi_scan_type[WIFI_MULTI_SCAN_MAX] = {0, };
 #define WIFI_SECURITY_WPA_PSK                  "psk"
 #define WIFI_SECURITY_WPA_FT_PSK               "ft_psk"
 #define WIFI_SECURITY_SAE                      "sae"
+#define WIFI_SECURITY_OWE                      "owe"
 #define WIFI_SECURITY_EAP                      "ieee8021x"
 
 static __thread GSList *wifi_manager_handle_list = NULL;
@@ -217,6 +218,9 @@ static gchar *__wifi_security_type_to_string(wifi_manager_security_type_e securi
        case WIFI_MANAGER_SECURITY_TYPE_SAE:
                return WIFI_SECURITY_SAE;
 
+       case WIFI_MANAGER_SECURITY_TYPE_OWE:
+               return WIFI_SECURITY_OWE;
+
        case WIFI_MANAGER_SECURITY_TYPE_WPA_FT_PSK:
                return WIFI_SECURITY_WPA_FT_PSK;
 
@@ -1903,6 +1907,9 @@ int _wifi_get_hidden_aps(wifi_manager_h wifi, const char *essid,
                case WLAN_SEC_MODE_SAE:
                        type = WIFI_MANAGER_SECURITY_TYPE_SAE;
                        break;
+               case WLAN_SEC_MODE_OWE:
+                       type = WIFI_MANAGER_SECURITY_TYPE_OWE;
+                       break;
                }
                if (prof_info->is_hidden == TRUE) {
                        if (type == sec_type) {
@@ -1943,6 +1950,7 @@ int _wifi_get_hidden_aps(wifi_manager_h wifi, const char *essid,
                                passphrase, NET_WLAN_MAX_SAE_PASSPHRASE_LEN+1);
                break;
        case WLAN_SEC_MODE_NONE:
+       case WLAN_SEC_MODE_OWE:
                break;
        case WLAN_SEC_MODE_IEEE8021X:
        default:
index 1beba739b6aea0c7027d6ab6b0b8a6eb18a88dfc..b2dc850e1bd64031bd965b774a4feae1529c9cf8 100755 (executable)
@@ -1504,6 +1504,7 @@ static bool __test_found_specific_ap_callback(wifi_manager_ap_h ap, void *user_d
                }
                break;
        case WIFI_MANAGER_SECURITY_TYPE_NONE:
+       case WIFI_MANAGER_SECURITY_TYPE_OWE:
        default:
                break;
        }
index cfcc767327a260d60c0f5bf58238dfb21a4e09f3..eb77cdaf395babe309f1f86e2da6718f84d1e9d0 100755 (executable)
@@ -498,6 +498,8 @@ const char *test_wifi_mgr_sec_type_to_string(wifi_manager_security_type_e type)
                return "FT_PSK";
        case WIFI_MANAGER_SECURITY_TYPE_SAE:
                return "WPA3";
+       case WIFI_MANAGER_SECURITY_TYPE_OWE:
+               return "OWE";
        }
 
        return "Unknown";