Arm TrustZone 学习 - 0.3 向 OPTEE 添加用户自己的 TA/CA

感谢 帅峰云 博主的教程,书已购买讲的很细致:https://blog.csdn.net/shuaifengyun/article/details/71499619

感谢 技术宅阿棍儿 up主的视频,已三连投币:https://www.bilibili.com/video/av55057371/

 

上一篇搭建了 Qemu & OPTEE 的运行环境,并且运行了 ~/optee/optee_examples/hello_world 中的示例代码。

我们想向 OPTEE环境中添加自己的 TA/CA,最简单的方法当然是找示例代码作为模板,修改关键内容并且添加自己的代码段。

 

一、示例代码的目录结构

先来看下 ~/optee/optee_examples/hello_world 示例代码的目录结构:

左侧为 示例代码 hello_world的目录结构,上边为其中比较重要的文件。

host 文件夹存放的是 CA的代码,重要文件是 main.c。

ta 文件夹存放的是 TA的代码,重要文件是 hello_world_ta.c。

各个目录下都有一个 Makefile,清一色的编译套路,稍作修改即可。

 

二、复制代码

复制代码前,因为以前文件中有很多中间文件,需要先清理一下。

git clean -fx

之后翻看了下 host 和 ta 的文件,少了很多以前的中间文件。

创建 ~/optee/optee_examples/mytest 文件夹,将 hello_world 中的文件都复制过来。

使用 Vscode  -  文件  -  打开文件夹  - ,进入这个工作目录。

 

三、编辑文件,替换代码内容

./host/main.c:

main.c 中主要的内容有:

res = TEEC_InitializeContext(NULL, &ctx);

res = TEEC_OpenSession(&ctx, &sess, &uuid,
                   TEEC_LOGIN_PUBLIC, NULL, NULL, &err_origin);

res = TEEC_InvokeCommand(&sess, TA_HELLO_WORLD_CMD_INC_VALUE, &op,
                 &err_origin);

TEEC_CloseSession(&sess);

TEEC_FinalizeContext(&ctx);

我们对如下进行修改,先是 CTRL + F 搜索 hello,然后将 hello world 改为 mytest,大写同理。

36 44 53 82 86 行有改动,三处注释三处代码。

 

./host/Makefile:

没什么改动,只需要改下输出可执行文件名称。

 

./ta/include/hello_world_ta.h:

将 ./ta/include/hello_world_ta.h 重命名为 mytest_ta.h

依然是 CTRL + F 搜索 hello,然后将 hello world 改为 mytest,大写同理。

然后修改 UUID,按照注释的提示,UUID生成器链接:http://www.itu.int/ITU-T/asn1/uuid.html

上边的链接打开很慢,最后还是要跳转到这个链接,这个打开很快:https://www.uuidgenerator.net/

7c07d8be-244a-4491-8f26-0d1d8f2dd4e7

复制,对照着修改。使用网页生成器生成的 UUID能保证唯一性,不会与别人发布的冲突

UUID可以自行随意修改,但如果需要发布,可能会与他人的造成冲突。只能用于本地个人测试。

 

./ta/sub.mk:

将指定的源文件,改为 mytest_ta.c。

 

./ta/hello_world_ta.c:

将 ./ta/hello_world_ta.c 重命名为 mytest_ta.c

继续 CTRL + F 搜索 hello,然后将 hello world 改为 mytest,大写同理。

找到 static TEE_Result inc_value ,修改运算逻辑。

 

./ta/Makefile:

修改 UUID

 

./ta/user_ta_header_defines.h:

头文件、和UUID宏的名称

下面第 45行的内容暂且先不要修改。

 

四、将此文件夹添加进编译列表中

修改 ~/optee/optee_examples/Makefile,把 mytest 添加进去。Esc,:wq 保存退出。

 

五、编译 运行

回到目录  ~/optee/build  下。

make run

c回车

optee_hello_world

optee_mytest

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章