tizen 2.3.1 release
[apps/home/settings.git] / setting-password / include / setting-password.h
old mode 100755 (executable)
new mode 100644 (file)
index 2dc812d..8ce0fb9
@@ -1,18 +1,22 @@
 /*
  * setting
- * Copyright (c) 2012 Samsung Electronics Co., Ltd.
  *
- * Licensed under the Flora License, Version 1.0 (the License);
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * Contact: MyoungJune Park <mj2004.park@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://floralicense.org/license/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
+ * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
+ *
  */
 #ifndef _SETTING_PASSWORD_H_
 #define _SETTING_PASSWORD_H_
 #include <glib.h>
 #include <Elementary.h>
 #include <Ecore_IMF.h>
-
 #include <ITapiSim.h>
 #include <TelSim.h>
-#include <TelErr.h>
 #include <TapiUtility.h>
-
 #include <glib-object.h>
+#include <security-server.h>
+#include <dlog.h>
 
 #include <setting-common-draw-widget.h>
 #include <setting-common-view.h>
 #include <setting-debug.h>
+#include <setting-password-strings.h>
 
-//#include <security-server.h>
+/*#include <ckmc/ckmc-control.h> */
+/*#include <ckmc/ckmc-type.h> */
 
 #define SETTING_PW_UG_NORMAL_PASSWORD_MIN_LENGTH 4
 #define SETTING_PW_UG_NORMAL_PASSWORD_MAX_LENGTH 16
 #define SETTING_PW_UG_PUK_MAX_LENGTH 8
 #define SETTING_PW_MAX_TITLE_LENGTH MAX_DISPLAY_NAME_LEN_ON_UI
 
-#define PASSWORD_EMPTY _("IDS_ST_BODY_PASSWORD_EMPTY")
-#define ATTEMPT_DESC   _("IDS_ST_POP_PD_ATTEMPT_LEFT")                 /* "%d attempt left" */
-#define ATTEMPTS_DESC  _("IDS_ST_POP_PD_ATTEMPTS_LEFT")                /* "%d attempts left" */
-#define PIN_ERR_DESC   _("IDS_ST_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT") /* "Incorrect PIN. %d attempts left" */
-#define PUK1_ERR_DESC  _("IDS_ST_POP_INCORRECT_PUK1_PD_ATTEMPTS_LEFT") /* "Incorrect PUK1. %d attempts left" */
-#define PUK2_ERR_DESC  _("IDS_ST_POP_INCORRECT_PUK2_PD_ATTEMPTS_LEFT") /* "Incorrect PUK2. %d attempts left" */
-#define PW_ERR_DESC    _("IDS_ST_POP_INCORRECT_PASSWORD")      /* "Incorrect password" */
-#define PW_ERR_DELAY_DESC _("IDS_ST_BODY_ENTER_PASSWORD_AGAIN_AFTER_PD_SECONDS") /* "Please enter password again after %d seconds" */
+#define PW_NORMAL_CONTAIN_ALPHANUMERIC 4
 #define PW_ERR_DELAY_TIME      30
 #define ATTEMPT_INFINITE       999999
 
-#define PW_SHORT_GUIDE_CURRENT         "IDS_ST_BODY_CURRENT"
-#define PW_SHORT_GUIDE_NEW                     "IDS_ST_BODY_NEW"
-#define PW_SHORT_GUIDE_CONFIRM         "IDS_ST_BODY_CONFIRM"
-
 typedef enum {
-       SETTING_PW_TYPE_SIM_LOCK_ON, 
-       SETTING_PW_TYPE_SIM_LOCK_OFF,
-       SETTING_PW_TYPE_PIN_LOCK_ON,
-       SETTING_PW_TYPE_PIN_LOCK_OFF,
-       SETTING_PW_TYPE_CHANGE_PIN1,
-       SETTING_PW_TYPE_CHANGE_PIN2,
-       SETTING_PW_TYPE_PIN1_BLOCKED,
-       SETTING_PW_TYPE_PIN2_BLOCKED,
-       SETTING_PW_TYPE_RESET, 
-       SETTING_PW_TYPE_MAX,
+    SETTING_PW_TYPE_PASSWORD = 1,                      /* Final type to verify current password */
+    SETTING_PW_TYPE_SET_PASSWORD,              /* This view type is used when click "password" and "change password" items in screen lock type view */
+    SETTING_PW_TYPE_SIMPLE_PASSWORD,   /* Final type to verify current simple password */
+    SETTING_PW_TYPE_SET_SIMPLE_PASSWORD, /* This view type is used when click "simple password" and "change simple password" items in screen lock type view */
+    SETTING_PW_TYPE_ENTER_LOCK_TYPE,   /* This view type is used when enter screen lock type menu to verify current password lock type */
+    SETTING_PW_TYPE_SIM_LOCK_ON = 6,           /* No use : Do not support SIM LOCK */
+    SETTING_PW_TYPE_SIM_LOCK_OFF,              /* No use : Do not support SIM LOCK */
+    SETTING_PW_TYPE_PIN_LOCK_ON,               /* This view type is used when try to turn PIN LOCK on */
+    SETTING_PW_TYPE_PIN_LOCK_OFF,              /* This view type is used when try to turn PIN LOCK off */
+    SETTING_PW_TYPE_CHANGE_PIN,
+    SETTING_PW_TYPE_CHANGE_PIN2 = 11,
+    SETTING_PW_TYPE_PIN_BLOCKED,       /* No use : PIN1 must be unblocked through pwlock app */
+    SETTING_PW_TYPE_PIN2_BLOCKED,
+    SETTING_PW_TYPE_MAX,
 } setting_pw_type;
 
