📄 cas_api.h
字号:
/****************************************************************************
*
* ALi
*
* File: cas_api.h
*
* Description: Cas_ECM and Cas_SC and Key Data
*
* History:
* Date Author Version Comment
* ==== ====== ======= =======
*
*
****************************************************************************/
#ifndef __CAS_API_H__
#define __CAS_API_H__
enum {
CAS_ECM_FAIL = 0x00,
CAS_ECM_OK = 0x01,
CAS_ECM_SC0_OK = 0x02,
CAS_ECM_SC1_OK = 0x04,
CAS_ECM_MAX
};
enum
{
CAS_SC_INSERTED,
CAS_SC_EXTRACTED,
CAS_SC_INIT_OK,
CAS_SC_NO_ACCESS,
CAS_SC_RESTART,
CAS_TPS_UPDATE_START,
CAS_TPS_UPDATE_END,
CAS_MSG_MAX
};
enum {
SECA_KEY8,
VIA_KEY8,
N1_KEY8,
BISS_KEY8,
IRD_KEY8,
SECA_KEY16,
VIA_KEY16,
N2_IDEA16,
N1_RSA16,
CW_KEY16,
CW_KEY64,
MAX_KEY_TYPE
};
typedef struct
{
unsigned short ca_id;
unsigned char key_type;
unsigned char index;
unsigned long provider;
unsigned char key[16];
} cas_key_db;
/* cas api */
void cas_initialize(int debug_level);
void cas_reset_ecm_channel(unsigned char channel);
void cas_handle_cat(unsigned char* cat, unsigned char len);
int cas_handle_ecm(unsigned char channel, unsigned char* data, unsigned short pid, unsigned short ca_id, unsigned char* dcw);
void cas_handle_emm(unsigned char* data, unsigned short ca_id);
int cas_handle_biss(unsigned short program_number, unsigned char *dcw);
int cas_handle_pmt_ca_desc(unsigned short caid, unsigned short pid, unsigned char *Desc, unsigned char len);
int cas_handle_cat_ca_desc(unsigned short caid, unsigned short pid, unsigned char *Desc, unsigned char len);
/* sc api */
void cas_sc_inserted(unsigned char sc, unsigned char* atr, unsigned char len);
void cas_sc_extracted(unsigned char sc);
/* key db api */
int cas_get_max_key_count(void);
int cas_get_key_db(int index, cas_key_db *key_db);
int cas_add_key_db(int index, cas_key_db *key_db);
int cas_update_key_db(int index, cas_key_db *key_db);
int cas_del_key_db(int index);
int cas_reset_key_db(void);
int cas_read_key_db(void);
/* misc api */
unsigned short cas_get_working_caid(unsigned char channel);
unsigned short cas_get_caid_from_sc(unsigned char sc);
int cas_get_sc_ready(unsigned char sc);
int cas_get_debug_level(void);
/* porting layer api */
/* you should fix these funtions */
/* find "fix me" in the code, and fix it */
void *cas_malloc(unsigned long size);
void cas_free(void *ptr);
void cas_sleep(unsigned long msec);
void cas_print(char* str);
void cas_print_buf(unsigned char* buf, int len);
void cas_set_dcw(unsigned char *dcw);
int cas_get_init_key_size(void);
char *cas_get_provider_name(unsigned long provider, unsigned short ca_id);
void cas_write_flash(unsigned char *key_db, unsigned long key_db_size);
void cas_read_flash(unsigned char *key_db, unsigned long key_db_size);
int cas_sc_t0 (int sc_id, unsigned char *Data, int Length, unsigned char *SW1, unsigned char *SW2);
int cas_sc_t1 (int sc_id, unsigned char *Data, int Length, unsigned char *SW1, unsigned char *SW2);
int cas_sc_t14(int sc_id, unsigned char *Data, int Length, unsigned char *SW1, unsigned char *SW2);
void cas_send_msg(unsigned long msg, unsigned long param1, unsigned long param2, unsigned long param3);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -