1 | #ifndef __NDS_COMMON__
|
---|
2 | #define __NDS_COMMON__
|
---|
3 |
|
---|
4 | #define write_cmd_vg(cmd, data) (card_write(reader, cmd, data, cta_res, &cta_lr) == 0)
|
---|
5 |
|
---|
6 | #define NDSUNKNOWN 0
|
---|
7 | #define NDSAUTO 0
|
---|
8 | #define NDS1 1
|
---|
9 | #define NDS12 12
|
---|
10 | #define NDS2 2
|
---|
11 |
|
---|
12 | struct s_CmdTabEntry
|
---|
13 | {
|
---|
14 | uint8_t cla;
|
---|
15 | uint8_t cmd;
|
---|
16 | uint8_t len;
|
---|
17 | uint8_t mode;
|
---|
18 | };
|
---|
19 |
|
---|
20 | struct s_CmdTab
|
---|
21 | {
|
---|
22 | uint8_t index;
|
---|
23 | uint8_t size;
|
---|
24 | uint8_t Nentries;
|
---|
25 | uint8_t dummy;
|
---|
26 | struct s_CmdTabEntry e[1];
|
---|
27 | };
|
---|
28 |
|
---|
29 | struct videoguard_data
|
---|
30 | {
|
---|
31 | const char *card_desc;
|
---|
32 | int32_t card_baseyear;
|
---|
33 | int32_t card_tierstart;
|
---|
34 | int32_t card_system_version;
|
---|
35 | time_t card_valid_to;
|
---|
36 | struct s_CmdTab *cmd_table;
|
---|
37 | uint16_t cardkeys[3][32];
|
---|
38 | uint8_t stateD3A[16];
|
---|
39 | AES_KEY ekey;
|
---|
40 | AES_KEY astrokey;
|
---|
41 | };
|
---|
42 |
|
---|
43 | typedef struct nds_atr
|
---|
44 | {
|
---|
45 | uint8_t atr[MAX_ATR_LEN];
|
---|
46 | uint16_t atr_len;
|
---|
47 | int32_t base_year;
|
---|
48 | int32_t tier_start;
|
---|
49 | int32_t nds_version;
|
---|
50 | const char *desc;
|
---|
51 | } NDS_ATR_ENTRY;
|
---|
52 |
|
---|
53 | extern int32_t cw_is_valid(uint8_t *cw);
|
---|
54 | extern void cAES_SetKey(struct s_reader *reader, const uint8_t *key);
|
---|
55 |
|
---|
56 | extern void __xxor(uint8_t *data, int32_t len, const uint8_t *v1, const uint8_t *v2);
|
---|
57 | #define xor16(v1,v2,d) __xxor((d),16,(v1),(v2))
|
---|
58 | #define val_by2on3(x) ((0xaaab*(x))>>16) // fixed point *2/3
|
---|
59 |
|
---|
60 | extern void cCamCryptVG_SetSeed(struct s_reader *reader);
|
---|
61 | extern void cCamCryptVG_GetCamKey(struct s_reader *reader, uint16_t *tb2);
|
---|
62 | extern int32_t status_ok(const uint8_t *status);
|
---|
63 | extern int32_t checksum_ok(const uint8_t *ird_payload);
|
---|
64 | extern void memorize_cmd_table(struct s_reader *reader, const uint8_t *mem, int32_t size);
|
---|
65 | extern int32_t cmd_table_get_info(struct s_reader *reader, const uint8_t *cmd, uint8_t *rlen, uint8_t *rmode);
|
---|
66 | extern int32_t cmd_exists(struct s_reader *reader, const uint8_t *cmd);
|
---|
67 | extern int32_t read_cmd_len(struct s_reader *reader, const uint8_t *cmd);
|
---|
68 | extern int32_t do_cmd(struct s_reader *reader, const uint8_t *ins, const uint8_t *txbuff, uint8_t *rxbuff, uint8_t *cta_res);
|
---|
69 | int32_t videoguard_do_rawcmd(struct s_reader *reader, CMD_PACKET *cp);
|
---|
70 | extern void rev_date_calc_tm(const uint8_t *Date, struct tm *timeinfo , int32_t base_year);
|
---|
71 | extern void set_known_card_info(struct s_reader *reader, const uint8_t *atr, const uint32_t *atr_size);
|
---|
72 |
|
---|
73 | int32_t videoguard_get_emm_type(EMM_PACKET *ep, struct s_reader *rdr);
|
---|
74 | int32_t videoguard_get_emm_filter(struct s_reader *rdr, struct s_csystem_emm_filter **, unsigned int *);
|
---|
75 | int32_t videoguard_do_emm(struct s_reader *reader, EMM_PACKET *ep, uint8_t CLA, void (*read_tiers)(struct s_reader *),
|
---|
76 | int32_t (*docmd)(struct s_reader *, const uint8_t *ins, const uint8_t *txbuff, uint8_t *rxbuff, uint8_t *cta_res)
|
---|
77 | );
|
---|
78 | void videoguard_mail_msg(struct s_reader *rdr, uint8_t *data);
|
---|
79 |
|
---|
80 | #endif // __NDS_COMMON__
|
---|