4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
6 * Contact: MyoungJune Park <mj2004.park@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
21 #ifndef _SETTING_PASSWORD_H_
22 #define _SETTING_PASSWORD_H_
25 #include <Elementary.h>
26 #include <Ecore_IMF.h>
29 #include <TapiUtility.h>
30 #include <glib-object.h>
31 #include <security-server.h>
34 #include <setting-common-draw-widget.h>
35 #include <setting-common-view.h>
36 #include <setting-debug.h>
37 #include <setting-password-strings.h>
39 //#include <ckmc/ckmc-control.h>
40 //#include <ckmc/ckmc-type.h>
42 #define SETTING_PW_UG_NORMAL_PASSWORD_MIN_LENGTH 4
43 #define SETTING_PW_UG_NORMAL_PASSWORD_MAX_LENGTH 16
44 #define SETTING_PW_UG_PRIVACY_PASSWORD_MIN_LENGTH 4
45 #define SETTING_PW_UG_PRIVACY_PASSWORD_MAX_LENGTH 16
46 #define SETTING_PW_UG_SIM_MIN_LENGTH 4
47 #define SETTING_PW_UG_SIM_MAX_LENGTH 8
48 #define SETTING_PW_UG_PIN_MIN_LENGTH 4
49 #define SETTING_PW_UG_PIN_MAX_LENGTH 8
50 #define SETTING_PW_UG_PUK_MIN_LENGTH 4
51 #define SETTING_PW_UG_PUK_MAX_LENGTH 8
52 #define SETTING_PW_MAX_TITLE_LENGTH MAX_DISPLAY_NAME_LEN_ON_UI
54 #define PW_NORMAL_CONTAIN_ALPHANUMERIC 4
55 #define PW_ERR_DELAY_TIME 30
56 #define ATTEMPT_INFINITE 999999
59 SETTING_PW_TYPE_PASSWORD = 1, /* Final type to verify current password */
60 SETTING_PW_TYPE_SET_PASSWORD, /* This view type is used when click "password" and "change password" items in screen lock type view */
61 SETTING_PW_TYPE_SIMPLE_PASSWORD, /* Final type to verify current simple password */
62 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 */
63 SETTING_PW_TYPE_ENTER_LOCK_TYPE, /* This view type is used when enter screen lock type menu to verify current password lock type */
64 SETTING_PW_TYPE_SIM_LOCK_ON = 6, /* No use : Do not support SIM LOCK */
65 SETTING_PW_TYPE_SIM_LOCK_OFF, /* No use : Do not support SIM LOCK */
66 SETTING_PW_TYPE_PIN_LOCK_ON, /* This view type is used when try to turn PIN LOCK on */
67 SETTING_PW_TYPE_PIN_LOCK_OFF, /* This view type is used when try to turn PIN LOCK off */
68 SETTING_PW_TYPE_CHANGE_PIN,
69 SETTING_PW_TYPE_CHANGE_PIN2 = 11,
70 SETTING_PW_TYPE_PIN_BLOCKED, /* No use : PIN1 must be unblocked through pwlock app */
71 SETTING_PW_TYPE_PIN2_BLOCKED,
76 SETTING_PW_ERROR_INVALID_LENGTH = -1, /* if length of password is wrong, */
77 SETTING_PW_ERROR_INCLUDE_NO_LETTER = -2, /* if password that user enter has no letter, */
78 SETTING_PW_ERROR_NO_MATCH_WITH_POLICY = -3, /* if password that user enter does not match with policy, */
79 SETTING_PW_ERROR_NO_MATCH_MIN_COMPLEX = -4, /* if password that user enter has no letter, */
80 SETTING_PW_ERROR_EXIST_FORBIDDEN_STRING = -5,
81 SETTING_PW_ERROR_NO_MATCH_MAX_REPEAT_COUNT = -6,
82 SETTING_PW_ERROR_NO_MATCH_CUR_PASSWORD = -7,
83 SETTING_PW_ERROR_SIMPLE_STYLE = -8,
84 SETTING_PW_ERROR_REUSED = -9,
85 SETTING_PW_ERROR_INCLUDE_DIGIT = -10,
86 SETTING_PW_ERROR_NO_MATCH_WITH_PATTERN = -11,
87 SETTING_PW_ERROR_NO_DIGIT = -12,
88 SETTING_PW_ERROR_DO_NOT_MATCH = -13,
89 SETTING_PW_ERROR_UNKNOWN = -50,
93 SETTING_PW_STATUS_OK = 0,
94 SETTING_PW_STATUS_EXPIRED,
95 SETTING_PW_STATUS_MAX_FAILED,
96 SETTING_PW_STATUS_EMPTY,
97 SETTING_PW_STATUS_DEFAULT,
98 SETTING_PW_STATUS_NON_PW_TYPE,
99 SETTING_PW_STATUS_MAX,
103 SETTING_PW_CATEGORY_LOCK = 0x100,
104 SETTING_PW_CATEGORY_SIM = 0x200,
105 SETTING_PW_CATEGORY_MAX,
109 SETTING_PW_SUB_CATEGORY_SIMPLE = 0x01,
110 SETTING_PW_SUB_CATEGORY_MAX,
116 char *pw_type_string;
128 SIM_LOCK_OFF_SUCCESS,
129 SIM_PIN_LOCK_ON_SUCCESS,
130 SIM_PIN_LOCK_OFF_SUCCESS,
132 SIM_LOCK_INCORRECT_PASSWORD,
133 SIM_INCORRECT_PIN1_CODE,
134 SIM_INCORRECT_PIN2_CODE,
135 SIM_INCORRECT_PUK1_CODE,
136 SIM_INCORRECT_PUK2_CODE,
137 SIM_PIN1_CHANGE_SUCCESS,
138 SIM_PIN2_CHANGE_SUCCESS,
139 SIM_PIN1_CHANGE_FAIL,
140 SIM_PIN2_CHANGE_FAIL,
147 SIM_REQUIRED_PUK_CODE,
148 SIM_OPERATION_UNAVAILABLE,
153 SETTING_PW_NAVIBAR_WITH_NO_BTN,
154 SETTING_PW_NAVIBAR_WITH_LEFT_BTN,
155 SETTING_PW_NAVIBAR_WITH_RIGHT_BTN,
156 SETTING_PW_NAVIBAR_WITH_BOTH_BTN,
157 } setting_pw_navibar_style_t;
159 typedef struct _tapi_request_event {
162 } tapi_request_event;
164 typedef struct _tapi_receive_info {
169 typedef struct _tapi_request_tapi_info {
170 tapi_request_event *evt;
174 void (*cb) (tapi_receive_info *, void *);
175 } tapi_request_tapi_info;
177 struct _word_repeat_info {
178 char name[SETTING_PW_UG_NORMAL_PASSWORD_MAX_LENGTH+1];
180 struct _word_repeat_info *next;
183 typedef struct _pw_quality {
187 } setting_pw_quality;
190 * Setting Password UG context
191 * all UG function has void* as an agument. this is casted back to SettingPasswordUG
192 * and the functions access app context.
194 typedef struct _SettingPasswordUG {
197 TelSimSecResult_t *verify_puks_result;
199 /* add more variables here (move your appdata to here) */
201 Evas_Object *win_main_layout;
202 Evas_Object *win_get;
203 Evas_Object *ly_main;
205 setting_pw_type view_type;
206 char *view_type_string;
209 Evas_Object *bottom_btn; /* Instead of Toolbar btn */
210 Setting_GenGroupItem_Data *ed_pw1;
211 Setting_GenGroupItem_Data *ed_pw2;
212 Setting_GenGroupItem_Data *ed_pw3;
213 Setting_GenGroupItem_Data *focus_data;
214 Evas_Object *setpw_notify;
217 //Elm_Object_Item *err_desc;
218 Setting_GenGroupItem_Data *err_desc;
219 Elm_Genlist_Item_Class itc_err_desc;
221 Elm_Object_Item *navi_it;
222 Evas_Object *controllbar;
223 tapi_request_tapi_info *t_info;
224 Evas_Object *navi_bar;
225 Elm_Genlist_Item_Class itc_variable_height;
226 Elm_Genlist_Item_Class itc_layout;
227 Elm_Genlist_Item_Class itc_group_item;
228 Evas_Object *scroller;
229 int disable_item_type;
231 unsigned int remain_attempt;
232 unsigned int valid_sec;
234 setting_pw_quality pw_quality_info;
238 /* for simple password */
239 Elm_Genlist_Item_Class itc_title;
240 Elm_Genlist_Item_Class itc_sp_bg_1icon;
241 Elm_Object_Item *sp_item;
242 Evas_Object *sp_entry1;
243 Evas_Object *sp_entry2;
244 Evas_Object *sp_entry3;
245 Evas_Object *sp_entry4;
246 Evas_Object *sp_focused;
253 //int is_simple_password_on;
254 int screen_lock_type;
256 int pw_status; //int is_empty;
259 bool puk_verified_flag;
260 bool update_change_pin1_flag;
261 bool incorrect_pin1_flag;
262 bool incorrect_pin2_flag;
264 Ecore_Timer *remove_timer;
265 Ecore_Timer *set_history_timer;
266 Ecore_Timer *focus_timer;
269 Evas_Object *simple_layout;
270 Ecore_IMF_Context *imf_context;
271 Ecore_Event_Handler *imf_handler;
272 Evas_Object *sp_entry[5];
273 Ecore_Timer *simple_done_timer;
275 /* fingerprint's alternative password */
281 extern setting_view setting_view_password_sim;
282 extern setting_view setting_view_password_simple;
283 extern setting_view setting_view_password_main;
285 void setting_password_ug_popup_resp_cb(void *data, Evas_Object *obj, void *event_info);
286 void setting_password_ug_create_popup_notitle_nobtn(void *data, char *str, int destroy);
288 void setting_password_ug_display_desc(void *data, char *desc, int destroy);
291 extern void setting_password_ug_check_attemps_left(void *data);
293 int setting_password_check_password(const char *challenge, unsigned int *remain_attempt, unsigned int *valid_sec);
294 int setting_password_set_password(const char *cur_pwd, const char *new_pwd, void *data);