📄 iccapp.h
字号:
*****************************************/
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 + -