问题解决了。
我今天看到了 v833 的 Tina_Linux_Secure_Development_Guide.pdf 文档,里面有 TA 使用 SSK 加密的案例,查看了tina相关的代码,有一个sign.py,看了下,确认了加密引擎确实是使用原始SSK加密的,没有做什么黑盒变换。
那特么为什么我自己写的bootloader在调用CE使用ssk加密的结果异常呢?
想来optee肯定有相关的接口,找了下也就是
#define TEESMC_SSK_ENCRYPT 0
#define TEESMC_SSK_DECRYPT 3
由于optee是闭源的,只能拿IDA逆了一下看他是怎么做的。
发现了一个奇怪的事情,既然CE是使用SSK作为key,那代码里为什么要申请一个 256 字节的keyBuf呢?
然后我试着在我的bootloader里面,给 task desc 的 key 指向了一个 256 字节的缓冲,果然OK了!!!