Add an API for getting wifi passphrase 42/320842/1 accepted/tizen_8.0_unified tizen_8.0 accepted/tizen/8.0/unified/20241125.160535
authorJaehyun Kim <jeik01.kim@samsung.com>
Mon, 25 Nov 2024 04:36:44 +0000 (13:36 +0900)
committerJaehyun Kim <jeik01.kim@samsung.com>
Mon, 25 Nov 2024 04:36:44 +0000 (13:36 +0900)
This is an API only for the internal modules
with special privileges.

Change-Id: I6c69652e56ba7aec3aceb628ef536863cd93f4ae
Signed-off-by: Jaehyun Kim <jeik01.kim@samsung.com>
include/wifi-manager-extension.h
src/network_dbus.c
src/wifi_config.c
tools/manager-test/wman_test_extension.c
tools/manager-test/wman_test_extension.h
tools/manager-test/wman_test_main.c

index 928da0a0cd457067a25d9909ee9078612f56b36b..ab58ff59d4bef8d5f99cc890dfdc0e1d4c98e27c 100644 (file)
@@ -260,6 +260,25 @@ int wifi_manager_config_get_frequency(wifi_manager_config_h config,
 int wifi_manager_config_set_frequency(wifi_manager_config_h config,
                int frequency);
 
+/**
+ * @brief Gets access point passphrase from configuration.
+ * @since_tizen 9.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/wifi.secureinfo
+ * @param[in] wifi          The Wi-Fi handle
+ * @param[in] config        The access point configuration handle
+ * @param[out] passphrase   The passphrase of access point
+ *
+ * @return 0 on success, otherwise negative error value.
+ * @retval #WIFI_MANAGER_ERROR_NONE  Successful
+ * @retval #WIFI_MANAGER_ERROR_INVALID_PARAMETER    Invalid parameter
+ * @retval #WIFI_MANAGER_ERROR_OPERATION_FAILED     Operation failed
+ * @retval #WIFI_MANAGER_ERROR_PERMISSION_DENIED    Permission Denied
+ * @retval #WIFI_MANAGER_ERROR_NOT_SUPPORTED        Not supported
+ */
+int wifi_manager_config_get_passphrase(wifi_manager_h wifi,
+               wifi_manager_config_h config, char **passphrase);
+
 /**
  * @brief Reset all WiFi configurations
  * @since_tizen 7.5
index 22051e7f8a271aaed70cd0b5d7ea468244c9da48..647eec064a6b3c6f652a12cb3968f525b12b6ed6 100755 (executable)
@@ -3737,7 +3737,7 @@ int _net_dbus_config_get_passphrase(network_info_s *network_info,
        message = _net_invoke_dbus_method(network_info,
                        NETCONFIG_SERVICE, NETCONFIG_WIFI_PATH,
                        NETCONFIG_WIFI_INTERFACE, "GetConfigPassphrase",
-                       g_variant_new("(s)", config_id), &Error);
+                       g_variant_new("(ss)", network_info->interface_name, config_id), &Error);
 
        if (message == NULL) {
                WIFI_LOG(WIFI_ERROR, "Failed to GetConfigPassphrase");
index fbc891ad6017a0dafa4a178d2a47a348c1ab0dcb..8f55d210fe2e9602f372723852a90676e00fdb1b 100644 (file)
@@ -398,6 +398,46 @@ EXPORT_API int wifi_manager_config_get_security_type(wifi_manager_config_h confi
        return WIFI_MANAGER_ERROR_NONE;
 }
 
+EXPORT_API int wifi_manager_config_get_passphrase(wifi_manager_h wifi,
+               wifi_manager_config_h config, char **passphrase)
+{
+       __NETWORK_CAPI_FUNC_ENTER__;
+
+       CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
+       int ret = WIFI_MANAGER_ERROR_NONE;
+       wifi_config_s *h = (wifi_config_s *)config;
+
+       RET_ERR_IF_HANDLE_IS_NOT_VALID_OR_NOT_INITIALIZED(wifi, __NETWORK_CAPI_FUNC_EXIT__);
+
+       if (config == NULL || h->name == NULL || passphrase == NULL) {
+               WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
+               __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
+               return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
+       }
+
+       if (_wifi_check_config_validity(config) == false) {
+               WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
+               __NETWORK_CAPI_FUNC_EXIT__; //LCOV_EXCL_LINE
+               return WIFI_MANAGER_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
+       }
+
+       if (h->is_saved == TRUE) {
+               gchar *config_id = NULL;
+
+               config_id = _wifi_config_get_config_id(h->name, h->security_type);
+
+               ret = _wifi_configuration_get_passphrase(wifi, config_id, passphrase);
+               if (ret != WIFI_MANAGER_ERROR_NONE)
+                       WIFI_LOG(WIFI_ERROR, "Fail to get passphrase [%d]", ret);
+
+               g_free(config_id);
+       }
+
+       __NETWORK_CAPI_FUNC_EXIT__;
+
+       return ret;
+}
+
 /**
  * wifi configuration set field
  */
index c67e5fb2e70b19b9f0e6620db99b69bdcf723970..5c5e912876818634e825c6a1695e03701b8c7811 100644 (file)
@@ -348,6 +348,59 @@ int wman_test_reset_wifi_configurations(wifi_manager_h wifi)
        return 1;
 }
 
