1 | #define ADDRLEN 4 // Address length in EMM commands
|
---|
2 | #define MAX_PROV 16
|
---|
3 | #define SCT_LEN(sct) (3+((sct[1]&0x0f)<<8)+sct[2])
|
---|
4 | #define MAX_LEN 256
|
---|
5 |
|
---|
6 | //Warning: OK = 0 and ERROR = 1 in csctapi !!!
|
---|
7 | #define SKIPPED 2
|
---|
8 | #define OK 1
|
---|
9 | #define ERROR 0
|
---|
10 |
|
---|
11 | #include "atr.h"
|
---|
12 |
|
---|
13 | // reader-irdeto
|
---|
14 | int irdeto_card_init(struct s_reader * reader, ATR atr);
|
---|
15 | int irdeto_do_ecm(struct s_reader * reader, ECM_REQUEST *);
|
---|
16 | int irdeto_do_emm(struct s_reader * reader, EMM_PACKET *);
|
---|
17 | int irdeto_get_emm_type(EMM_PACKET *, struct s_reader *); //s_reader as last argument to remind you that this function picks out OTHER reader than you would expect!
|
---|
18 | int irdeto_card_info(struct s_reader * reader);
|
---|
19 |
|
---|
20 | // reader-viaccess
|
---|
21 | int viaccess_card_init(struct s_reader * reader, ATR atr);
|
---|
22 | int viaccess_do_ecm(struct s_reader * reader, ECM_REQUEST *);
|
---|
23 | int viaccess_do_emm(struct s_reader * reader, EMM_PACKET *);
|
---|
24 | int viaccess_get_emm_type(EMM_PACKET *, struct s_reader *);
|
---|
25 | int viaccess_card_info(struct s_reader * reader);
|
---|
26 |
|
---|
27 | // reader-videoguard
|
---|
28 | int videoguard_card_init(struct s_reader * reader, ATR atr);
|
---|
29 | int videoguard_do_ecm(struct s_reader * reader, ECM_REQUEST *);
|
---|
30 | int videoguard_do_emm(struct s_reader * reader, EMM_PACKET *);
|
---|
31 | int videoguard_get_emm_type(EMM_PACKET *, struct s_reader *);
|
---|
32 | int videoguard_card_info(struct s_reader * reader);
|
---|
33 |
|
---|
34 | // reader-cryptoworks
|
---|
35 | int cryptoworks_card_init(struct s_reader * reader, ATR atr);
|
---|
36 | int cryptoworks_do_ecm(struct s_reader * reader, ECM_REQUEST *);
|
---|
37 | int cryptoworks_do_emm(struct s_reader * reader, EMM_PACKET *);
|
---|
38 | int cryptoworks_get_emm_type(EMM_PACKET *, struct s_reader *);
|
---|
39 | int cryptoworks_card_info(struct s_reader * reader);
|
---|
40 | int CheckSctLen(const uchar *, int);
|
---|
41 |
|
---|
42 | // reader-seca
|
---|
43 | int seca_card_init(struct s_reader * reader, ATR atr);
|
---|
44 | int seca_do_ecm(struct s_reader * reader, ECM_REQUEST *);
|
---|
45 | int seca_do_emm(struct s_reader * reader, EMM_PACKET *);
|
---|
46 | int seca_get_emm_type(EMM_PACKET *, struct s_reader *);
|
---|
47 | int seca_card_info(struct s_reader * reader);
|
---|
48 |
|
---|
49 | // reader nagra2/3
|
---|
50 | int nagra2_card_init(struct s_reader * reader, ATR atr);
|
---|
51 | int nagra2_do_ecm(struct s_reader * reader, ECM_REQUEST *er);
|
---|
52 | int nagra2_card_info(struct s_reader * reader);
|
---|
53 | int nagra2_do_emm(struct s_reader * reader, EMM_PACKET *);
|
---|
54 | int nagra2_get_emm_type(EMM_PACKET *, struct s_reader *);
|
---|
55 | void nagra2_post_process(struct s_reader * reader);
|
---|
56 |
|
---|
57 | // reader-conax
|
---|
58 | int conax_card_init(struct s_reader * reader, ATR atr);
|
---|
59 | int conax_do_ecm(struct s_reader * reader, ECM_REQUEST *);
|
---|
60 | int conax_do_emm(struct s_reader * reader, EMM_PACKET *);
|
---|
61 | int conax_get_emm_type(EMM_PACKET *, struct s_reader *);
|
---|
62 | int conax_card_info(struct s_reader * reader);
|
---|
63 |
|
---|
64 | // reader-dre
|
---|
65 | int dre_card_init(struct s_reader * reader, ATR atr);
|
---|
66 | int dre_do_ecm(struct s_reader * reader, ECM_REQUEST *);
|
---|
67 | int dre_do_emm(struct s_reader * reader, EMM_PACKET *);
|
---|
68 | int dre_get_emm_type(EMM_PACKET *, struct s_reader *);
|
---|
69 | int dre_card_info(void);
|
---|
70 |
|
---|
71 | #define get_atr \
|
---|
72 | unsigned char atr[64]; \
|
---|
73 | unsigned int atr_size; \
|
---|
74 | ATR_GetRaw(&newatr, atr, &atr_size);
|
---|
75 |
|
---|
76 | #define get_hist \
|
---|
77 | unsigned char hist[64]; \
|
---|
78 | unsigned int hist_size; \
|
---|
79 | ATR_GetHistoricalBytes(&newatr, hist, &hist_size);
|
---|
80 |
|
---|