本帖最后由 数码小叶 于 2020-7-22 10:59 编辑
这个耗了两天的时间,主要开始的时候没有准确认识到一点“在线 ECDSA 授权的硬件端 SDK 同 ICWKEY 的 SDK, 只不过服务器在线授权是远程服务器授权方式, ICWKEY 是本地方式, 两者各有优势。”没有发现和ICWKEY授权的关系,于是只按照在线授权章节移植,移植的时候,缺哪个函数去找哪个、补哪个,最后才发现是基于ICWKEY的SDK开发的,虽然走了弯路,但是加深了很大的映像。
尝试了无数次烧写,这是这次试用中,折腾最久的。
弄在线授权的过程,实际也是体验了一次远程烧录。首先要注册一个账号
注册号账号,才能扮演开发者后购买者。
然后以开发者身份进入授权中心
可以看到算法和项目两个列表
然后新建一个算法和一个项目,新建算法的时候,那个公钥后面要用到,可以直接复制一下,下载按键下下来的是.cert文件,二进制的,不方便编辑,直接复制可以方便很多。
这个flash写入地址也要复制下来,过会能用上。
接下来就需要一个工程了,本来是按照在线授权那一章操作的,现在发现简单多了,直接使用SDK文件,添加到keil里就行了,主要是sissdk文件夹,其中mbedtls可以单独建立一项,里面的文件全部包含,手册里有介绍:“mbedtls 为 arm 开发的轻量级加密库, 这是一个跨平台的加密库, 并且拥有极高的性能, 这里是 power writer 采用此加密库用于项目开发的首选加密库,”。
要是在之前的基础上用以前的过程,实际会有很多冲突的地方,比如重复定义,地址冲突,定义冲突等,虽然修改也不麻烦,但是费事,所以最好新建一个工程。
添加头文件搜索路径,最好使用相对地址,避免后面移动带来的麻烦
把刚才复制的公钥复制到cortex_chipid_binding_ecdsa.c文件中,替换原来的公钥
以及修改刚才网页上新建项目时填的flash写入地址
这会烧写进去会提示全部失败
还有一点要改的,就是cortex_chipid_binding_ecdsa.h里的UID_CHIP_ADDR_ECDSA,开始就是没注意到这点,以为在cortex_chipid_binding里定义过了,结果各种修改,各种验证不通过
这个值和具体的芯片有关,开始没注意到这点,经技术人员指点,才发现,这个值在参考手册里Unique device ID register章节写明
最后一点,把堆空间扩大,因为据说据说用到了malloc函数申请动态内存,这个自己没找到,不过为了保险,还是扩大了
然后就是按照之前的体验那样,将工程用PowerWrite打包成.PKG工程,就一点,这里选择在线还是离线的区别,选在线就是一个在线验证,选离线,既包含在线也包含了离线
打包完成后,再回到刚才的创新工坊,我是开发者,软件中心,程序发布
所有的按照要求填写即可,很方便。就是这里的指定对象,居然是必须填写的,感觉可以没必要强制。(后来想了想,这一项以及其他选项,确实不能做成自由的,一定得是发布后不能更改项,不然就存在交易的不可靠性了)。这里先把自己的号填上。再在电脑上安装创新工坊客户端,登录刚才注册的账户
勾选需要烧写的项目,每次烧写前会提示剩余次数,这块做的比较好,实际次数是在烧写成功后才减的。总共烧写失败了大概七八次。
失败N次,最后打印出双验证通过
这一次操作还碰到一个问题,就是用PowerWriter烧写的时候,偶然的七八次写入报错,基本都是写入在0x802XXXX到0x804XXXX之间报错,不知道是不是和芯片有关,还是擦除不彻底,亦或是在PowerWriter和创新工坊客户端之间来回烧录造成的。
另外一小问题就是Power Writer用户手册里的外部链接都打不开,提示“{"errCode":1,"errMsg":"\u672a\u767b\u5f55"}”,比如
对比发现和实际能打开的网址不一致,可能后期网站做了调整,手册还没调整过来。
|