Android IdentityCredential(身份凭证)二

简介: Android IdentityCredential(身份凭证)二

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实现的时候,需要考虑使用数组或者动态内存申请的方式来实现。


相关文章
|
9月前
|
编译器 API Android开发
Android IdentityCredential(身份凭证)一
Android IdentityCredential(身份凭证)一
|
4天前
|
设计模式 算法 前端开发
Android面经分享,失业两个月,五一节前拿到Offer,设计思想与代码质量优化+程序性能优化+开发效率优化
Android面经分享,失业两个月,五一节前拿到Offer,设计思想与代码质量优化+程序性能优化+开发效率优化
|
3天前
|
编解码 数据库 Android开发
安卓应用开发:打造高效用户界面的五大技巧
【5月更文挑战第18天】在竞争激烈的应用市场中,一个流畅且直观的用户界面(UI)对于安卓应用的成功至关重要。本文将探讨五种提升安卓应用用户界面性能的技巧,包括合理布局设计、优化资源使用、利用硬件加速、内存管理以及响应式编程。通过这些方法,开发者可以创建出既美观又高效的应用体验,从而吸引和保留用户。
|
4天前
|
XML Android开发 数据格式
ConstraintLayout 2,Android高级开发面试
ConstraintLayout 2,Android高级开发面试
|
1天前
|
搜索推荐 API Android开发
安卓应用开发:打造高效通知管理系统
【5月更文挑战第20天】在移动设备中,通知管理是用户体验的关键部分。一个高效的通知系统不仅能够及时传达重要信息,还能避免用户感到不必要的干扰。本文将深入探讨如何在安卓平台上开发一个高效的通知管理系统,包括通知的设计、发送策略以及用户的个性化设置。通过分析安卓系统的通知机制和最新的API特性,我们将提供一个实用的开发指南,帮助开发者创建更加智能和用户友好的通知体验。
|
4天前
|
JSON Android开发 数据格式
Android框架-Google官方Gson解析,android开发实验报告总结
Android框架-Google官方Gson解析,android开发实验报告总结
|
4天前
|
前端开发 Android开发
Android架构组件JetPack之DataBinding玩转MVVM开发实战(四)
Android架构组件JetPack之DataBinding玩转MVVM开发实战(四)
Android架构组件JetPack之DataBinding玩转MVVM开发实战(四)
|
4天前
|
安全 Linux Android开发
Android最强保活黑科技的最强技术实现,2024年最新阿里资深Android开发带你搞懂Framework
Android最强保活黑科技的最强技术实现,2024年最新阿里资深Android开发带你搞懂Framework
Android最强保活黑科技的最强技术实现,2024年最新阿里资深Android开发带你搞懂Framework
|
4天前
|
算法 前端开发 Android开发
Android文字基线Baseline算法的使用讲解,Android开发面试题
Android文字基线Baseline算法的使用讲解,Android开发面试题
Android文字基线Baseline算法的使用讲解,Android开发面试题
|
4天前
|
缓存 Android开发
Android插件化——高手必备的Hook技术,零基础开发android
Android插件化——高手必备的Hook技术,零基础开发android