Some patches for xwindow 34/46434/4 accepted/tizen/mobile/20150821.092127 accepted/tizen/tv/20150821.092146 accepted/tizen/wearable/20150821.092156 submit/tizen/20150821.052743
authorhyunuktak <hyunuk.tak@samsung.com>
Thu, 20 Aug 2015 07:55:35 +0000 (16:55 +0900)
committerhyunuktak <hyunuk.tak@samsung.com>
Fri, 21 Aug 2015 05:16:21 +0000 (14:16 +0900)
Signed-off-by: hyunuktak <hyunuk.tak@samsung.com>
Change-Id: I651bcf924b97001e291a9f2ab28d0b7fdc98b2b2

CMakeLists.txt
packaging/wifi-efl-ug.spec
sources/libraries/Common/common_eap_connect.c
sources/libraries/Common/common_utils.c
sources/ui-gadget/CMakeLists.txt
sources/ui-gadget/viewers-layout/viewer_manager.c
sources/ui-gadget/wifi-efl-UG.c
sources/wifi-syspopup/wifi-syspopup.c

index f9c7238..91618e2 100644 (file)
@@ -40,6 +40,7 @@ pkg_check_modules(pkgs REQUIRED
        openssl
        cert-svc-vcore
        efl-extension
+       aul
 #syspopup
 #syspopup-caller
        feedback
index c435b1e..3838dbf 100644 (file)
@@ -1,7 +1,7 @@
 %define _unpackaged_files_terminate_build 0
 Name:          wifi-efl-ug
 Summary:       Wi-Fi UI Gadget for TIZEN
-Version:       1.0.150
+Version:       1.0.151
 Release:       1
 Group:         App/Network
 License:       Flora-1.1
@@ -29,6 +29,7 @@ BuildRequires:        pkgconfig(capi-ui-efl-util)
 BuildRequires: pkgconfig(network)
 BuildRequires: pkgconfig(feedback)
 BuildRequires: pkgconfig(efl-extension)
+BuildRequires: pkgconfig(aul)
 #BuildRequires:  pkgconfig(setting-common-internal)
 #BuildRequires:  pkgconfig(setting-lite-common-internal)
 BuildRequires: cmake
@@ -79,6 +80,7 @@ cp LICENSE %{buildroot}%{_datadir}/license/net.wifi-qs
 /sbin/ldconfig
 
 mkdir -p %{PREFIX}/bin/
+mkdir -p /usr/apps/wifi-efl-ug/bin/ -m 777
 
 vconftool set -t int memory/wifi/ug_run_state 3 -i -g 6519 -s tizen::vconf::platform::rw
 
@@ -93,9 +95,14 @@ vconftool set -t int file/private/wifi/sort_by 1 -g 6519 -s tizen::vconf::settin
 
 %files
 %manifest wifi-efl-ug.manifest
-%{PREFIX}/apps/wifi-efl-ug/lib/ug/*
-%attr(644,-,-) %{PREFIX}/apps/wifi-efl-ug/lib/*
-%attr(755,-,-) %{PREFIX}/apps/wifi-efl-ug/lib/ug
+#tizen 2.4
+#%{PREFIX}/apps/wifi-efl-ug/lib/ug/*
+#%attr(644,-,-) %{PREFIX}/apps/wifi-efl-ug/lib/*
+#%attr(755,-,-) %{PREFIX}/apps/wifi-efl-ug/lib/ug
+#tizen 3.0
+%{PREFIX}/ug/lib/*
+%attr(644,-,-) %{PREFIX}/ug/lib/*
+%attr(755,-,-) %{PREFIX}/ug/lib/
 %{PREFIX}/apps/wifi-efl-ug/res/edje/wifi-efl-UG/*.edj
 %{_datadir}/locale/*/LC_MESSAGES/*.mo
 %{_datadir}/license/wifi-efl-ug
index 75b3b2f..b65fad0 100755 (executable)
@@ -343,6 +343,10 @@ static void _gl_eap_type_sub_sel(void *data, Evas_Object *obj, void *event_info)
                elm_genlist_item_update(eap_data->eap_type_item);
 }
 
+static CertSvcStringList stringList;
+static CertSvcInstance instance;
+static CertSvcStoreCertList *certList = NULL;
+
 static void _gl_eap_user_cert_sel(void *data, Evas_Object *obj,
                void *event_info)
 {
@@ -395,6 +399,8 @@ static void _gl_eap_user_cert_sel(void *data, Evas_Object *obj,
 static void _create_eap_cert_list(eap_connect_data_t *eap_data,
                Evas_Object *btn)
 {
+       int list_length = 0;
+       int index = 0;
        Evas_Object *ctxpopup;
        Elm_Object_Item *it = NULL;
 
@@ -419,6 +425,13 @@ static void _create_eap_cert_list(eap_connect_data_t *eap_data,
                        ELM_CTXPOPUP_DIRECTION_UNKNOWN,
                        ELM_CTXPOPUP_DIRECTION_UNKNOWN);
 
+       if (certsvc_instance_new(&instance) == CERTSVC_FAIL) {
+               INFO_LOG(UG_NAME_ERR, "Failed to create new instance");
+               return;
+       }
+
+       certsvc_pkcs12_get_certificate_list_from_store(instance, WIFI_STORE, DISABLED, &certList, &list_length);
+
        if (eap_data->cert_candidates) {
                g_slist_free_full(eap_data->cert_candidates, g_free);
                eap_data->cert_candidates = NULL;
@@ -429,8 +442,32 @@ static void _create_eap_cert_list(eap_connect_data_t *eap_data,
        elm_object_item_domain_text_translatable_set(it,
                        PACKAGE, EINA_TRUE);
 
+       while(certList != NULL) {
+               char *char_buffer = NULL;
+               CertSvcString buffer;
+
+               buffer.privateHandler = (char *)certList->gname;
+               buffer.privateLength = strlen(certList->gname);
+               INFO_LOG(UG_NAME_NORMAL, "gname in processing : %s", certList->gname);
+
+               char_buffer = g_strndup(buffer.privateHandler, buffer.privateLength);
+               if (char_buffer == NULL)
+                       goto exit;
+
+               elm_ctxpopup_item_append(ctxpopup, char_buffer, NULL,
+                               _gl_eap_user_cert_sel, eap_data);
+               eap_data->cert_candidates =
+                               g_slist_prepend(eap_data->cert_candidates, char_buffer);
+
+               certsvc_string_free(buffer);
+               certList = certList->next;
+       }
+
        move_dropdown(eap_data, btn);
        evas_object_show(ctxpopup);
+
+exit:
+               certsvc_instance_free(instance);
 }
 
 static void _gl_eap_cert_list_btn_cb(void *data, Evas_Object *obj,
@@ -1157,6 +1194,133 @@ static void __common_eap_connect_popup_init_item_class(void *data)
 static gboolean __cert_extract_files(const char *cert_alias,
                eap_connect_data_t *eap_data)
 {
+       int ret;
+       int validity;
+       int cert_counts = 0;
+       int cert_index;
+       gchar *ca_cert_path = NULL;
+       gchar *user_cert_path = NULL;
+       gchar *privatekey_path = NULL;
+       FILE *fp;
+       CertSvcInstance cert_instance;
+       CertSvcString cert_alias_str;
+       CertSvcCertificateList cert_list;
+       CertSvcCertificate user_certificate;
+       CertSvcCertificate ca_certificate;
+       CertSvcCertificate *selected_certificate = NULL;
+       X509 *x509 = NULL;
+       EVP_PKEY *privatekey = NULL;
+
+       ret = certsvc_instance_new(&cert_instance);
+       if (ret != CERTSVC_SUCCESS) {
+               ERROR_LOG(UG_NAME_NORMAL, "failed to certsvc_instance_new");
+               goto error;
+       }
+       ret = certsvc_string_new(cert_instance, cert_alias, strlen(cert_alias), &cert_alias_str);
+       if (ret != CERTSVC_SUCCESS) {
+               ERROR_LOG(UG_NAME_NORMAL, "failed to certsvc_string_new");
+               goto error;
+       }
+       ret = certsvc_pkcs12_load_certificate_list_from_store(cert_instance, WIFI_STORE, cert_alias_str, &cert_list);
+       if (ret != CERTSVC_SUCCESS) {
+               ERROR_LOG(UG_NAME_NORMAL, "failed to certsvc_pkcs12_load_certificate_list_from_store");
+               goto error;
+       }
+       ret = certsvc_certificate_list_get_length(cert_list, &cert_counts);
+       if (cert_counts < 1) {
+               ERROR_LOG(UG_NAME_NORMAL, "there is no certificates");
+               goto error;
+       }
+       INFO_LOG(UG_NAME_NORMAL, "cert counts: %d", cert_counts);
+       selected_certificate = g_try_new0(CertSvcCertificate, cert_counts);
+       if (selected_certificate == NULL) {
+               ERROR_LOG(UG_NAME_NORMAL, "failed to allocate memory");
+               goto error;
+       }
+       ret = certsvc_certificate_list_get_one(cert_list, 0, &user_certificate);
+       if (ret != CERTSVC_SUCCESS) {
+               ERROR_LOG(UG_NAME_NORMAL, "failed to certsvc_certificate_list_get_one");
+               goto error;
+       }
+       cert_index = cert_counts - 1;
+
+       selected_certificate[0] = user_certificate;
+
+       ret = certsvc_certificate_dup_x509(user_certificate, &x509);
+
+       user_cert_path = g_strdup_printf("%s%s_%s", EAP_TLS_PATH,
+                               cert_alias, EAP_TLS_USER_CERT_PATH);
+       if ((fp = fopen(user_cert_path, "w")) == NULL) {
+               goto error;
+       }
+       ret = PEM_write_X509(fp, x509);
+       fclose(fp);
+       certsvc_certificate_free_x509(x509);
+       INFO_LOG(UG_NAME_NORMAL, "success to save user_cert file");
+
+       ca_cert_path = g_strdup_printf("%s%s_%s", EAP_TLS_PATH, cert_alias,
+                               EAP_TLS_CA_CERT_PATH);
+       while (cert_index) {
+               ret = certsvc_certificate_list_get_one(cert_list, cert_index, &ca_certificate);
+               if (ret != CERTSVC_SUCCESS) {
+                       ERROR_LOG(UG_NAME_NORMAL, "failed to certsvc_certificate_list_get_one");
+                       goto error;
+               }
+
+               selected_certificate[cert_counts-cert_index] = ca_certificate;
+               cert_index--;
+
+               ret = certsvc_certificate_dup_x509(ca_certificate, &x509);
+               if ((fp = fopen(ca_cert_path, "a")) == NULL) {
+                       goto error;
+               }
+               ret = PEM_write_X509(fp, x509);
+               fclose(fp);
+               certsvc_certificate_free_x509(x509);
+       }
+       INFO_LOG(UG_NAME_NORMAL, "success to save ca_cert file");
+       ret = certsvc_certificate_verify(selected_certificate[0], selected_certificate, cert_counts, NULL, 0, &validity);
+       if (ret != CERTSVC_SUCCESS) {
+               ERROR_LOG(UG_NAME_NORMAL, "failed to verify ca_certificate");
+               goto error;
+       }
+       if (validity == 0) {
+               ERROR_LOG(UG_NAME_NORMAL, "Invalid certificate");
+               goto error;
+       }
+
+       ret = certsvc_pkcs12_dup_evp_pkey_from_store(cert_instance, WIFI_STORE, cert_alias_str, &privatekey);
+
+       privatekey_path = g_strdup_printf("%s%s_%s", EAP_TLS_PATH,
+                               cert_alias, EAP_TLS_PRIVATEKEY_PATH);
+
+       if ((fp = fopen(privatekey_path, "w")) == NULL) {
+               goto error;
+       }
+       ret = PEM_write_PrivateKey(fp, privatekey, NULL, NULL, 0, NULL, NULL);
+       fclose(fp);
+       certsvc_pkcs12_free_evp_pkey(privatekey);
+       INFO_LOG(UG_NAME_NORMAL, "success to save privatekey file");
+
+       g_free(selected_certificate);
+       certsvc_instance_free(cert_instance);
+
+       eap_data->ca_cert_path = ca_cert_path;
+       eap_data->user_cert_path = user_cert_path;
+       eap_data->privatekey_path = privatekey_path;
+
+       return TRUE;
+
+error:
+       g_free(ca_cert_path);
+       g_free(user_cert_path);
+       g_free(privatekey_path);
+
+       if (selected_certificate) {
+               g_free(selected_certificate);
+       }
+
+       certsvc_instance_free(cert_instance);
        return FALSE;
 }
 
index 5dc447c..793ba46 100755 (executable)
@@ -557,6 +557,8 @@ int common_utils_send_message_to_net_popup(const char *title,
        bundle_add(b, "_SYSPOPUP_TYPE_", type);
        bundle_add(b, "_AP_NAME_", ssid);
 
+       ret = aul_launch_app("net.netpopup", b);
+
        bundle_free(b);
 
        return ret;
index 30ebea7..43c3bc9 100644 (file)
@@ -1,5 +1,8 @@
 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-PROJECT(wifi-efl-UG C)
+# tizen 2.4
+#PROJECT(wifi-efl-UG C)
+# tizen 3.0
+PROJECT(ug-wifi-efl-UG C)
 
 # defines
 SET(PREFIX ${CMAKE_INSTALL_PREFIX})
@@ -65,7 +68,10 @@ ADD_CUSTOM_TARGET(setup_wizard.edj
 
 ADD_DEPENDENCIES(${PROJECT_NAME} setup_wizard.edj)
 
-INSTALL(TARGETS ${PROJECT_NAME} DESTINATION /usr/apps/wifi-efl-ug/lib/ug/)
+# tizen 2.4
+#INSTALL(TARGETS ${PROJECT_NAME} DESTINATION /usr/apps/wifi-efl-ug/lib/ug/)
+# tizen 3.0
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION /usr/ug/lib/)
 
 # install image files
 INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/edcs/custom_editfield.edj DESTINATION /usr/apps/wifi-efl-ug/res/edje/wifi-efl-UG)
index 8d2bd4f..2840230 100755 (executable)
@@ -2017,6 +2017,12 @@ static void __hidden_ap_cancel_keydown_cb(void *data, Evas *e, Evas_Object *obj,
 {
        __COMMON_FUNC_ENTER__;
 
+       Evas_Event_Key_Down *event = event_info;
+
+       if (g_strcmp0(event->keyname, "XF86Back") == 0) {
+               hidden_ap_connect_cancel_cb(data, obj, event_info);
+       }
+
        __COMMON_FUNC_EXIT__;
 }
 
index c17c451..cc394a5 100755 (executable)
@@ -207,6 +207,7 @@ static void *on_create(ui_gadget_h ug, enum ug_mode mode,
                app_control_get_extra_data(app_control, "z_order", &zorder);
                INFO_LOG(UG_NAME_NORMAL, "zorder [%s]", zorder);
                if (zorder != NULL && 0 == g_strcmp0(zorder, "highest")) {
+                       efl_util_set_notification_window_level(ugd->win_main, EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT);
                        g_free(zorder);
                        zorder = NULL;
                }
index 2e1590d..9b8a4e3 100755 (executable)
@@ -22,6 +22,7 @@
 #include <vconf-keys.h>
 #include <appcore-efl.h>
 #include <ui-gadget-module.h>
+#include <efl_util.h>
 #include <efl_extension.h>
 
 #include "common.h"
@@ -306,6 +307,9 @@ static Eina_Bool __key_press_cb(void *data, int type, void *event)
        if (!ev)
                return ECORE_CALLBACK_RENEW;
 
+       if (strcmp(ev->keyname, "XF86Home") == 0)
+               wifi_devpkr_destroy();
+
        __COMMON_FUNC_EXIT__;
        return ECORE_CALLBACK_RENEW;
 
@@ -561,6 +565,8 @@ static void app_control(app_control_h request, void *data)
 
        elm_win_alpha_set(devpkr_app_state->win_main, EINA_TRUE); /* invisible window */
 
+       efl_util_set_notification_window_level(win_main, EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT);
+
        elm_win_borderless_set(devpkr_app_state->win_main, EINA_TRUE); /* No borders */
        elm_win_conformant_set(devpkr_app_state->win_main, TRUE); /* Popup autoscroll */