view src/aci2/aci/aci_slock.h @ 63:065aacae8b37
makefile-frags/link-steps: it's make_cmd.pl, not make-cmd.pl
author
Mychaela Falconia <falcon@freecalypso.org>
date
Sat, 01 Oct 2016 03:30:53 +0000 (2016-10-01)
parents
93999a60b835
children
line source
+ − /*
+ − +-----------------------------------------------------------------------------
+ − | Project :
+ − | Modul : J:\g23m-aci\aci\aci_slock.h
+ − +-----------------------------------------------------------------------------
+ − | Copyright 2002 Texas Instruments Berlin, AG
+ − | All rights reserved.
+ − |
+ − | This file is confidential and a trade secret of Texas
+ − | Instruments Berlin, AG
+ − | The receipt of or possession of this file does not convey
+ − | any rights to reproduce or disclose its contents or to
+ − | manufacture, use, or sell anything it may describe, in
+ − | whole, or in part, without the specific written consent of
+ − | Texas Instruments Berlin, AG.
+ − +-----------------------------------------------------------------------------
+ − | Purpose :
+ − +-----------------------------------------------------------------------------
+ − */
+ −
+ − #ifndef ACI_SLOCK_H
+ − #define ACI_SLOCK_H
+ −
+ − #ifdef SIM_PERS
+ − /* Shared globals ------------------------------------------------ */
+ −
+ − typedef struct{
+ − T_SIMLOCK_STATUS status[SIMLOCK_FIRST_SIM+1]; /* lint */ /* one status for every personalisation lock type */
+ − UINT16 dependency[SIMLOCK_FIRST_SIM+1];
+ − UBYTE blocked; /* blocked flag */
+ − T_SIMLOCK_TYPE current_lock; /* currently checked lock */
+ − UBYTE pb_load ;
+ − T_SIMLOCK_CHECK check_lock;
+ − T_SIMLOCK_TYPE lock_type;
+ − CHAR * lock_passwd;
+ − }T_ACI_SLOCK_SHARED;
+ −
+ −
+ − EXTERN T_ACI_SLOCK_SHARED AciSLockShrd;
+ − EXTERN UBYTE sim_code_present_in_me;
+ − #endif
+ −
+ − #define NOT_PRESENT_8BIT 0xFF
+ − #define MAX_GID 5
+ − #define MAX_AD 0
+ − #define CHECK_FAIL 2
+ −
+ − #ifdef SIM_PERS
+ − /*Max number of user codes for each category- To be defined*/
+ − #define MAX_NW_USER_CODES 20
+ − #define MAX_NS_USER_CODES 10
+ − #define MAX_SP_USER_CODES 10
+ − #define MAX_CP_USER_CODES 10
+ − #define MAX_SIM_USER_CODES 10
+ − /*Normal code length for each category*/
+ − #define NW_USER_CODE_LEN 3
+ − #define NS_USER_CODE_LEN 4
+ − #define SP_USER_CODE_LEN 7
+ − #define CP_USER_CODE_LEN 11
+ − #define SIM_USER_CODE_LEN 8
+ −
+ − #define MAX_NUM_USERCODE_SIZE 1
+ − #define NUM_OPCODE_SIZE 1
+ − #define NUM_USER_CODE_SIZE 1
+ − #define CURR_USER_CODE_INDEX_SIZE 1
+ − #define OPCODE_LEN_SIZE 1 // can be 2
+ − #define OPCODE_LEN_INDEX 2
+ − #define CODE_TYPE_SIZE 1
+ −
+ − #define FC_MAX_INFINITE 0xff //04-08-2005
+ −
+ −
+ − /*
+ − * BCD length
+ − */
+ − #define NW_CODE_LEN 4 // Parity +MNC + MCC may require 4 bytes in packed bcd format if MNC length is 3
+ − #define NS_CODE_LEN 1 // NS requires 1 byte in packed bcd format
+ − #define NW_NS_CODE_LEN 5
+ − #define NW_NS_MSIN_CODE_LEN 8
+ − #define NW_NS_MSIN_MSIN_CODE_LEN 13
+ − #define NW_NS_NS_CODE_LEN 6
+ − #define NW_DIGIT_MAP_TABLE_LEN 24 // Network code (4) + digit mapping table (10 * 2)
+ −
+ −
+ − #define NORMAL_CODE 0x0a
+ − #define INTERVAL_TYPE1 0x0b // Range
+ − #define INTERVAL_TYPE2 0x0d // digit interval
+ − #define REGULAR_EXP 0x0c // Regular expession
+ −
+ − #define GID1_LEN 4 // GID1 is not stored in BCD format
+ − #define GID2_LEN 4 // GID2 is not stored in BCD format
+ − #define GID_LEN_TO_BE_COMPARED 1 //depends on what the length is in the sim
+ −
+ − enum
+ − {
+ − ALWAYS_ACCEPTED=0x00,
+ − ALWAYS_REJECTED= 0x01,
+ − UNTIL_NORMAL_SIM=0x02
+ − } ;
+ −
+ − typedef enum
+ − {
+ − SIM_NORMAL =0,
+ − SIM_TYPEAPPROVAL,
+ − SIM_TEST
+ − }T_SIM_TYPE ;
+ −
+ − #endif
+ −
+ − /* SIM configuration information */
+ − typedef struct
+ − {
+ − UBYTE deper_key [16];
+ − UBYTE phase;
+ − UBYTE oper_mode; /* SIM card functionality */
+ − UBYTE pref_lang[5];
+ − UBYTE access_acm;
+ − UBYTE access_acmmax;
+ − UBYTE access_puct;
+ − UBYTE sim_gidl1[MAX_GID];
+ − UBYTE sim_gidl2[MAX_GID];
+ − #ifdef SIM_PERS
+ − T_SIM_TYPE sim_type; /* */
+ − UBYTE sim_read_gid1; /* added for SP, CP */
+ − UBYTE sim_read_gid2; /* added for SP, CP */
+ − UBYTE gid1_len;
+ − UBYTE gid2_len;
+ − UBYTE sim_read_ad_first_byte;
+ − #endif
+ −
+ − } T_ACI_SIM_CONFIG; // This is the same as T_MFW_SIM_CONFIG
+ −
+ −
+ − /* Prototypes ----------------------------------------------------*/
+ −
+ −
+ −
+ −
+ − #ifdef SIM_PERS
+ − /*
+ − Initialising of this module. Has to be called first and *once only* before calling any other method.
+ − */
+ − void aci_slock_init ( void );
+ −
+ − /*
+ − Reset the aci_slock variables
+ − */
+ − void aci_slock_reset();
+ −
+ −
+ − /*
+ − Unlocks the lock of the given type after verifying the given password.
+ − The ACI extension for password verifying (see 2.3.9.1) will be used to
+ − determine if the given password is correct or not.
+ − On a successful unlock the actual status of the lock will be returned.
+ − If an error occurred SIMLOCK_FAIL will be returned.
+ − (Uses the ACI extension "personalisation data access".)
+ − */
+ − T_SIMLOCK_STATUS aci_slock_authenticate ( T_SIMLOCK_TYPE type, char *passwd );
+ −
+ −
+ − /*
+ − ACI method for retrieving the status of a single personalisation type. This method calls extension
+ − methods which in turn calls Security Drv. API and retrn the status of a personalisation category.
+ − The personalisation status is stored in MEPD which is directly accessed by Security Drv.
+ − Added on 11/03/2005
+ − */
+ −
+ − T_SIMLOCK_STATUS aci_personalisation_get_status ( T_SIMLOCK_TYPE personalisation_type );
+ − #endif
+ − #ifdef SIM_PERS
+ −
+ −
+ − /*
+ − Locks the lock of the given type. On a successful lock the actual
+ − status of the lock will be returned. If an error occurred SIMLOCK_FAIL
+ − will be returned. This method will use the ACI extension for password
+ − verifying (see 2.3.9.1) to determine if the given password is correct
+ − or not. (Uses the ACI extension "personalisation data access".)
+ − */
+ − T_SIMLOCK_STATUS aci_slock_lock ( T_SIMLOCK_TYPE type, char *passwd );
+ −
+ − /*
+ − For Failure Counter reset. Use extension methods
+ − added on 11/03/2005
+ − */
+ − T_OPER_RET_STATUS aci_slock_reset_fc ( char *fcKey );
+ −
+ − /*--------------------------------------
+ − For Supplementary Info( e.g. FC MAX, MC Current value).
+ − Uses extension method aci_slock_sup_info
+ − added on 11/03/2005
+ − ----------------------------------------*/
+ − T_OPER_RET_STATUS aci_slock_sup_info(T_SUP_INFO *sup_info);
+ −
+ −
+ − /* change the password */
+ − T_SIMLOCK_STATUS aci_slock_change_password ( T_SIMLOCK_TYPE type, char *passwd, char *new_passwd );
+ −
+ −
+ −
+ − #endif
+ − /*
+ − Unlocks the lock of the given type after verifying the given password.
+ − The ACI extension for password verifying (see 2.3.9.1) will be used to
+ − determine if the given password is correct or not.
+ − On a successful unlock the actual status of the lock will be returned.
+ − If an error occurred SIMLOCK_FAIL will be returned.
+ − (Uses the ACI extension "personalisation data access".)
+ − */
+ − T_SIMLOCK_STATUS aci_slock_unlock ( T_SIMLOCK_TYPE type, char *passwd );
+ − /*
+ − Checks for all kinds of personalisation locks. The given IMSI will be checked against the internal
+ − personalisation data. Returns SIMLOCK_BLOCKED, if one lock was not matching the given IMSI.
+ − */
+ − T_SIMLOCK_STATUS aci_slock_checkpersonalisation( T_SIMLOCK_TYPE current_lock );
+ −
+ −
+ − /*
+ − PURPOSE : Install information found in the primitive into configuration buffers.
+ − */
+ − void aci_slock_sim_init ( T_SIM_MMI_INSERT_IND *sim_mmi_insert_ind );
+ −
+ −
+ − /*
+ − PURPOSE : read SIM group identifier 1 from SIM card
+ −
+ − */
+ − void aci_slock_sim_gid1_cnf(USHORT error, UBYTE *data);
+ −
+ − /*
+ − PURPOSE : read SIM group identifier 2 from SIM card
+ −
+ − */
+ − void aci_slock_sim_gid2_cnf(USHORT error, UBYTE *data);
+ −
+ −
+ −
+ − /*
+ − PURPOSE : Call back for SIM read.
+ −
+ − */
+ − void aci_slock_sim_read_sim_cb(SHORT table_id);
+ −
+ − /*
+ − PURPOSE : Request to read SIM card.
+ −
+ − */
+ − void aci_slock_sim_read_sim(USHORT data_id, UBYTE len, UBYTE max_length);
+ −
+ − #ifdef SIM_PERS
+ − /*
+ −
+ − PURPOSE : Setting the sim_type value (Normal, Test SIM, Type Approval SIM)
+ −
+ − */
+ −
+ − void aci_slock_set_simtype(T_SIM_TYPE sim_type );
+ −
+ − /*
+ − PURPOSE : To set global variable for configuration data ( part1 of Security Driver)
+ − */
+ − void aci_slock_set_CFG(void);
+ −
+ −
+ − void aci_slock_check_NWlock( UBYTE* imsi_sim, UBYTE personalisation );
+ −
+ − void aci_slock_check_NSlock( UBYTE* imsi_sim, UBYTE personalisation );
+ −
+ − void aci_slock_check_SPlock( UBYTE* imsi_sim, UBYTE personalisation );
+ − void aci_slock_check_CPlock( UBYTE* imsi_sim, UBYTE personalisation);
+ −
+ − void aci_slock_check_SMlock( UBYTE* imsi_sim, UBYTE personalisation);
+ −
+ − GLOBAL void aci_slock_psaSIM_decodeIMSI (UBYTE* imsi_field, UBYTE imsi_c_field, CHAR* imsi_asciiz);
+ −
+ − GLOBAL void aci_slock_psaSIM_decodeIMSI_without_parity(UBYTE* imsi_field, UBYTE imsi_c_field, CHAR* imsi_asciiz);
+ −
+ − GLOBAL void aci_set_cme_error(T_SIMLOCK_TYPE slocktype);
+ − GLOBAL void aci_set_cme_error_code(T_SIMLOCK_TYPE current_lock , T_ACI_CME_ERR *err_code);
+ −
+ − #endif //SIM_PERS
+ − #endif /* ACI_SLOCK_H */