source: trunk/reader-videoguard-common.h

Last change on this file was 11478, checked in by Gorgone Impertinence, 9 months ago

big cleanup pack 4

  • Property svn:eol-style set to LF
File size: 2.6 KB
Line 
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
12struct s_CmdTabEntry
13{
14    uint8_t cla;
15    uint8_t cmd;
16    uint8_t len;
17    uint8_t mode;
18};
19
20struct 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
29struct 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
43typedef 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
53extern int32_t cw_is_valid(uint8_t *cw);
54extern void cAES_SetKey(struct s_reader *reader, const uint8_t *key);
55
56extern 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
60extern void cCamCryptVG_SetSeed(struct s_reader *reader);
61extern void cCamCryptVG_GetCamKey(struct s_reader *reader, uint16_t *tb2);
62extern int32_t status_ok(const uint8_t *status);
63extern int32_t checksum_ok(const uint8_t *ird_payload);
64extern void memorize_cmd_table(struct s_reader *reader, const uint8_t *mem, int32_t size);
65extern int32_t cmd_table_get_info(struct s_reader *reader, const uint8_t *cmd, uint8_t *rlen, uint8_t *rmode);
66extern int32_t cmd_exists(struct s_reader *reader, const uint8_t *cmd);
67extern int32_t read_cmd_len(struct s_reader *reader, const uint8_t *cmd);
68extern int32_t do_cmd(struct s_reader *reader, const uint8_t *ins, const uint8_t *txbuff, uint8_t *rxbuff, uint8_t *cta_res);
69extern void rev_date_calc_tm(const uint8_t *Date, struct tm *timeinfo , int32_t base_year);
70extern void set_known_card_info(struct s_reader *reader, const uint8_t *atr, const uint32_t *atr_size);
71
72int32_t videoguard_get_emm_type(EMM_PACKET *ep, struct s_reader *rdr);
73int32_t videoguard_get_emm_filter(struct s_reader *rdr, struct s_csystem_emm_filter **, unsigned int *);
74int32_t videoguard_do_emm(struct s_reader *reader, EMM_PACKET *ep, uint8_t CLA, void (*read_tiers)(struct s_reader *),
75                          int32_t (*docmd)(struct s_reader *, const uint8_t *ins, const uint8_t *txbuff, uint8_t *rxbuff, uint8_t *cta_res)
76                         );
77void videoguard_mail_msg(struct s_reader *rdr, uint8_t *data);
78
79#endif // __NDS_COMMON__
Note: See TracBrowser for help on using the repository browser.