一、概述
在OpenHarmony中,设备认证模块作为安全子系统的子模块,负责设备间可信关系的建立、维护、使用、撤销等全生命周期的管理,实现可信设备间的互信认证和安全会话密钥协商,是搭载OpenHarmony的设备进行可信互联的基础平台能力。
在上一篇博客OpenHarmony深度解读之分布式软总线:HiChain机制部分源码解析中提到,HiChain机制是OpenHarmony实现设备互联安全的一种协议机制,接下来的博客将沿着之前的逻辑接着往下分析,重点针对本端接收到的数据包进行更进一步的解析,即进入到真正的设备认证模块的消息解析。在之前进行数据包字段解析之后,字段Module的值在MODULE_HICHAIN到MODULE_AUTH_SDK之间时,将会进入到HiChain机制处理阶段,本文重点介绍HiChain实例的获取阶段,即设备认证的准备阶段。
二、源码分析
这一模块的源码位于:/base/security/deviceauth。
1. HiChain实例的获取主要是在hichain.c文件的get_instance函数中实现的,下面我们一起来详细分析一下这个函数:
/*
函数功能:获取hichain实例
函数参数:
identity:会话基本信息
type:hichain设备类型
call_back:hichain回调函数
函数返回值:
成功:返回hichain结构体地址
失败:返回NULL
*/
DLL_API_PUBLIC hc_handle get_instance(const struct session_identity *identity, enum hc_type type,
const struct hc_call_back *call_back)
{
LOGI("Begin get instance");
if (check_identity(identity) != HC_OK) {
//检查hc的基本信息是否符合规范
LOGE("Identity error");
return NULL;
}
if (check_call_back(call_back) != HC_OK) {
//检查callback结构体的函数指针是否为空
LOGE("Call back error");
return NULL;
}
#if !(defined(_CUT_STS_) || defined(_CUT_STS_SERVER_) || defined(_CUT_EXCHANGE_) || defined(_CUT_EXCHANGE_SERVER_