⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iccapp.h

📁 mifarea卡程序mifarea卡程序mifarea卡程序
💻 H
📖 第 1 页 / 共 3 页
字号:
 *****************************************/
int ICC_init_sam_for_purchase(char *bufin, unsigned char len, char *tid, char *mac);


/* 校验MAC2 */
int ICC_credit_sam_for_purchase(char *mac2);


/* des计算初始化(密钥分散) */
int ICC_init_sam_for_des(char useofkey, char edition, char *buf, unsigned char len);


/*****************************************
 * des计算                               *
 * flag:                                 *
 *  0: 无后续块加密                      *
 *  1: 最后一块mac计算                   *
 *  2: 有后续块加密                      *
 *  3: 下一块mac计算                     *
 *  5: 唯一一块mac计算                   *
 *     此情况inbuf的前8个字节为初始值    *
 *     若不需要,请将前8个字节填0        *
 *  7: 第一块mac计算                     *
 *****************************************/
int ICC_sam_des_mac(char *inbuf, unsigned char len, char *outbuf, unsigned char flag);

/*****************************************
 * 密钥导出                              *
 * keyid:密钥索引;len:长度;          *
 * inbuf:城市代码(2字节)+CSN(4字节) *
 *        + 流水号(2字节)+MAC (1|4字节)*
 *        + 扇区标识(1~5字节)          *
 *****************************************/
int ICC_sam_export_key(char keyid, char *inbuf, unsigned char len, char *outbuf);


/*############################## 安全命令 ###############################*/
 
/* 验证口令                              *
 * pin: 待验证之口令,  id: 密钥标识     */
int ICC_verify_pin(char *pin, int pinlen, int id);


/* 外部认证                              *
 * buf: 8/16 byte data, keyid: 密钥标识  */
int ICC_external_auth(unsigned char *buf, unsigned char len, unsigned char keyid);


/* 内部认证                                     *
 * flag: 00: des加密,01:des解密,02:计算mac  *
 * keyid: 密钥标识号                            *
 * len: 待认证数据长度                          *
 * buf: 待认证数据                              */
int ICC_internal_auth(unsigned char *inbuf, unsigned char len, unsigned char *outbuf,
                      unsigned char keyid, unsigned char flag);
/* the defination below is for parameter "flag" */
#define EN0     0
#define ENCRYPT 0
#define DE1     1
#define DECRYPT 1
#define DOMAC   2


/* 计算DES和MAC                         *
 * 实际上是通过内部认证命令完成         */
int ICC_DES(unsigned char *inblock, unsigned char *outblock, int keyid, int flag);
int ICC_MAC(unsigned char *inblock, int len, unsigned char *outblock, int keyid);


/* 取len字节随机数                      */
int ICC_get_challenge(unsigned char *buf, unsigned char len);


/*****************************************
 * Pin unblock                           *
 * CLA: 80, INS: 24                      *
 * Secret and protect mode: YES          *
 * Suport: PBOC                          *
 *****************************************/
int ICC_pin_unblock(char Block_style,unsigned char *MAC);

/*****************************************
 * Reload/change pin                     *
 * CLA: 80, INS: 5e                      *
 * Secret and protect mode: NO           *
 * Suport: PBOC                          *
 * 参数1:Reload/change(0/1);参数2:信息长度;参数3:PIN信息        *
 *****************************************/
int ICC_reload_pin(char R_C, char len ,char *PIN_info);

/*****************************************
 * Application unblock  (应用解锁)       *
 * CLA: 84, INS: 18                      *
 * Secret and protect mode: NO           *
 * Suport: PBOC                          *
  * 参数1:MAC                           *
 *****************************************/
int ICC_app_unblock(unsigned char *MAC);

/*****************************************
 * Append record     增加记录            *
 * CLA: 00, INS: E2                      *
 * Secret and protect mode: YES          *
 * Suport: ISO                           ****
 * para2: 短文件标识或当前文件(b4~b8 || 00) *
 * len:   待写入的长度                      *
 * buf:   待写入的数据                      *
 ********************************************/
