FreeCalypso > hg > fc-tourmaline
comparison src/g23m-aci/aci/aci_slock.h @ 1:fa8dc04885d8
src/g23m-*: import from Magnetite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 16 Oct 2020 06:25:50 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:4e78acac3d88 | 1:fa8dc04885d8 |
---|---|
1 /* | |
2 +----------------------------------------------------------------------------- | |
3 | Project : | |
4 | Modul : J:\g23m-aci\aci\aci_slock.h | |
5 +----------------------------------------------------------------------------- | |
6 | Copyright 2002 Texas Instruments Berlin, AG | |
7 | All rights reserved. | |
8 | | |
9 | This file is confidential and a trade secret of Texas | |
10 | Instruments Berlin, AG | |
11 | The receipt of or possession of this file does not convey | |
12 | any rights to reproduce or disclose its contents or to | |
13 | manufacture, use, or sell anything it may describe, in | |
14 | whole, or in part, without the specific written consent of | |
15 | Texas Instruments Berlin, AG. | |
16 +----------------------------------------------------------------------------- | |
17 | Purpose : | |
18 +----------------------------------------------------------------------------- | |
19 */ | |
20 | |
21 #ifndef ACI_SLOCK_H | |
22 #define ACI_SLOCK_H | |
23 | |
24 #ifdef SIM_PERS | |
25 /* Shared globals ------------------------------------------------ */ | |
26 | |
27 typedef struct{ | |
28 T_SIMLOCK_STATUS status[SIMLOCK_LAST]; /* lint */ /* one status for every personalisation lock type */ | |
29 UINT16 dependency[SIMLOCK_LAST]; | |
30 UBYTE blocked; /* blocked flag */ | |
31 T_SIMLOCK_TYPE current_lock; /* currently checked lock */ | |
32 UBYTE pb_load ; | |
33 T_SIMLOCK_CHECK check_lock; | |
34 UBYTE cpin_query ; | |
35 T_SIMLOCK_TYPE lock_type; | |
36 CHAR * lock_passwd; | |
37 }T_ACI_SLOCK_SHARED; | |
38 | |
39 | |
40 EXTERN T_ACI_SLOCK_SHARED AciSLockShrd; | |
41 EXTERN UBYTE sim_code_present_in_me; | |
42 #endif | |
43 | |
44 #define NOT_PRESENT_8BIT 0xFF | |
45 #define MAX_GID 5 | |
46 #define CHECK_FAIL 2 | |
47 | |
48 #ifdef SIM_PERS | |
49 /*Max number of user codes for each category- To be defined*/ | |
50 #define MAX_NW_USER_CODES 20 | |
51 #define MAX_NS_USER_CODES 10 | |
52 #define MAX_SP_USER_CODES 10 | |
53 #define MAX_CP_USER_CODES 10 | |
54 #define MAX_SIM_USER_CODES 10 | |
55 /*Normal code length for each category*/ | |
56 #define NW_USER_CODE_LEN 3 | |
57 #define NS_USER_CODE_LEN 4 | |
58 #define SP_USER_CODE_LEN 7 | |
59 #define CP_USER_CODE_LEN 11 | |
60 #define SIM_USER_CODE_LEN 8 | |
61 | |
62 #define MAX_NUM_USERCODE_SIZE 1 | |
63 #define NUM_OPCODE_SIZE 1 | |
64 #define NUM_USER_CODE_SIZE 1 | |
65 #define CURR_USER_CODE_INDEX_SIZE 1 | |
66 #define OPCODE_LEN_SIZE 1 /* can be 2 */ | |
67 #define OPCODE_LEN_INDEX 2 | |
68 #define CODE_TYPE_SIZE 1 | |
69 | |
70 #define FC_MAX_INFINITE 0xff /* 04-08-2005 */ | |
71 | |
72 | |
73 /* | |
74 * BCD length | |
75 */ | |
76 #define NW_CODE_LEN 4 /* Parity +MNC + MCC may require 4 bytes in packed bcd format if MNC length is 3 */ | |
77 #define NS_CODE_LEN 1 /* NS requires 1 byte in packed bcd format */ | |
78 #define NW_NS_CODE_LEN 5 | |
79 #define NW_NS_MSIN_CODE_LEN 8 | |
80 #define NW_NS_MSIN_MSIN_CODE_LEN 13 | |
81 #define NW_NS_NS_CODE_LEN 6 | |
82 #define NW_DIGIT_MAP_TABLE_LEN 24 /* Network code (4) + digit mapping table (10 * 2) */ | |
83 | |
84 | |
85 #define NORMAL_CODE 0x0a | |
86 #define INTERVAL_TYPE1 0x0b /* Range */ | |
87 #define INTERVAL_TYPE2 0x0d /* digit interval */ | |
88 #define REGULAR_EXP 0x0c /* Regular expession */ | |
89 | |
90 #define GID1_LEN 4 /* GID1 is not stored in BCD format */ | |
91 #define GID2_LEN 4 /* GID2 is not stored in BCD format */ | |
92 #define GID_LEN_TO_BE_COMPARED 1 /* depends on what the length is in the sim */ | |
93 | |
94 enum | |
95 { | |
96 ALWAYS_ACCEPTED=0x00, | |
97 ALWAYS_REJECTED= 0x01, | |
98 UNTIL_NORMAL_SIM=0x02 | |
99 } ; | |
100 | |
101 enum | |
102 { | |
103 SEND_CPIN_REQ_CODE_NONE =0, | |
104 SEND_CPIN_REQ_CODE, | |
105 SEND_CPIN_REQ_CODE_RAT | |
106 } ; | |
107 | |
108 typedef enum | |
109 { | |
110 SIM_NORMAL =0, | |
111 SIM_TYPEAPPROVAL, | |
112 SIM_TEST | |
113 }T_SIM_TYPE ; | |
114 | |
115 #endif | |
116 | |
117 /* SIM configuration information */ | |
118 typedef struct | |
119 { | |
120 UBYTE deper_key [16]; | |
121 UBYTE phase; | |
122 UBYTE oper_mode; /* SIM card functionality */ | |
123 UBYTE pref_lang[5]; | |
124 UBYTE access_acm; | |
125 UBYTE access_acmmax; | |
126 UBYTE access_puct; | |
127 UBYTE sim_gidl1[MAX_GID]; | |
128 UBYTE sim_gidl2[MAX_GID]; | |
129 #ifdef SIM_PERS | |
130 T_SIM_TYPE sim_type; /* */ | |
131 UBYTE sim_read_gid1; /* added for SP, CP */ | |
132 UBYTE sim_read_gid2; /* added for SP, CP */ | |
133 UBYTE gid1_len; | |
134 UBYTE gid2_len; | |
135 UBYTE sim_read_ad_first_byte; | |
136 #endif | |
137 | |
138 } T_ACI_SIM_CONFIG; /* This is the same as T_MFW_SIM_CONFIG */ | |
139 | |
140 | |
141 /* Prototypes ----------------------------------------------------*/ | |
142 | |
143 | |
144 | |
145 | |
146 #ifdef SIM_PERS | |
147 /* | |
148 Initialising of this module. Has to be called first and *once only* before calling any other method. | |
149 */ | |
150 void aci_slock_init ( void ); | |
151 | |
152 /* | |
153 Reset the aci_slock variables | |
154 */ | |
155 void aci_slock_reset(); | |
156 | |
157 | |
158 /* | |
159 Unlocks the lock of the given type after verifying the given password. | |
160 The ACI extension for password verifying (see 2.3.9.1) will be used to | |
161 determine if the given password is correct or not. | |
162 On a successful unlock the actual status of the lock will be returned. | |
163 If an error occurred SIMLOCK_FAIL will be returned. | |
164 (Uses the ACI extension "personalisation data access".) | |
165 */ | |
166 T_SIMLOCK_STATUS aci_slock_authenticate ( T_SIMLOCK_TYPE type, char *passwd ); | |
167 | |
168 | |
169 /* | |
170 ACI method for retrieving the status of a single personalisation type. This method calls extension | |
171 methods which in turn calls Security Drv. API and retrn the status of a personalisation category. | |
172 The personalisation status is stored in MEPD which is directly accessed by Security Drv. | |
173 Added on 11/03/2005 | |
174 */ | |
175 | |
176 T_SIMLOCK_STATUS aci_personalisation_get_status ( T_SIMLOCK_TYPE personalisation_type ); | |
177 #endif | |
178 #ifdef SIM_PERS | |
179 | |
180 | |
181 /* | |
182 Locks the lock of the given type. On a successful lock the actual | |
183 status of the lock will be returned. If an error occurred SIMLOCK_FAIL | |
184 will be returned. This method will use the ACI extension for password | |
185 verifying (see 2.3.9.1) to determine if the given password is correct | |
186 or not. (Uses the ACI extension "personalisation data access".) | |
187 */ | |
188 T_SIMLOCK_STATUS aci_slock_lock ( T_SIMLOCK_TYPE type, char *passwd ); | |
189 | |
190 /* | |
191 For Failure Counter reset. Use extension methods | |
192 added on 11/03/2005 | |
193 */ | |
194 T_OPER_RET_STATUS aci_slock_reset_fc ( char *fcKey ); | |
195 | |
196 /*-------------------------------------- | |
197 For Supplementary Info( e.g. FC MAX, MC Current value). | |
198 Uses extension method aci_slock_sup_info | |
199 added on 11/03/2005 | |
200 ----------------------------------------*/ | |
201 T_OPER_RET_STATUS aci_slock_sup_info(T_SUP_INFO *sup_info); | |
202 | |
203 /*------------------------------------------ | |
204 For master unlock. Unlock can be in bootup menu | |
205 or in security menu. | |
206 -------------------------------------------*/ | |
207 T_OPER_RET_STATUS aci_slock_master_unlock(char *masterkey); | |
208 | |
209 /* change the password */ | |
210 T_OPER_RET_STATUS aci_slock_change_password ( T_SIMLOCK_TYPE type, char *passwd, char *new_passwd ); | |
211 | |
212 | |
213 | |
214 #endif | |
215 /* | |
216 Unlocks the lock of the given type after verifying the given password. | |
217 The ACI extension for password verifying (see 2.3.9.1) will be used to | |
218 determine if the given password is correct or not. | |
219 On a successful unlock the actual status of the lock will be returned. | |
220 If an error occurred SIMLOCK_FAIL will be returned. | |
221 (Uses the ACI extension "personalisation data access".) | |
222 */ | |
223 T_SIMLOCK_STATUS aci_slock_unlock ( T_SIMLOCK_TYPE type, char *passwd ); | |
224 /* | |
225 Checks for all kinds of personalisation locks. The given IMSI will be checked against the internal | |
226 personalisation data. Returns SIMLOCK_BLOCKED, if one lock was not matching the given IMSI. | |
227 */ | |
228 T_SIMLOCK_STATUS aci_slock_checkpersonalisation( T_SIMLOCK_TYPE current_lock ); | |
229 | |
230 | |
231 /* | |
232 PURPOSE : Install information found in the primitive into configuration buffers. | |
233 */ | |
234 void aci_slock_sim_init ( T_SIM_MMI_INSERT_IND *sim_mmi_insert_ind ); | |
235 | |
236 | |
237 /* | |
238 PURPOSE : Call back for SIM read. | |
239 | |
240 */ | |
241 void aci_slock_sim_read_sim_cb(SHORT table_id); | |
242 | |
243 /* | |
244 PURPOSE : Request to read SIM card. | |
245 | |
246 */ | |
247 void aci_slock_sim_read_sim(USHORT data_id, UBYTE len, UBYTE max_length); | |
248 | |
249 #ifdef SIM_PERS | |
250 /* | |
251 | |
252 PURPOSE : Setting the sim_type value (Normal, Test SIM, Type Approval SIM) | |
253 | |
254 */ | |
255 | |
256 void aci_slock_set_simtype(T_SIM_TYPE sim_type ); | |
257 | |
258 /* | |
259 PURPOSE : To set global variable for configuration data ( part1 of Security Driver) | |
260 */ | |
261 BOOL aci_slock_set_CFG(void); | |
262 | |
263 | |
264 void aci_slock_check_NWlock( UBYTE* imsi_sim, UBYTE personalisation ); | |
265 | |
266 void aci_slock_check_NSlock( UBYTE* imsi_sim, UBYTE personalisation ); | |
267 | |
268 void aci_slock_check_SPlock( UBYTE* imsi_sim, UBYTE personalisation ); | |
269 void aci_slock_check_CPlock( UBYTE* imsi_sim, UBYTE personalisation); | |
270 | |
271 void aci_slock_check_SMlock( UBYTE* imsi_sim, UBYTE personalisation); | |
272 | |
273 GLOBAL void aci_slock_psaSIM_decodeIMSI (UBYTE* imsi_field, UBYTE imsi_c_field, CHAR* imsi_asciiz); | |
274 | |
275 GLOBAL void aci_slock_psaSIM_decodeIMSI_without_parity(UBYTE* imsi_field, UBYTE imsi_c_field, CHAR* imsi_asciiz); | |
276 | |
277 GLOBAL void aci_set_cme_error(T_SIMLOCK_TYPE slocktype); | |
278 GLOBAL void aci_set_cme_error_code(T_SIMLOCK_TYPE current_lock , T_ACI_CME_ERR *err_code); | |
279 GLOBAL void aci_set_cpin_code(T_SIMLOCK_TYPE current_lock ,T_ACI_CPIN_RSLT *code); | |
280 | |
281 /* | |
282 PURPOSE : read SIM group identifier 1 or 2 from SIM card | |
283 */ | |
284 void aci_slock_sim_gid_cnf( SHORT table_id ); | |
285 GLOBAL void aci_set_cme_error_code_and_logRslt( UBYTE cmdBuf ); | |
286 | |
287 GLOBAL void aci_slock_unlock_timer_stopped(void); | |
288 GLOBAL UBYTE aci_slock_check_timer(void); | |
289 GLOBAL void aci_slock_unlock_timer_stopped(void); | |
290 GLOBAL UBYTE aci_slock_is_timer_support(void); | |
291 GLOBAL void aci_slock_set_timer_flag(UBYTE status); | |
292 GLOBAL void aci_slock_send_RAT(UBYTE cmdBuf,T_ACI_CME_ERR err_code ); | |
293 | |
294 #endif /* SIM_PERS */ | |
295 #endif /* ACI_SLOCK_H */ |