oscam-2.26.01-11942-802-wit.../reader-videoguard-common.h
2026-02-17 09:41:05 +00:00

67 lines
2.6 KiB
C
Executable File

#ifndef __NDS_COMMON__
#define __NDS_COMMON__
#define write_cmd_vg(cmd, data) (card_write(reader, cmd, data, cta_res, &cta_lr) == 0)
#define NDSAUTO 0
#define NDS1 1
#define NDS12 12
#define NDS2 2
struct s_CmdTabEntry
{
uint8_t cla;
uint8_t cmd;
uint8_t len;
uint8_t mode;
};
struct s_CmdTab
{
uint8_t index;
uint8_t size;
uint8_t Nentries;
uint8_t dummy;
struct s_CmdTabEntry e[1];
};
struct videoguard_data
{
time_t card_valid_to;
struct s_CmdTab *cmd_table;
uint16_t cardkeys[3][32];
uint8_t stateD3A[16];
AES_KEY ekey;
AES_KEY astrokey;
};
extern int32_t cw_is_valid(uint8_t *cw);
extern void cAES_SetKey(struct s_reader *reader, const uint8_t *key);
extern void __xxor(uint8_t *data, int32_t len, const uint8_t *v1, const uint8_t *v2);
#define xor16(v1,v2,d) __xxor((d),16,(v1),(v2))
#define val_by2on3(x) ((0xaaab*(x))>>16) // fixed point *2/3
extern void cCamCryptVG_SetSeed(struct s_reader *reader);
extern void cCamCryptVG_GetCamKey(struct s_reader *reader, uint16_t *tb2);
extern int32_t status_ok(const uint8_t *status);
extern int32_t checksum_ok(const uint8_t *ird_payload);
extern void memorize_cmd_table(struct s_reader *reader, const uint8_t *mem, int32_t size);
extern int32_t cmd_table_get_info(struct s_reader *reader, const uint8_t *cmd, uint8_t *rlen, uint8_t *rmode);
extern int32_t cmd_exists(struct s_reader *reader, const uint8_t *cmd);
extern int32_t read_cmd_len(struct s_reader *reader, const uint8_t *cmd);
extern int32_t do_cmd(struct s_reader *reader, const uint8_t *ins, const uint8_t *txbuff, uint8_t *rxbuff, uint8_t *cta_res);
int32_t videoguard_do_rawcmd(struct s_reader *reader, CMD_PACKET *cp);
extern void rev_startdate_calc_tm(const uint8_t *Date, struct tm *timeinfo, int32_t startdate_base_month, int32_t startdate_base_year);
extern void rev_expiredate_calc_tm(const uint8_t *Date, struct tm *timeinfo, int32_t expiredate_base_month, int32_t expiredate_base_year);
extern void set_known_card_info(struct s_reader *reader, const uint8_t *atr, const uint32_t *atr_size);
int32_t videoguard_get_emm_type(EMM_PACKET *ep, struct s_reader *rdr);
int32_t videoguard_get_emm_filter(struct s_reader *rdr, struct s_csystem_emm_filter **, unsigned int *);
int32_t videoguard_do_emm(struct s_reader *reader, EMM_PACKET *ep, uint8_t CLA, void (*read_tiers)(struct s_reader *),
int32_t (*docmd)(struct s_reader *, const uint8_t *ins, const uint8_t *txbuff, uint8_t *rxbuff, uint8_t *cta_res)
);
void videoguard_mail_msg(struct s_reader *rdr, uint8_t *data);
#endif // __NDS_COMMON__