Android IdentityCredential(身份凭证)二

2023-11-16

IC TA代码调试

static const uint8_t hbkTest[16] = {0};
// hbkReal需要对接到具体系统中的API,该密钥需要具备每台设备唯一的特性,而且每次开机都需要保持不变
static const uint8_t hbkReal[16] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};***

const uint8_t* eicOpsGetHardwareBoundKey(bool testCredential) {
    if (testCredential) {
        return hbkTest;
    }
    return hbkReal;
}
//challenge: gatekeeper的token传入的;
//secureUserId: gatekeeper的token传入的;
//authenticatorId: gatekeeper的token传入的;没有被反序
//timeStamp: gatekeeper的token传入的;没有反序
//mac: gatekeeper的token传入的;
//注意计算与对比mac的时候,需要保证gatekeeper模块的hmac key与此模块相同,
//并保证timeStap,authenticatorId,authenticatorType是否反序与gatekeeper模块保持一致;

//verificationTokenChallenge: IC模块产生,传入keymaster,
//verificationTokenTimeStamp, keymaster模块产生;
//verificationTokenSecurityLevel: keymaster模块产生;
// verificationTokenMac: keymaster模块产生;

//注意:这里边的时间戳都是boot time,是开机时间,单位是ms
//此函数的实现需要验证两个token中的mac,并比较challenge
// 这个地方要不要比较两个token中的timestap,目前不确定?
bool eicOpsValidateAuthToken(uint64_t challenge, uint64_t secureUserId, uint64_t authenticatorId,
                             int hardwareAuthenticatorType, uint64_t timeStamp, const uint8_t* mac,
                             size_t macSize, uint64_t verificationTokenChallenge,
                             uint64_t verificationTokenTimeStamp,
                             int verificationTokenSecurityLevel,
                             const uint8_t* verificationTokenMac, size_t verificationTokenMacSize);

IC CA代码调试

FakeSecureHardwareProxy.h文件中定义了如下静态类成员函数:
static EicPresentation ctx_;
static EicSession ctx_;
static EicProvisioning ctx_;
ctx中保存了关键的机密信息,这个部分的实现需要对接到TA中实现,防止机密信息泄露;
并且此处如果再REE实现,也会有一个并发的问题,如果多个CA调用,那么会导致ctx信息错乱,保存不住,因此这个地方换成TEE实现的时候,需要考虑使用数组或者动态内存申请的方式来实现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android IdentityCredential(身份凭证)二 的相关文章