+typedef enum {
+    SETTING_PW_ERROR_INVALID_LENGTH = -1,                      /* if length of password is wrong, */
+    SETTING_PW_ERROR_INCLUDE_NO_LETTER = -2,           /* if password that user enter has no letter, */
+    SETTING_PW_ERROR_NO_MATCH_WITH_POLICY = -3,                /* if password that user enter does not match with policy, */
+    SETTING_PW_ERROR_NO_MATCH_MIN_COMPLEX = -4,                /* if password that user enter has no letter, */
+    SETTING_PW_ERROR_EXIST_FORBIDDEN_STRING = -5,
+    SETTING_PW_ERROR_NO_MATCH_MAX_REPEAT_COUNT = -6,
+    SETTING_PW_ERROR_NO_MATCH_CUR_PASSWORD = -7,
+    SETTING_PW_ERROR_SIMPLE_STYLE = -8,
+    SETTING_PW_ERROR_REUSED = -9,
+    SETTING_PW_ERROR_INCLUDE_DIGIT = -10,
+    SETTING_PW_ERROR_NO_MATCH_WITH_PATTERN = -11,
+    SETTING_PW_ERROR_NO_DIGIT = -12,
+    SETTING_PW_ERROR_DO_NOT_MATCH = -13,
+    SETTING_PW_ERROR_UNKNOWN = -50,
+} setting_pw_errors;
+
+typedef enum {
+    SETTING_PW_STATUS_OK = 0,
+    SETTING_PW_STATUS_EXPIRED,
+    SETTING_PW_STATUS_MAX_FAILED,
+    SETTING_PW_STATUS_EMPTY,
+    SETTING_PW_STATUS_DEFAULT,
+    SETTING_PW_STATUS_NON_PW_TYPE,
+    SETTING_PW_STATUS_MAX,
+} setting_pw_status;
+
+enum {
+    SETTING_PW_CATEGORY_LOCK = 0x100,
+    SETTING_PW_CATEGORY_SIM = 0x200,
+    SETTING_PW_CATEGORY_MAX,
+};
+
+enum {
+    SETTING_PW_SUB_CATEGORY_SIMPLE = 0x01,
+    SETTING_PW_SUB_CATEGORY_MAX,
+};
+
+
 struct _pw_item {
-       int pw_type_num;
-       char *pw_type_string;
+       int pw_type_num;                /** index number */
+       char *pw_type_string;   /** type stirng  */
+       int category;
+       int step;
 };
 
 /* For Tapi */
 typedef enum {
-       SIM_OPERATION_OK,
-       SIM_ERROR,
-       SIM_REQ_PIN,
-       SIM_OPERATION_OFF,
-       SIM_LOCK_ON_SUCCESS,
-       SIM_LOCK_OFF_SUCCESS,
-       SIM_PIN_LOCK_ON_SUCCESS,
-       SIM_PIN_LOCK_OFF_SUCCESS,
-       SIM_LOCK_ON_FAIL,
-       SIM_LOCK_INCORRECT_PASSWORD,
-       SIM_INCORRECT_PIN1_CODE,
-       SIM_INCORRECT_PIN2_CODE,
-       SIM_INCORRECT_PUK1_CODE,
-       SIM_INCORRECT_PUK2_CODE,
-       SIM_PIN1_CHANGE_SUCCESS,
-       SIM_PIN2_CHANGE_SUCCESS,
-       SIM_PIN1_CHANGE_FAIL,
-       SIM_PIN2_CHANGE_FAIL,
-       SIM_PIN1_BLOCKED,
-       SIM_PIN2_BLOCKED,
-       SIM_PIN1_UNBLOCKED,
-       SIM_PIN2_UNBLOCKED,
-       SIM_PUK1_BLOCKED,
-       SIM_PUK2_BLOCKED,
-       SIM_REQUIRED_PUK_CODE,
-       SIM_OPERATION_UNAVAILABLE,
-       SIM_UNKNOWN_ERROR,
+    SIM_OPERATION_OK,
+    SIM_ERROR,
+    SIM_REQ_PIN,
+    SIM_OPERATION_OFF,
+    SIM_LOCK_ON_SUCCESS,
+    SIM_LOCK_OFF_SUCCESS,
+    SIM_PIN_LOCK_ON_SUCCESS,
+    SIM_PIN_LOCK_OFF_SUCCESS,
+    SIM_LOCK_ON_FAIL,
+    SIM_LOCK_INCORRECT_PASSWORD,
+    SIM_INCORRECT_PIN1_CODE,
+    SIM_INCORRECT_PIN2_CODE,
+    SIM_INCORRECT_PUK1_CODE,
+    SIM_INCORRECT_PUK2_CODE,
+    SIM_PIN1_CHANGE_SUCCESS,
+    SIM_PIN2_CHANGE_SUCCESS,
+    SIM_PIN1_CHANGE_FAIL,
+    SIM_PIN2_CHANGE_FAIL,
+    SIM_PIN1_BLOCKED,
+    SIM_PIN2_BLOCKED,
+    SIM_PIN1_UNBLOCKED,
+    SIM_PIN2_UNBLOCKED,
+    SIM_PUK1_BLOCKED,
+    SIM_PUK2_BLOCKED,
+    SIM_REQUIRED_PUK_CODE,
+    SIM_OPERATION_UNAVAILABLE,
+    SIM_UNKNOWN_ERROR,
 } sim_stat_value;
 
 typedef enum {
-       SETTING_PW_NAVIBAR_WITH_NO_BTN,
-       SETTING_PW_NAVIBAR_WITH_LEFT_BTN,
-       SETTING_PW_NAVIBAR_WITH_RIGHT_BTN,
-       SETTING_PW_NAVIBAR_WITH_BOTH_BTN,
+    SETTING_PW_NAVIBAR_WITH_NO_BTN,
+    SETTING_PW_NAVIBAR_WITH_LEFT_BTN,
+    SETTING_PW_NAVIBAR_WITH_RIGHT_BTN,
+    SETTING_PW_NAVIBAR_WITH_BOTH_BTN,
 } setting_pw_navibar_style_t;
 
 typedef struct _tapi_request_event {
@@ -132,9 +171,21 @@ typedef struct _tapi_request_tapi_info {
        int evt_sz;
 
        void *cb_data;
-       void (*cb) (tapi_receive_info *, void *);
+       void (*cb)(tapi_receive_info *, void *);
 } tapi_request_tapi_info;
 
+struct _word_repeat_info {
+       char name[SETTING_PW_UG_NORMAL_PASSWORD_MAX_LENGTH + 1];
+       unsigned int count;
+       struct _word_repeat_info *next;
+};
+
+typedef struct _pw_quality {
+       int quality;
+       int complex;
+       int length;
+} setting_pw_quality;
+
 /**
  * Setting Password UG context
  * all UG function has void* as an agument. this is casted back to SettingPasswordUG
@@ -153,7 +204,9 @@ typedef struct _SettingPasswordUG {
 
        setting_pw_type view_type;
        char *view_type_string;
+       int step;
 
+       Evas_Object *bottom_btn;        /* Instead of Toolbar btn */
        Setting_GenGroupItem_Data *ed_pw1;
        Setting_GenGroupItem_Data *ed_pw2;
        Setting_GenGroupItem_Data *ed_pw3;
@@ -161,7 +214,8 @@ typedef struct _SettingPasswordUG {
        Evas_Object *setpw_notify;
        Evas_Object *notify;
 
-       Elm_Object_Item *err_desc;
+       /*Elm_Object_Item *err_desc; */
+       Setting_GenGroupItem_Data *err_desc;
        Elm_Genlist_Item_Class itc_err_desc;
 
        Elm_Object_Item *navi_it;
@@ -169,40 +223,73 @@ typedef struct _SettingPasswordUG {
        tapi_request_tapi_info *t_info;
        Evas_Object *navi_bar;
        Elm_Genlist_Item_Class itc_variable_height;
-       Elm_Genlist_Item_Class itc_seperator;
        Elm_Genlist_Item_Class itc_layout;
        Elm_Genlist_Item_Class itc_group_item;
        Evas_Object *scroller;
        int disable_item_type;
 
-       Elm_Genlist_Item_Class itc_title;
+       unsigned int remain_attempt;
+       unsigned int valid_sec;
+
+       setting_pw_quality pw_quality_info;
 
+       char *step1_str;
+
+       /* for simple password */
+       Elm_Genlist_Item_Class itc_title;
+       Elm_Genlist_Item_Class itc_sp_bg_1icon;
+       Elm_Object_Item *sp_item;
+       Evas_Object *sp_entry1;
+       Evas_Object *sp_entry2;
+       Evas_Object *sp_entry3;
+       Evas_Object *sp_entry4;
+       Evas_Object *sp_focused;
+       int sp_focused_num;
+       char sp_chars[5];
+
+       int sp_title_index;
+       char *cur_pwd;
+
+       /*int is_simple_password_on; */
+       int screen_lock_type;
        int is_description;
-       int is_empty;
+       int pw_status; /*int is_empty; */
        int rotated;
 
+       bool puk_verified_flag;
+       bool update_change_pin1_flag;
+       bool incorrect_pin1_flag;
+       bool incorrect_pin2_flag;
        bool destroy;
        Ecore_Timer *remove_timer;
        Ecore_Timer *set_history_timer;
        Ecore_Timer *focus_timer;
        /* end */
 
-} SettingPasswordUG;
+       Evas_Object *simple_layout;
+       Ecore_IMF_Context *imf_context;
+       Ecore_Event_Handler *imf_handler;
+       Evas_Object *sp_entry[5];
+       Ecore_Timer *simple_done_timer;
 
-extern setting_view setting_view_password_main;
+       /* fingerprint's alternative password */
+       int cur_step;
+
+} SettingPasswordUG;
 
-void setting_get_pin_lock_info_cb(TapiHandle *handle, int result, void *data, void *user_data);
-void setting_get_sim_lock_info_cb(TapiHandle *handle, int result, void *data, void *user_data);
 
-void setting_sim_change_pins_cb(TapiHandle *handle, int result, void *data, void *user_data);
-void setting_sim_verify_puks_cb(TapiHandle *handle, int result, void *data, void *user_data);
-void setting_sim_facility_enable_cb(TapiHandle *handle, int result, void *data, void *user_data);
-void setting_sim_facility_disable_cb(TapiHandle *handle, int result, void *data, void *user_data);
+extern setting_view setting_view_password_sim;
+extern setting_view setting_view_password_simple;
+extern setting_view setting_view_password_main;
 
 void setting_password_ug_popup_resp_cb(void *data, Evas_Object *obj, void *event_info);
 void setting_password_ug_create_popup_notitle_nobtn(void *data, char *str, int destroy);
-
 void setting_password_ug_display_desc(void *data, char *desc, int destroy);
 
 
+extern void setting_password_ug_check_attemps_left(void *data);
+
+int setting_password_check_password(const char *challenge,  unsigned int *remain_attempt, unsigned int *valid_sec);
+int setting_password_set_password(const char *cur_pwd, const char *new_pwd, void *data);
+
 #endif