赞
踩
ATSHA204含有一个EEPROM 和 一个 SRAM
EEPROM :包含
1个 Data Zone(512Bytes) :一般用来存储密钥的
1个 configration Zone(88Bytes) :
用来设置Data区中的数据使用的方法:
1)作为密钥使用 还是简单的数据,作为密钥是否可读可写 是明文读写 还是 加密读写 使用的次数
2)存储有9位的芯片唯一序列号
3)对OTP区的使用模式
3)configration Zone 和 Data Zone 锁住的控的控制位
1个OTP Zone
ATSHA204在使用:
首先,要对配置区进行配置目的:规定好密钥的使用方式和存储地点,和最后验证的MAC的方式
然后,然后将密钥写入Data区中指定的位置
最后,通过官方提供的库里面的MAC验证命令,进行密钥的验证
各个区的配置条件:
官方提供的库里面有一个执行各种命令的函数:
uint8_t sha204m_execute(uint8_t op_code, uint8_t param1, uint16_t param2,
uint8_t datalen1 , uint8_t *data1, uint8_t datalen2, uint8_t *data2, uint8_t datalen3, uint8_t *data3,
uint8_t tx_size, uint8_t *tx_buffer, uint8_t rx_size, uint8_t *rx_buffer)
以下参数的具体值 需要参看数据手册没有 明确的介绍
uint8_t op_code:命令码 uint8_t param1 :命令对应的第一个参数 uint16_t param2:命令对应的第二个参数
uint8_t datalen1 , uint8_t *data1 :完成命令需要发送的数据 长度 和指向数据的指针 没有 可以 填写 0x00 , 0x00
uint8_t datalen2 , uint8_t *data2 :完成命令需要发送的数据 长度 和指向数据的指针 没有 可以 填写 0x00 , 0x00
uint8_t datalen3 , uint8_t *data3:完成命令需要发送的数据 长度 和指向数据的指针 没有 可以 填写 0x00 , 0x00
uint8_t tx_size, uint8_t *tx_buffer :需要发送数据的长度 和指向数据的指针 以上参数的集合
uint8_t rx_size, uint8_t *rx_buffer:命令执行完,返回的数据
配置流程:
注意: 芯片开始工作前要唤醒,并且延时至少2.5ms后, 芯片才能开始工作
芯片的config区和data区一旦锁定,没有办法解锁
第一步
在Configration Zone 进行配置,(详细的说明参看配置说明,这里只对代码进行说明)
通过对16个slotx_configration 区写入 0x80,0x80,
<配置数据说明详见 atsha204配置 和 配置说明两个文档>
将Data Zone配置成存储密钥,密 钥不可读写
第二步, 往Data Zone 写入密钥
注意: 在Configration Zone 锁定后,才能对Data Zone进行读写操作
data区一旦锁定,没有办法解锁
密钥验证流程:
注意: 芯片开始工作前要唤醒,并且延时至少2.5ms后, 芯片才能开始工作
主控MCU通过RNG寄存去 让MCU产生20字节的随机数,
MCU判断digest1和digest2是否匹配,不匹配将程序挂起即可
关于配置可以参考博客:https://blog.csdn.net/a5882230/article/details/52214845
关于使用可以参考博客:https://blog.csdn.net/u013216061/article/details/79159682
关于MAC校验可以参考博客:https://www.cnblogs.com/hjw91blog/articles/7918802.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。