ATSHA204加密认证过程
1、sha204_wakeup(wakeup_response) //唤醒
→ 1)chip_wakeup() //wake token 0x00(唤醒标志)
2)sha204_receive_response(0x4, response)
→ 1)chip_sendbyte(FLAG_CLIENT_TRANSMIT) //transmit 0x88(内容发送标志)
2)chip_receive_bytes(size, response) //接收响应
2、sha204m_random(Random_command,random_data,1) //产生随机数
→ 1)sha204c_send_and_receive(&tx_buffer[0], 35, &rx_buffer[0], RANDOM_DELAY)
→ 1)sha204_calculate_crc(count_minus_crc, tx_buffer, tx_buffer + count_minus_crc) //计算发送信息的校验码,并置于消息的最后两位
2)sha204_send_command(count, tx_buffer) //command 0x77 写内容标志,后面接内容,即产生随机数(包含0x16 随机数产生指令)
3)sha204_receive_response(rx_size, rx_buffer)
→ 1)chip_sendbyte(FLAG_CLIENT_TRANSMIT) //transmit 0x88(内容发送标志)
2)chip_receive_bytes(size, response) //接收响应
4)sha204c_check_crc(rx_buffer) //检测校验码
3、sha204m_mac(u8 *tx_buffer, u8 *rx_buffer,u8 mode, u16 key_id, u8 *challenge) //生成mac码
→ 1)sha204c_send_and_receive(&tx_buffer[0], 35, &rx_buffer[0],MAC_DELAY)
→ 1)sha204_calculate_crc(count_minus_crc, tx_buffer, tx_buffer + count_minus_crc) //计算校验码
2)sha204_send_command(count, tx_buffer) //command 0x77 写内容标志,后面接内容,即产生mac码(包含0x08 mac产生指令)
3) sha204_receive_response(rx_size, rx_buffer)
→ 1)chip_sendbyte(FLAG_CLIENT_TRANSMIT) //transmit 0x88(内容发送标志)
2)chip_receive_bytes(size, response) //接收响应
4)sha204c_check_crc(rx_buffer) //检测校验码
4、sha204e_read_serial_number(serial_cmmand,serial_number) //读取芯片的唯一序列号
→ 1) sha204m_read(tx_buffer, rx_buffer, SHA204_ZONE_COUNT_FLAG | SHA204_ZONE_CONFIG, 0)
→ 1)sha204c_send_and_receive(&tx_buffer[0], rx_size, &rx_buffer[0],READ_DELAY)
→ 1)sha204_calculate_crc(count_minus_crc, tx_buffer, tx_buffer + count_minus_crc) //计算校验码
2)sha204_send_command(count, tx_buffer) //command 0x77 写内容标志,后面接内容,即读取序列号(包含0x02 read命令)
3) sha204_receive_response(rx_size, rx_buffer) //接收响应
4)sha204c_check_crc(rx_buffer) //检测校验码
5、sha204_GenMac(u16 KeyID,u8 *Key,u8 *Challenge, u8 Mode, u8 *MAC,u8 *sn) //在本机生成genmac码
6、比对mac和genmac