随机推荐

  • 获取一周登陆3次以上的用户数,mysql

    select count 1 from select userId count distinct date format createTime Y m d from session user where date format create
  • PLSQL Developer连接远程数据库方式

    作者 Frank bettterMan 来源 CSDN 原文地址 https blog csdn net xintonghanchuang article details 60869189 1 直接通过IP连接 1 输入对应数据库用户名与密
  • 使用gradle创建 Java 工程

    如果显示连接超时 换网 不要用校园网 1 随便目录 在用cmd呼出终端 2 在终端输入gradle init 初始化 gradle init 2是项目 依稀记得 1是2的简化版 这里选2 我学的是java 所以3 这里选语言 三个默认 这里
  • OpenStack架构详解

    1 OpenStack概述 OpenStack既是一个社区 也是一个项目和一个开源软件 它提供了一个部署云的操作平台或工具集 其宗旨在于 帮助组织运行为虚拟计算或存储服务的云 为公有云 私有云 也为大云 小云提供可扩展的 灵活的云计算 Op
  • 【第四章】详解Feign的实现原理

    1 1 Feign概述 这篇文章主要讲述如何通过Feign去消费服务 以及Feign的实现原理的解析 Feign是Netflix开发的声明式 模板化的HTTP客户端 Feign可以帮助我们更快捷 优雅地调用HTTP API Feign是个H
  • VitePress开发记录(二)之LaTeX语法支持

    前言 当我在我的博客网站更新我的吴恩达机器学习笔记时 出现了一个情况 VitePress默认的markdown it解析器似乎无法渲染LaTeX数学公式 于是我去VitePress官方中查看issue是否有解决的方案 官方给出的解答是 这里
  • 华为OD机试真题-模拟商场优惠打折【2023Q1】

    题目内容 模拟商场优惠打折 有三种优惠券可以用 满减券 打折券和无门槛券 满减券 满100减10 满200减20 满300减30 满400减40 以此类推不限制使用 打折券 固定折扣92折 且打折之后向下取整 每次购物只能用1次 无门槛券
  • SpringBatch文章系列-SPL表达式的使用

    参考例子
  • 爬虫如何快速定位到加密入口

    这里有多种定位加密入口方法 通过打全局xhr断点找到加密入口 可以将在 处点击添加xhr断点 可以针对某个值进行打xhr断点 直接通过关键字找到加密入口 在前面文章讲述过https blog csdn net zhp980121 artic
  • Springboot+vue 社团管理系统(前后端分离)

    Springboot vue 社团管理系统 前后端分离 zero 项目功能设计图 一 数据库设计 项目准备 1 建表 2 表目录 二 前端编写 vue 1 搭建Vue框架 2 放入静态资源 assets文件包括static文件的静态文件 3
  • 2017 年提高组初赛

    第 6 题 1 5 分 若某算法的计算时间表示为递推关系式 T N 2 T N 2 N l o g N T N 2T N 2 NlogN T N 2T N 2 NlogN T N 2 2 T N 4 N 2 l o g N 2 2 T N
  • TencentOS-tiny 内存管理(十 二)- 动态内存

    一 内存管理 动态内存 概述 动态内存管理模块 提供了一套动态管理系统内存的机制 支持用户动态的申请 释放不定长内存块 API讲解 编程实例 1 在tos config h中 配置动态内存组件开关TOS CFG MMHEAP EN defi
  • 【Linux】进程基础

    文章目录 1 冯诺依曼体系 1 2操作系统 2 进程 2 1进程的概念 2 2 task struct 2 3进程的状态 2 4进程优先级 优先级VS权限 为何会存在优先级 Linux下的优先级相关概念 2 5其他重要概念 单道和多道程序设
  • warp shuffle实验

    实验一 shfl sync unsigned mask T var int srcLane int width warpSize mask 是参与的线程掩码 如0xffffffff var 是待广播的值 srclane 是被广播的 lane
  • gb28181抓包

    知乎一篇雄文 https zhuanlan zhihu com p 98533891 这是对照gb28181文档进行抓包的分析 nvr代理服务端 44 198 62 2 5061 44190012002000000001 代理客户端 44
  • jQuery选择器集锦(读《锋利的jQuery(第二版)》所摘)

    jQuery选择器分为基本选择器 层次选择器 过滤选择器和表单选择器 过滤选择器可以分为基本过滤 内容过滤 可见性过滤 属性过滤 子元素过滤和表单对象属性过滤选择器 input not myClass 选取class不是myClass的
  • linux 判断目录是否存在并创建

    1 用 int access const char pathname int mode 判断有没有此文件或目录 它区别不出这是文件还是目录 2 用 int stat const char file name struct stat buf
  • 计算机网络模型

    计算机网络OSI模型 Open Systems Interconnection model 是一种概念模型 它表征并标准化电信或计算系统的通信功能 而不考虑其基础内部结构和技术 其目标是多种通信系统与标准协议的互操作性 该模型将通信系统划分
  • Java从FTP下载文件到本地前端+后端

    一 前端 1 首先创建下载文件按钮
  • Android IdentityCredential(身份凭证)二

    IC TA代码调试 static const uint8 t hbkTest 16 0 hbkReal需要对接到具体系统中的API 该密钥需要具备每台设备唯一的特性 而且每次开机都需要保持不变 static const uint8 t hb