概况和背景: 在optee SDK中使用GP标准接口开发的TA,移植到Trustonic-TEE上,编译报错了。rootcause:我开发的TA是参考optee_example repository的,这里的代码使用的是GP internal API 1.1,而Trustonic-TEE的SDK已经更新到了GP internal API 1.2.1. 恰好在这两个版本之间TEE_ObjectInfo结构体发生了变化…

详细信息如下

在使用GP接口编写的Crypto代码,在optee3.12编译通过,将其TA代码移植到Trustonic-TEE上后编译报错,错误信息如下:

Locals/Code/gp.c:363:55: error: 'TEE_ObjectInfo' {aka 'struct <anonymous>'} has no member named 'keySize'; did you mean 'dataSize'?res = TEE_AllocateOperation(&op, alg, mode, key_info.keySize);

代码如下:

 TEE_ObjectInfo key_info;res = TEE_GetObjectInfo1(key, &key_info);if (res) {EMSG("%s : error! res = 0x%x", __func__, res);return res;}res = TEE_AllocateOperation(&op, alg, mode, key_info.keySize);if (res) {EMSG("%s : error! res = 0x%x", __func__, res);return res;}

究其原因,是因为在optee3.12中,目前使用的还是1.1 spec

typedef struct {uint32_t objectType;__extension__ union {uint32_t keySize;       /* used in 1.1 spec */uint32_t objectSize;    /* used in 1.1.1 spec */};__extension__ union {uint32_t maxKeySize;    /* used in 1.1 spec */uint32_t maxObjectSize; /* used in 1.1.1 spec */};uint32_t objectUsage;uint32_t dataSize;uint32_t dataPosition;uint32_t handleFlags;
} TEE_ObjectInfo;

而在Trustonic-TEE中,该结构体使用了和GP TEE Internal Core API Specification版本到Version 1.2.1(2019)版本中一致的数据类型

typedef struct {uint32_t objectType;uint32_t objectSize;uint32_t maxObjectSize;uint32_t objectUsage;size_t dataSize;size_t dataPosition;uint32_t handleFlags;
} TEE_ObjectInfo;

最终的修改方案:将key_info.keySize改成key_info.objectSize

GP TEE_ObjectInfo结构体在不同的版本之间的变化相关推荐

  1. php各版本之间的变化,[发泄贴] 原来 PHP 每一个子版本都是不同的语言……

    PHP初学,把自己的代码部署到了一个叫做id666的免费空间,PHP版本是5.2.9 因为不想关心错误代码,于是自己封装了一个mysqli函数(我不是很懂PHP下类使用以及PDO--) 叫做safe_ ...

  2. 【Qt】信号和槽传递自定义结构体

    一.使用信号和槽传递自定义结构体 这是一个老问题了,但是每次使用都要bing,因此做个笔记整理下. 一共有三种方法,可以让结构体在信号和槽之间传递.前两种方法可以让结构体在线程之间传递,最后一种方法只 ...

  3. linux存储--文件描述符fd与FILE结构体(二)

    文件描述符fd 对于linux而言,所有对设备(对于linux而言,一切皆文件)和文件的操作都使用文件描述符来进行的. 文件描述符是一个非负的整数,它是一个索引值,指向内核中每个进程打开文件的记录表. ...

  4. c语言结构体与共同体课件,《结构体与共同体》PPT课件.ppt

    <<结构体与共同体>PPT课件.ppt>由会员分享,可在线阅读,更多相关<<结构体与共同体>PPT课件.ppt(44页珍藏版)>请在装配图网上搜索. 1 ...

  5. c++ 数组 结构体

    接下来的一点时间我将会记录下我看的c++的一些心得体会,人贵在坚持,希望我可以一直坚持下去!!Go Fighting! 一.c++复合数据类型: 数组类型的一些注意事项: sizeof的用法: 当用在 ...

  6. [C++]试一试结构体struct node的构造函数

    可直接点击跳转到构造函数处 结构体概念 定义结构体 定义结构体及结构体变量 结构体变量的特点 成员调用 成员函数调用 结构体的构造函数 Upd1 Upd2 Upd3 结构体概念 在实际问题中,一组数据 ...

  7. FFmpeg源代码简单分析:结构体成员管理系统-AVClass

    ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...

  8. 小小的区分枚举与结构体

    参考洋桃电子老师讲的,添加了自己的理解 目录 一.枚举 1.枚举的定义 2.理解枚举 3.枚举在C语言中的使用格式 4.枚举的注意事项 4.枚举与数组的区别 二.结构体 1.结构体与枚举和数组之间的区 ...

  9. 结构体与共同体(联合体)的妙用

    结构体与共同体(联合体)的妙用 学习过C语言后,大家都了解了结构体与共同体.两者之间的区别是: 共同体:使几个不同类型的变量共占一段内存(相互覆盖).所占内存长度是各最长的成员占的内存长度. 结构体: ...

最新文章

  1. 讲座记录:从码农到架构师(精简版)
  2. Windows Server 2008 SVN 配置
  3. 融资 6 亿元后,端点科技将致力于类SaaS化软件服务
  4. idea的jsp如何显示语法高亮_如何啃下Python学习中的三块硬骨头?
  5. 《唐人街探案3》回归春节档,2021大年初一上映!
  6. spark学习-42-Spark的driver理解和executor理解
  7. MySQL删除重复数据实例
  8. SpringCloud视频教程 百度云盘
  9. android自动画廊,Android3D画廊效果与自动轮播Banner
  10. 渥太华大学计算机科学,加拿大渥太华大学计算机科学排名第四
  11. 吃透Kafka六:topic 创建过程
  12. 手机测试软件对手机有影响吗,智能手机测试软件的猫腻
  13. Flutter 苹果原生拼音键盘在TextField上输入异常 | 拼音输入过程回调问题
  14. vue项目,解决IE浏览器报Promise未定义的错误
  15. C++中的常函数和常对象
  16. 前端面试题 Doctype作用是什么?严格模式与混杂模式如何区分?他们之间有何意义?
  17. JDK自带JVM工具
  18. 图表插件 - chart.js (柱状图) 学习总结
  19. 全球与中国网络性能监控工具市场现状及未来发展趋势
  20. 《自学是门手艺活》读后感

热门文章

  1. 组织应该采用集中式发电机吗?
  2. 解决方案:无源(PON)光网络在弱电工程中的应用
  3. 轻松智能的数据中心冷却节能方法
  4. python同步锁和互斥锁的区别_Python实现的多线程同步与互斥锁功能示例
  5. BC:带你温习并解读《中国区块链技术和应用发展白皮书》—概述
  6. NOI Day1线上同步赛梦游记
  7. hive使用derby的服务模式(可以远程模式)
  8. js中如何通过身份证号计算出生日期和年龄
  9. ios学习——键盘的收起
  10. # 20155337 2017-2018-1 《信息安全系统设计基础》第一周学习总结