关于OP-TEE代码中对UUID的设置导致编译出错

在一个完整的optee程序中,一共多处需设置uuid,具体数量可能根据你所在的运行设备有关系;
文中简要介绍,几处设置UUID的位置、作用、及设置错误引发的异常。

CA

ca的.h文件
在ca中需要设置UUID,通常如下:

#define CRYPTO_VERIFY_UUID_ID {0x3ae0f4b5, 0x7e33, 0x4ad2, \
                                  {
    
     \
                                      0x98, 0x02, 0xe6, 0x4f, 0x2a, 0x7c, 0xc2, 0x0c \
                                  } \
                              }

使用变量svc_id赋值为uuid的值

TEEC_UUID svc_id = CRYPTO_VERIFY_UUID_ID;

打开会话的时候,需要用到该值,uuid是ta和ca沟通的桥梁。

result = TEEC_OpenSession(&g_TaskContext, session, &svc_id, 
                                TEEC_LOGIN_PUBLIC, NULL, NULL, &origin);

如果 设置出错,则会报错:

InitializeContext success
ERR [610] TEES:load_ta:273:   TA not found
OpenSession failed, ReturnCode=0xffff0008, ReturnOrigin=0x3

ca和ta通信,通过调用load_ta函数来实现的,该函数定义在tee_supplicant.c文件中;
从ta_dir变量指定的目录中查找与UUID相符的TA镜像,并将其内容读取到共享内存中

size = shm_ta.size;	
ta_found = TEECI_LoadSecureModule(ta_dir, &uuid, shm_ta.buffer, &size);
if (ta_found != TA_BINARY_FOUND)
 {		
	 EMSG("  TA not found");		
	return TEEC_ERROR_ITEM_NOT_FOUND;
}

TA

TA的android.mk中

local_module := 3ae0f4b5-7e33-4ad2-9802-e64f2a7cc20c.ta

TA的makefile中

# The UUID for the Trusted Application
BINARY=3ae0f4b5-7e33-4ad2-9802-e64f2a7cc20c

TA的 .h中,这个具体看代码

/* Define the UUID of this TA */
#define TA_MY_CRYPTO_VERIFY_UUID    {0x3ae0f4b5, 0x7e33, 0x4ad2, \
                                        {
    
     \
                                            0x98, 0x02, 0xe6, 0x4f, 0x2a, 0x7c, 0xc2, 0x0c \
                                        } \
                                    }

如果配置出问题,报如下错误

InitializeContext success
OpenSession failed, ReturnCode=0xffff000f, ReturnOrigin=0x3

猜你喜欢

转载自blog.csdn.net/u013921164/article/details/112346548