int ICC_append_record(unsigned char para2, char *buf, unsigned char len);

/*############################## 消费相关命令 ###############################*/
/*                               针对用户的IC卡                              */
/*****************************************
 * Decrease                              *
 * CLA: 80, INS: 30                      *
 * Secret and protect mode: YES          *
 * Suport: TimeCOS only                  *
  *参数1:文件标识;参数2:长度;参数3:金额+MAC;*
 *****************************************/
int ICC_decrease(unsigned char file_flag, char len, unsigned char *cash);


/*****************************************
 * Increase                              *
 * CLA: 80, INS: 32                      *
 * Secret and protect mode: YES          *
 * Suport: TimeCOS only                  *
  *参数1:文件标识;参数2:长度;参数3:金额+MAC;*
 *****************************************/
int ICC_increase(unsigned char file_flag, char len, unsigned char *cash);

/*****************************************
 * Read binary file                      *
 * CLA: 00, INS: B0                      *
 * Secret and protect mode: YES          *
 * Suport: ISO/PBOC                      *
 ******************************************
 * para1: 短文标识或偏移量高字节(100xxxxx)*
 *      如果是偏移量高字节则读当前文件    *
 * para2: 偏移量低字节                    *
 * len: 欲读的长度                        *
 * buf: 输出,读到的内容                  *
 ******************************************/
int ICC_read_binary(unsigned char para1, unsigned char para2, char *buf, unsigned char len);

/*****************************************
 * Read Record file                      *
 * CLA: 00, INS: B2                      *
 * Secret and protect mode: YES          *
 * Suport: ISO/PBOC                      *
 * recid:   记录号(或记录标识)         *
 * flag:    读方式详见说明               *
 * buf:     读到的内容                   *
 *****************************************/
int ICC_read_record(unsigned char recid, unsigned char flag, char *buf);

/*****************************************
 * Update binary file (更新二进制文件)  *
 * CLA: 00, INS: D6                      *
 * Secret and protect mode: YES          *
 * Suport: ISO/PBOC                      ***
 * para1: 短文标识或偏移量高字节(100xxxxx) *
 *      如果是偏移量高字节则写当前文件     *
 * para2: 偏移量                           *
 * len:     写入的长度                     *
 * buf:     待写的内容                     *
 *******************************************/
int ICC_update_binary(unsigned char para1, unsigned char para2, char *buf, unsigned char len);

/*****************************************
 * Update record file (更新记录文件)    *
 * CLA: 00, INS: DC                      *
 * Secret and protect mode: YES          *
 * Suport: ISO/PBOC                      *
 * recid:   记录号或标识,00表示当前纪录 *
 * flag:    写入方式,详见说明           *
 * len:     写入数据的长度               *
 * buf:     待写入的数据                 *
 *****************************************/
int ICC_update_record(unsigned char recid, unsigned char flag, char *buf, unsigned char len);

/*****************************************
 * Card block        (卡锁定)          *
 * CLA: 84, INS: 16                      *
 * Secret and protect mode: NO           *
 * Suport: PBOC                          *
 * 参数1:MAC                           *
 *****************************************/
int ICC_block(unsigned char *MAC);

/*****************************************
 * Initialize for unload(初始化圈提交易) *
 * CLA: 80, INS: 50 ,P1=05  ,P2=01       *
 * Secret and protect mode: NO           *
 * Suport: PBOC                          *
 * 参数1:交易信息(密钥索引1字节+交易金额4字节+终端机编号6字节)*
  *参数2:输出指针                         * 
 *****************************************/
int ICC_init_for_unload(unsigned char *transinfo,unsigned char *outbuf);

/*****************************************
 * Initialize for load(初始化圈存交易)   *
 * CLA: 80, INS: 50                      *
 * Secret and protect mode: NO           *
 * Suport: PBOC                          *

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -