TEE(可信执行环境)用户空间 API

include/uapi/linux/tee.h 定义了到 TEE 的通用接口。

用户空间(客户端)通过打开 /dev/tee[0-9]* 或 /dev/teepriv[0-9]* 连接到驱动程序。

  • TEE_IOC_SHM_ALLOC 分配共享内存并返回一个文件描述符,用户空间可以使用 mmap 进行映射。当用户空间不再需要文件描述符时,应该将其关闭。当不再需要共享内存时,应该使用 munmap() 取消映射,以便重用内存。

  • TEE_IOC_VERSION 让用户空间知道此驱动程序处理哪个 TEE 及其功能。

  • TEE_IOC_OPEN_SESSION 打开到可信应用程序的新会话。

  • TEE_IOC_INVOKE 调用可信应用程序中的函数。

  • TEE_IOC_CANCEL 可能会取消正在进行的 TEE_IOC_OPEN_SESSION 或 TEE_IOC_INVOKE。

  • TEE_IOC_CLOSE_SESSION 关闭到可信应用程序的会话。

客户端有两种类型:普通客户端和请求者。后者是 TEE 的辅助进程,用于访问 Linux 中的资源,例如文件系统访问。普通客户端打开 /dev/tee[0-9]*,请求者打开 /dev/teepriv[0-9]。

客户端和 TEE 之间的大部分通信对于驱动程序是不透明的。驱动程序的主要工作是接收来自客户端的请求,将其转发到 TEE 并发回结果。在请求者的情况下,通信方向相反,TEE 向请求者发送请求,然后请求者发回结果。