/*
* 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 {
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
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;
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;
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