Linux arm系统下移植ATSHA204A驱动和应用

基于I2C的驱动:https://github.com/Tvirus/atsha204a_driver
驱动MAC验证运算的地方有点问题。slot的ID写的不对,需要修改一下。

芯片应用:参考https://blog.csdn.net/zhanghaochen_/article/details/88693749

配置流程:
注意: 芯片开始工作前要唤醒,并且延时至少2.5ms后, 芯片才能开始工作 芯片的config区和data区一旦锁定,没有办法解锁

第一步
1.在Configration Zone 进行配置,
通过对16个slotx_configration 区写入 0x80,0x80,将Configration Zone 锁住,。此配置使得data区的数据不可读。
实现秘钥存储的功能。<配置数据说明详见 atsha204配置 和 配置说明两个文档>

2.将Data 区配置成存储密钥,密钥不可读写
读取一下0x15地址的 lockconfig位 为0x00表示锁定完成
第二步, 往Data Zone 写入密钥,并锁定
注意: 在Configration Zone 锁定后,才能对Data Zone进行读写操作data区一旦锁定,没有办法解锁
通过Write Command 命令,写入预先准备好的密钥
写入完成后,读取查看 写入的数据是否正确
最后读取一下0x15地址下的lockData位 为0x00 表示锁定完成

密钥验证流程:

注意: 芯片开始工作前要唤醒,并且延时至少2.5ms后, 芯片才能开始工作

对ATSHA204A芯片的配置完成后,将DataZone配置成 密钥区(SlotX) 并且锁定后对数据不可读写。
主控MCU与芯片相连,在启动时候,首先我们要获取芯片序列号,为后面计算MAC。
进入函数
主控MCU通过RNG寄存去 让MCU产生20字节的随机数,
发送一个nonce命令给ATSHA204A,利用上面产生的20字节的随机数,让ATSHA204A 内部的产生Tempkey的值,
MCU发送MAC命令,ATSHA204A 就可以根据host_tempkey、序列号、以及秘钥计算,计算出一个摘要degest1,返回给MCU
MCU内部通过官方库计算出来一个摘要 degest2
MCU判断digest1和digest2是否匹配,不匹配将程序挂起即可

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值