+static bool __test_config_list_cb_for_passphrase(const wifi_manager_config_h config, void *user_data)
+{
+       char *name = NULL;
+       char *passphrase = NULL;
+       struct wman_public_info *data = user_data;
+       wifi_manager_security_type_e security_type;
+
+       wifi_manager_config_get_name(config, &name);
+       wifi_manager_config_get_security_type(config, &security_type);
+
+       if (wman_test_compare_ap_name(name, data->name) && security_type == data->type) {
+               int rv = wifi_manager_config_get_passphrase(data->wifi, config, &passphrase);
+               if (rv != WIFI_MANAGER_ERROR_NONE) {
+                       printf("Fail to get passphrase [%s]\n", wman_test_strerror(rv));
+               } else {
+                       printf("Success to get passphrase [%s][%s]\n", name, passphrase);
+                       free(passphrase);
+               }
+               free(name);
+
+               return false;
+       }
+       free(name);
+
+       return true;
+}
+
+int wman_test_get_wifi_passphrase(wifi_manager_h wifi)
+{
+       int rv;
+       char name[33];
+       struct wman_public_info data = {wifi, name};
+
+       printf("Input AP configuration\n");
+       printf("Input AP Name : ");
+       rv = scanf(" %32[^\n]s", name);
+       if (rv <= 0)
+               return -1;
+
+       printf("Security type(None(0), WEP(1), WPA-PSK(2), EAP(4) : ");
+       rv = scanf(" %d", &data.type);
+       if (rv <= 0)
+               return -1;
+
+       rv = wifi_manager_config_foreach_configuration(wifi, __test_config_list_cb_for_passphrase, &data);
+       if (rv != WIFI_MANAGER_ERROR_NONE) {
+               printf("Fail to get configurations [%s]\n", wman_test_strerror(rv));
+               return -1;
+       }
+
+       return 1;
+}
+
 int wman_test_set_ip_conflict_period(wifi_manager_h wifi)
 {
        int rv = 0;
index cf9a9f6de3575636ee6586eb20a855efc22b0a5f..a9a71f943d7a8b6f5d27c975d75ff5a1dcbcf68b 100644 (file)
@@ -29,6 +29,7 @@ int wman_test_get_auto_connect(wifi_manager_h wifi);
 int wman_test_set_ap_auto_connect(wifi_manager_h wifi);
 int wman_test_get_ap_auto_connect(wifi_manager_h wifi);
 int wman_test_reset_wifi_configurations(wifi_manager_h wifi);
+int wman_test_get_wifi_passphrase(wifi_manager_h wifi);
 int wman_test_set_ip_conflict_period(wifi_manager_h wifi);
 int wman_test_get_ip_conflict_period(wifi_manager_h wifi);
 int wman_test_netlink_scan(wifi_manager_h wifi);
index 5d8ed8c52f3555ab3d136b84181615faa25ce413..b36a7ad9a6458a9936f98adeaae6aede7d3c09d3 100644 (file)
@@ -365,6 +365,7 @@ gboolean test_thread(GIOChannel *source, GIOCondition condition, gpointer data)
                printf("[   - Get Interval of Auto Scan\n");
                printf("]   - Set Interval of Auto Scan\n");
                printf(";   - Remove All Wi-Fi configurations\n");
+               printf(",   - Get Wi-Fi passphrase\n");
                printf(".   - Get Wi-Fi band for scanning\n");
                printf("/   - Set Wi-Fi band for scanning\n");
                printf("_   - Gets the Wi-Fi VSIE from DHCP ack packet\n");
@@ -605,6 +606,9 @@ gboolean test_thread(GIOChannel *source, GIOCondition condition, gpointer data)
        case ';':
                rv = wman_test_reset_wifi_configurations(wifi);
                break;
+       case ',':
+               rv = wman_test_get_wifi_passphrase(wifi);
+               break;
        case '.':
                rv = wman_test_get_scan_band(wifi);
                break;