rjw | 6c1fd8f | 2022-11-30 14:33:01 +0800 | [diff] [blame] | 1 | /***************************************************************************** |
| 2 | * |
| 3 | * Filename: |
| 4 | * --------- |
| 5 | * custom_sml.h |
| 6 | * |
| 7 | * Project: |
| 8 | * -------- |
| 9 | * UMOLYA |
| 10 | * |
| 11 | * Description: |
| 12 | * ------------ |
| 13 | * This is the file for SIM ME Lock customization |
| 14 | * |
| 15 | * Author: |
| 16 | * ------- |
| 17 | * ------- |
| 18 | ****************************************************************************/ |
| 19 | #ifndef CUSTOM_SML_H |
| 20 | #define CUSTOM_SML_H |
| 21 | |
| 22 | #include "kal_general_types.h" |
| 23 | #include "ps_public_enum.h" |
| 24 | #include "sim_ps_enum.h" |
| 25 | #include "mcd_l3_inc_struct.h" |
| 26 | #include "l4_nvram_def.h" |
| 27 | #include "cust_chl_interface.h" |
| 28 | |
| 29 | /**************************************************************************** |
| 30 | * |
| 31 | * SIM ME Lock |
| 32 | * |
| 33 | ****************************************************************************/ |
| 34 | #define SML_IMEI_PRINT_LEN 5 // print partial UE IMEI for privacy |
| 35 | |
| 36 | extern void sml_mini_trace(const kal_char *title, kal_uint8 *data, kal_uint8 len); |
| 37 | extern sml_key_input_type_enum custom_sml_query_key_input_type(sml_key_algo_enum algo, sml_op_enum op); |
| 38 | #ifdef __SML_PUK__ |
| 39 | extern sml_key_input_type_enum custom_sml_query_puk_key_input_type(sml_key_algo_enum algo, sml_puk_key_op_enum op); |
| 40 | #endif |
| 41 | |
| 42 | |
| 43 | /**************************************************************************** |
| 44 | * |
| 45 | * Verizon SIM Lock |
| 46 | * |
| 47 | ****************************************************************************/ |
| 48 | #define SML_VZW_RSU_TIME_STAMP_LEN 8 |
| 49 | #define SML_VZW_RSU_NW_CODE_LEN 6 /* 123-456 */ |
| 50 | #define SML_VZW_RSU_NW_LIST_LEN (SML_VZW_RSU_NW_CODE_LEN * 5) /* 5 sets */ |
| 51 | #define SML_VZW_RSU_NS_CODE_LEN 8 /* 123-456-78 */ |
| 52 | #define SML_VZW_RSU_NS_LIST_LEN (SML_VZW_RSU_NS_CODE_LEN * 5) |
| 53 | #define SML_VZW_RSU_SP_CODE_LEN (7+NUM_GID1) /* 123-456-8-00000000000000000000 */ |
| 54 | #define SML_VZW_RSU_SP_LIST_LEN (SML_VZW_RSU_SP_CODE_LEN * 4) |
| 55 | #define SML_VZW_RSU_EHPLMN_CODE_LEN (13+NUM_GID1) /* 123-456-8-00000000000000000000-123-456 */ |
| 56 | #define SML_VZW_RSU_EHPLMN_LIST_LEN (SML_VZW_RSU_EHPLMN_CODE_LEN * 5) |
| 57 | #define SML_VZW_RSU_SESSION_ID_LEN 8 |
| 58 | #define SML_VZW_RSU_SIZE_OF_MCC_MNC 6 |
| 59 | #define SML_VZW_RSU_SIZE_OF_GID 9 |
| 60 | #define SML_VZW_RSU_SIZE_OF_EHPLMN 6 |
| 61 | #define SML_VZW_RSU_MAX_SUPPORT_MAJOR_VER 1 |
| 62 | #define SML_VZW_RSU_MAX_SUPPORT_MINOR_VER 0 |
| 63 | |
| 64 | |
| 65 | typedef struct { |
| 66 | kal_uint8 major_version; |
| 67 | kal_uint8 minor_version; |
| 68 | kal_uint8 protection_algo; |
| 69 | kal_uint8 nw_lock_op; |
| 70 | kal_uint8 timestamp[SML_VZW_RSU_TIME_STAMP_LEN]; |
| 71 | kal_uint8 nw_num; |
| 72 | kal_uint8 nw_list[SML_VZW_RSU_NW_LIST_LEN]; |
| 73 | kal_uint8 ns_num; |
| 74 | kal_uint8 ns_list[SML_VZW_RSU_NS_LIST_LEN]; |
| 75 | kal_uint8 sp_num; |
| 76 | kal_uint8 sp_list[SML_VZW_RSU_SP_LIST_LEN]; |
| 77 | kal_uint8 ehplmn_num; |
| 78 | kal_uint8 ehplmn_list[SML_VZW_RSU_EHPLMN_LIST_LEN]; |
| 79 | kal_uint8 session_id[SML_VZW_RSU_SESSION_ID_LEN]; |
| 80 | } sml_vzw_sim_lock_context_struct; |
| 81 | typedef sml_vzw_sim_lock_context_struct nvram_sml_vzw_sim_lock_context_struct; |
| 82 | |
| 83 | typedef struct { |
| 84 | kal_uint8 device_key[32]; //a unique 32-byte Device Key, which is used to calculate HMAC of a Network Lock Request message |
| 85 | } sml_vzw_sim_lock_device_key_struct; |
| 86 | typedef sml_vzw_sim_lock_device_key_struct nvram_sml_vzw_sim_lock_device_key_struct; |
| 87 | |
| 88 | typedef struct { |
| 89 | kal_uint16 delay_timer; //ranging from 0-10 minutes, default is 2 minutes |
| 90 | } sml_vzw_rsu_delay_timer_struct; |
| 91 | typedef sml_vzw_rsu_delay_timer_struct nvram_sml_vzw_rsu_delay_timer_struct; |
| 92 | |
| 93 | typedef enum { |
| 94 | SML_VZW_RSU_MSG_TYPE_INVALID = 0, |
| 95 | SML_VZW_RSU_MSG_TYPE_REQUEST = 1, |
| 96 | SML_VZW_RSU_MSG_TYPE_STATUS = 2, |
| 97 | } sml_vzw_rsu_msg_type_enum; |
| 98 | |
| 99 | typedef enum { |
| 100 | SML_VZW_LOCK_STATE_LOCK = 0, |
| 101 | SML_VZW_LOCK_STATE_UNLOCK = 1, |
| 102 | SML_VZW_LOCK_STATE_TEMP_UNLOCK = 2, |
| 103 | } sml_vzw_lock_state_enum; |
| 104 | |
| 105 | typedef enum { |
| 106 | SML_VZW_CAT_NONE, |
| 107 | SML_VZW_CAT_N, |
| 108 | SML_VZW_CAT_NS, |
| 109 | SML_VZW_CAT_SP, |
| 110 | SML_VZW_CAT_EHPLMN, |
| 111 | SML_VZW_CAT_SIZE |
| 112 | } sml_vzw_cat_enum; |
| 113 | |
| 114 | typedef enum { |
| 115 | SML_VZW_RSU_STATUS_SUCCESS = 0, |
| 116 | SML_VZW_RSU_STATUS_GENERIC_ERROR = 1, |
| 117 | SML_VZW_RSU_STATUS_BLOB_TOO_SHORT = 2, |
| 118 | SML_VZW_RSU_STATUS_SIGNATURE_FAILED = 3, |
| 119 | SML_VZW_RSU_STATUS_RESERVE = 4, |
| 120 | SML_VZW_RSU_STATUS_IMEI_FAILED = 5, |
| 121 | SML_VZW_RSU_STATUS_BLOB_FRESHNESS_CHECK_FAILED = 6, |
| 122 | } sml_vzw_rsu_status_enum; |
| 123 | |
| 124 | typedef struct { |
| 125 | void * pObj; |
| 126 | void (* give)(void * /* pLidToObj */, kal_uint8); |
| 127 | void (* take)(void * /* pObjToLid */, kal_uint8); |
| 128 | void (* destory)(kal_uint8); |
| 129 | void * (* getItem)(sml_vzw_cat_enum,sml_ctx_enum,kal_uint16 * /* length */, kal_uint8); |
| 130 | void (* putItem)(sml_vzw_cat_enum,sml_ctx_enum,void * /* pItem */, kal_uint16 * /* plen */, kal_uint8); |
| 131 | } nvram_ef_sml_vzw_sim_lock_obj_struct; |
| 132 | |
| 133 | extern void sml_clean_vzw_cntxt(void); |
| 134 | extern kal_bool custom_sml_vzw_is_test_purpose(void); |
| 135 | |
| 136 | extern kal_uint16 sml_vzw_Load( void *pLid, kal_uint8 source ); |
| 137 | extern kal_uint16 sml_vzw_Save( void *pLid, kal_uint8 source ); |
| 138 | extern kal_bool sml_vzw_Check( sml_vzw_cat_enum cat, |
| 139 | kal_uint8 *imsi, |
| 140 | kal_uint8 *gid1, |
| 141 | kal_uint16 ehplmn_num, |
| 142 | kal_uint8 *ehplmn, |
| 143 | kal_uint8 sim_mnc_len, |
| 144 | kal_uint8 source); |
| 145 | extern kal_uint8 sml_vzw_get_major_version(kal_uint8 source); |
| 146 | extern kal_uint8 sml_vzw_get_minor_version(kal_uint8 source); |
| 147 | extern kal_uint8 sml_vzw_get_max_support_major_version(); |
| 148 | extern kal_uint8 sml_vzw_get_max_support_minor_version(); |
| 149 | extern kal_bool sml_vzw_update_int_data(kal_uint8 source, sml_vzw_cat_enum cat, sml_ctx_enum type, kal_uint8 data); |
| 150 | extern kal_bool sml_vzw_get_int_data(kal_uint8 source, sml_vzw_cat_enum cat, sml_ctx_enum type, kal_uint8* pData); |
| 151 | extern kal_bool sml_vzw_update_array_data(kal_uint8 source, sml_vzw_cat_enum cat, sml_ctx_enum type, kal_uint8* data, kal_uint16 data_len); |
| 152 | extern kal_bool sml_vzw_get_array_data(kal_uint8 source, sml_vzw_cat_enum cat, sml_ctx_enum type, kal_uint8* data, kal_uint16* data_len); |
| 153 | extern kal_bool sml_vzw_reset_rsu_data(kal_uint8 source); |
| 154 | |
| 155 | extern void sml_vzw_give( void * pLidToObj, kal_uint8 source ); |
| 156 | extern void sml_vzw_take( void * pObjToLid, kal_uint8 source ); |
| 157 | extern void sml_vzw_destory( kal_uint8 source ); |
| 158 | extern void *sml_vzw_getItem(sml_vzw_cat_enum cat, |
| 159 | sml_ctx_enum item, |
| 160 | kal_uint16 * plength, |
| 161 | kal_uint8 source); |
| 162 | extern void sml_vzw_putItem( sml_vzw_cat_enum cat, |
| 163 | sml_ctx_enum item, |
| 164 | void * pItem, |
| 165 | kal_uint16 * plength, |
| 166 | kal_uint8 source); |
| 167 | |
| 168 | extern nvram_ef_sml_vzw_sim_lock_obj_struct *pSMLVZWg; |
| 169 | extern void custom_vzw_rsu_get_pub_key_handle(kal_uint8 index, |
| 170 | TYPE_CUST_CHL_KEY *key); |
| 171 | |
| 172 | /**************************************************************************** |
| 173 | * |
| 174 | * TMO SIM Lock with Movial Solution |
| 175 | * |
| 176 | ****************************************************************************/ |
| 177 | #define SML_TMO_MOVIAL_BLOB_IMEI_SIZE 15 |
| 178 | #define SML_TMO_MOVIAL_BLOB_TIME_STAMP_SIZE 8 |
| 179 | #define SML_TMO_MOVIAL_SIZE_OF_START_TIME 8 |
| 180 | #define SML_TMO_MOVIAL_SIZE_OF_UNLOCK_DURATION 4 |
| 181 | #define SML_TMO_MOVIAL_BLOB_LENGTH_SIZE 2 |
| 182 | #define SML_TMO_MOVIAL_BLOB_CONFIG_SUPPORT_CAT_SIZE 3 |
| 183 | |
| 184 | /* Length of each CAT Codes */ |
| 185 | #define SML_TMO_MOVIAL_BLOB_SIZE_OF_CAT_N 6 /* MCC/MNC */ |
| 186 | #define SML_TMO_MOVIAL_BLOB_SIZE_OF_CAT_NS 8 /* MCC/MNC + HLR */ |
| 187 | #define SML_TMO_MOVIAL_BLOB_SIZE_OF_CAT_SP 7 /* MCC/MNC + GID1 */ |
| 188 | |
| 189 | /* Define the maximum suppot categories */ |
| 190 | #define SML_TMO_MOVIAL_BLOB_MAX_SUPPORT_CAT_N 15 |
| 191 | #define SML_TMO_MOVIAL_BLOB_MAX_SUPPORT_CAT_NS 10 |
| 192 | #define SML_TMO_MOVIAL_BLOB_MAX_SUPPORT_CAT_SP 10 |
| 193 | |
| 194 | /* Define the total size of each category */ |
| 195 | #define SML_TMO_MOVIAL_BLOB_CAT_N_SIZE (SML_TMO_MOVIAL_BLOB_SIZE_OF_CAT_N * SML_TMO_MOVIAL_BLOB_MAX_SUPPORT_CAT_N) |
| 196 | #define SML_TMO_MOVIAL_BLOB_CAT_NS_SIZE (SML_TMO_MOVIAL_BLOB_SIZE_OF_CAT_NS * SML_TMO_MOVIAL_BLOB_MAX_SUPPORT_CAT_NS) |
| 197 | #define SML_TMO_MOVIAL_BLOB_CAT_SP_SIZE (SML_TMO_MOVIAL_BLOB_SIZE_OF_CAT_SP * SML_TMO_MOVIAL_BLOB_MAX_SUPPORT_CAT_SP) |
| 198 | |
| 199 | #define SML_TMO_MOVIAL_BLOB_ITERATION_COUNT_SIZE 4 |
| 200 | #define SML_TMO_MOVIAL_BLOB_SALT_SIZE 16 |
| 201 | #define SML_TMO_MOVIAL_BLOB_HCK_SIZE 32 |
| 202 | #define SML_TMO_MOVIAL_BLOB_SIZE_OF_SIGNATURE 256 |
| 203 | #define SML_TMO_MOVIAL_SIZE_OF_UNLOCK_TIME 4 |
| 204 | |
| 205 | |
| 206 | #define SML_TMO_MOVIAL_TIMEOUT_PERIODIC_CHECK (KAL_TICKS_1_SEC*10)//(12*60*KAL_TICKS_1_MIN) /* 12 hours */ |
| 207 | #define SML_TMO_MOVIAL_TIMER_INDEX_PERIODIC_CHECK 0x05 |
| 208 | |
| 209 | #define SML_TMO_MOVIAL_SLB_ERR_SUCCESS 0x00 |
| 210 | #define SML_TMO_MOVIAL_SLB_ERR_GENERIC 0x01 |
| 211 | #define SML_TMO_MOVIAL_SLB_ERR_BLOB_TOO_SHORT 0x02 |
| 212 | #define SML_TMO_MOVIAL_SLB_ERR_VERIFY_FAIL 0x03 |
| 213 | #define SML_TMO_MOVIAL_SLB_ERR_GET_TIME_OP_FAIL 0x04 |
| 214 | #define SML_TMO_MOVIAL_SLB_ERR_IMEI_MISMATCH 0x05 |
| 215 | #define SML_TMO_MOVIAL_SLB_ERR_BLOB_FRESH_CHECK_FAIL 0x06 |
| 216 | |
| 217 | #define SML_TMO_MOVIAL_NVRAM_ACCESS_ID_UPDATE_CAT_LOCK 0xDA |
| 218 | #define SML_TMO_MOVIAL_NVRAM_ACCESS_ID_UPDATE_SLB 0xDB |
| 219 | #define SML_TMO_MOVIAL_NVRAM_ACCESS_ID_UNLOCK_EXPIRE 0xDC |
| 220 | #define SML_TMO_MOVIAL_NVRAM_ACCESS_ID_UPDATE_CORR 0xDD |
| 221 | #define SML_TMO_MOVIAL_NVRAM_ACCESS_ID_RESTORE_LOCK 0xDE |
| 222 | |
| 223 | typedef enum { |
| 224 | SML_TMO_MOVIAL_CAT_LOCKED, |
| 225 | SML_TMO_MOVIAL_CAT_UNLOCKED, |
| 226 | } sml_tmo_movial_cat_lock_enum; |
| 227 | |
| 228 | typedef struct { |
| 229 | kal_uint8 change_flag; |
| 230 | kal_uint8 num; /* num of valid sets */ |
| 231 | sml_tmo_movial_cat_lock_enum cat_lock; |
| 232 | } sml_tmo_movial_blob_meta_struct; |
| 233 | |
| 234 | typedef struct { |
| 235 | kal_uint8 iteration_count[SML_TMO_MOVIAL_BLOB_ITERATION_COUNT_SIZE]; /* 4 */ |
| 236 | kal_uint8 salt[SML_TMO_MOVIAL_BLOB_SALT_SIZE]; /* 16 */ |
| 237 | kal_uint8 hck[SML_TMO_MOVIAL_BLOB_HCK_SIZE]; /* 32 */ |
| 238 | } sml_tmo_movial_blob_key_struct; |
| 239 | |
| 240 | typedef struct { |
| 241 | kal_uint8 major_version; |
| 242 | kal_uint8 minor_version; |
| 243 | kal_uint8 protection_algorithm; |
| 244 | kal_uint8 lock_operation; |
| 245 | kal_uint8 imei[SML_TMO_MOVIAL_BLOB_IMEI_SIZE]; /* 15 */ |
| 246 | kal_uint8 time_stamp[SML_TMO_MOVIAL_BLOB_TIME_STAMP_SIZE]; /* 8 */ |
| 247 | kal_uint8 start_time[SML_TMO_MOVIAL_SIZE_OF_START_TIME]; /* 8 */ |
| 248 | kal_uint8 unlock_duration[SML_TMO_MOVIAL_SIZE_OF_UNLOCK_DURATION]; /* 4 */ |
| 249 | kal_uint8 length[SML_TMO_MOVIAL_BLOB_LENGTH_SIZE]; /* 2 */ |
| 250 | sml_tmo_movial_blob_meta_struct cat[SML_TMO_MOVIAL_BLOB_CONFIG_SUPPORT_CAT_SIZE]; /* (3 * ?) */ |
| 251 | sml_tmo_movial_blob_key_struct key[SML_TMO_MOVIAL_BLOB_CONFIG_SUPPORT_CAT_SIZE]; /* (3 * 52) */ |
| 252 | kal_uint8 code_cat_n[SML_TMO_MOVIAL_BLOB_CAT_N_SIZE]; /* (30 * 6)*/ |
| 253 | kal_uint8 code_cat_ns[SML_TMO_MOVIAL_BLOB_CAT_NS_SIZE]; /* (10 * 8)*/ |
| 254 | kal_uint8 code_cat_sp[SML_TMO_MOVIAL_BLOB_CAT_SP_SIZE]; /* (10 * 7)*/ |
| 255 | kal_uint8 signature[SML_TMO_MOVIAL_BLOB_SIZE_OF_SIGNATURE]; /* 256 */ |
| 256 | kal_uint8 unlock_time[SML_TMO_MOVIAL_SIZE_OF_UNLOCK_TIME]; /* 4 */ |
| 257 | } sml_tmo_movial_sim_lock_context_struct; |
| 258 | |
| 259 | typedef sml_tmo_movial_sim_lock_context_struct nvram_sml_tmo_movial_sim_lock_context_struct; |
| 260 | |
| 261 | #define SML_TMO_MOVIAL_MAX_BLOB_SIZE NVRAM_EF_L4_SML_TMO_MOVIAL_SIM_LOCK_SIZE |
| 262 | |
| 263 | typedef struct { |
| 264 | kal_uint64 correlation_id; |
| 265 | } sml_tmo_movial_corr_id_struct; |
| 266 | |
| 267 | typedef sml_tmo_movial_corr_id_struct nvram_sml_tmo_movial_corr_id_struct; |
| 268 | |
| 269 | typedef enum { |
| 270 | SML_TMO_MOVIAL_CAT_BEGIN, |
| 271 | SML_TMO_MOVIAL_CAT_N = SML_TMO_MOVIAL_CAT_BEGIN, |
| 272 | SML_TMO_MOVIAL_CAT_NS, |
| 273 | SML_TMO_MOVIAL_CAT_SP, |
| 274 | SML_TMO_MOVIAL_CAT_SIZE, |
| 275 | SML_TMO_MOVIAL_CAT_NULL |
| 276 | } sml_tmo_movial_cat_enum; |
| 277 | |
| 278 | typedef struct { |
| 279 | void * pObj; |
| 280 | void (* give)(void * /* pLidToObj */, kal_uint8); |
| 281 | void (* take)(void * /* pObjToLid */, kal_uint8); |
| 282 | void (* destory)(kal_uint8); |
| 283 | void * (* getItem)(sml_tmo_movial_cat_enum,sml_ctx_enum,kal_uint16 * /* length */, kal_uint8); |
| 284 | void (* putItem)(sml_tmo_movial_cat_enum,sml_ctx_enum,void * /* pItem */, kal_uint16 * /* plen */, kal_uint8); |
| 285 | } nvram_ef_sml_tmo_movial_sim_lock_obj_struct; |
| 286 | |
| 287 | extern void sml_clean_tmo_movial_cntxt(void); |
| 288 | extern void sml_tmo_movial_give( void *pLidToObj, kal_uint8 source ); |
| 289 | extern void sml_tmo_movial_take( void *pObjToLid, kal_uint8 source ); |
| 290 | extern void sml_tmo_movial_destory(kal_uint8 source); |
| 291 | extern void *sml_tmo_movial_getItem( sml_tmo_movial_cat_enum category, |
| 292 | sml_ctx_enum item, |
| 293 | kal_uint16 *plength, |
| 294 | kal_uint8 source); |
| 295 | extern void sml_tmo_movial_putItem( sml_tmo_movial_cat_enum cat, |
| 296 | sml_ctx_enum item, |
| 297 | void *pItem, |
| 298 | kal_uint16 *plength, |
| 299 | kal_uint8 source); |
| 300 | |
| 301 | extern kal_bool sml_tmo_movial_ValidateIMEI(kal_uint8 *imei, kal_bool is_bypass_default, kal_uint8 source); |
| 302 | extern kal_bool sml_tmo_movial_ValidateTimeStamp(kal_uint8 *new_time_stamp, kal_uint8 source); |
| 303 | extern kal_bool sml_tmo_movial_ValidateConfigData(sml_tmo_movial_sim_lock_context_struct *pBlob); |
| 304 | extern kal_uint8 *sml_tmo_movial_ConstructBlob(kal_uint8 *pObj, kal_uint16 slb_len, kal_uint8 *error_cause, kal_uint8 source); |
| 305 | extern kal_uint8 *sml_tmo_movial_ConstructSmlBlob(sml_tmo_movial_sim_lock_context_struct *pObj, kal_uint8 source); |
| 306 | extern kal_uint8 *sml_tmo_movial_ReconstructBlob(sml_tmo_movial_sim_lock_context_struct *pObj, kal_uint32 *pLen, kal_uint8 *error_cause); |
| 307 | extern kal_bool sml_tmo_movial_checkValidity(void *pObj, kal_uint8 source, kal_uint8 *error_cause); |
| 308 | extern void sml_tmo_movial_Load(void *pLid, kal_uint8 source); |
| 309 | extern void sml_tmo_movial_FirstLoad(void *pLid, kal_uint8 source); |
| 310 | extern kal_uint16 sml_tmo_movial_Save(void *pLid, kal_uint8 source); |
| 311 | extern kal_bool sml_tmo_movial_CheckTempUnlock(kal_uint8 source); |
| 312 | extern kal_uint8 sml_tmo_movial_Catcode(sml_tmo_movial_cat_enum cat, |
| 313 | kal_uint8 *imsi, |
| 314 | kal_uint8 *gid1, |
| 315 | kal_uint8 mnc_len, |
| 316 | kal_uint8 *code); |
| 317 | extern kal_uint8 sml_tmo_movial_GetCode( sml_tmo_movial_cat_enum cat, |
| 318 | kal_uint8 * imsi, |
| 319 | kal_uint8 * gid1, |
| 320 | kal_uint8 sim_mnc_len, |
| 321 | kal_uint8 * pdata, |
| 322 | kal_uint8 * code); |
| 323 | extern kal_bool sml_tmo_movial_Check(sml_tmo_movial_cat_enum cat, |
| 324 | kal_uint8 *imsi, |
| 325 | kal_uint8 *gid1, |
| 326 | kal_uint8 sim_mnc_len, |
| 327 | kal_uint8 source); |
| 328 | extern kal_bool sml_tmo_movial_UpdateNwTimeAndCheckTempLock(kal_uint8 source, |
| 329 | kal_uint8 nw_time_zone, |
| 330 | nw_time_zone_time_struct *nw_time); |
| 331 | extern kal_bool sml_tmo_movial_Verify(sml_tmo_movial_cat_enum cat, |
| 332 | kal_uint8 * key, |
| 333 | kal_uint8 len, |
| 334 | kal_uint8 source); |
| 335 | |
| 336 | extern kal_uint8 sml_tmo_movial_update_slb(void *blob, kal_uint8 source); |
| 337 | extern kal_uint8 *sml_tmo_movial_ConstructFirstBlob(kal_uint8 *pObj, kal_uint16 slb_len, kal_uint8 source); |
| 338 | |
| 339 | extern nvram_ef_sml_tmo_movial_sim_lock_obj_struct* pSMLTMMg; |
| 340 | extern kal_uint32 sml_tmo_movial_seconds_to_expire; |
| 341 | |
| 342 | extern void sml_tmm_GetLockState(kal_uint8 *lock_state, kal_uint8 source); |
| 343 | extern kal_uint32 sml_tmm_GetUnlockTimeLeft(kal_uint8 source); |
| 344 | |
| 345 | extern kal_bool custom_check_is_default_imei(kal_uint8 *imei); |
| 346 | extern void custom_tmo_movial_rsu_get_pub_key_handle(kal_uint8 index, |
| 347 | TYPE_CUST_CHL_KEY *key1, TYPE_CUST_CHL_KEY *key2); |
| 348 | #endif /* CUSTOM_SML_H */ |