./ MultiCS.r82 / msg-cccam.h
// CCcam Cryptage Functions struct cc_crypt_block { uint8_t keytable[256]; uint8_t state; uint8_t counter; uint8_t sum; } __attribute__((packed)); void cc_crypt_swap(unsigned char *p1, unsigned char *p2); void cc_crypt_init( struct cc_crypt_block *block, uint8_t *key, int len); void cc_crypt_xor(uint8_t *buf); void cc_decrypt(struct cc_crypt_block *block, uint8_t *data, int len); void cc_encrypt(struct cc_crypt_block *block, uint8_t *data, int len); void cc_crypt_cw(uint8_t *nodeid, uint32_t card_id, uint8_t *cws); // CCcam Connection Functions #define CC_MAXMSGSIZE 2048 typedef enum { CC_MSG_CLI_INFO, // client -> server CC_MSG_ECM_REQUEST, // client -> server CC_MSG_EMM_REQUEST, // client -> server CC_MSG_CARD_DEL = 4, // server -> client CC_MSG_BAD_ECM, CC_MSG_KEEPALIVE, // client -> server CC_MSG_CARD_ADD, // server -> client CC_MSG_SRV_INFO, // server -> client CC_MSG_CMD_0B = 0x0b, // server -> client ??????? #ifdef CACHEEX CC_MSG_CACHE_PUSH = 0x81, //CacheEx Cache-Push In/Out #ifdef CACHEEX_CWCYCLE CC_MSG_CACHE_PRCW = 0x88, #endif #endif CC_MSG_ECM_NOK1 = 0xfe, // server -> client ecm queue full, card not found CC_MSG_ECM_NOK2 = 0xff, // server -> client CC_MSG_NO_HEADER = 0xffff } cc_msg_cmd; int cc_msg_recv(int handle,struct cc_crypt_block *recvblock, uint8_t *buf, int timeout); int cc_msg_recv_nohead(int handle, struct cc_crypt_block *recvblock, uint8_t *buf, int len); int cc_msg_send(int handle,struct cc_crypt_block *sendblock, cc_msg_cmd cmd, int len, uint8_t *buf); int cc_msg_chkrecv(int handle,struct cc_crypt_block *recvblock); int cc_peekmsg(int handle,struct cc_crypt_block *recvblock, struct message_data *msg, uint8_t *buf);