OpenHarmony解读之设备认证:数据接收管理-消息处理(2)

一、概述本文将继续介绍HiChain本端接收数据的处理过程中的消息处理阶段的剩余内容。二、源码分析这一模块的源码位于:/base/security/deviceauth。检查消息为系统可支持并合法之后,调用build_object函数构建HiChain子对象,具体分析如下:/*函数功能:构建HiChain子对象函数参数: hichain:HiChain实例 modular:消息模块类型 is_client:是否是client params:构建参数函数返回
摘要由CSDN通过智能技术生成

一、概述

本文将继续介绍HiChain本端接收数据的处理过程中的消息处理阶段的剩余内容。

二、源码分析

这一模块的源码位于:/base/security/deviceauth。

  1. 检查消息为系统可支持并合法之后,调用build_object函数构建HiChain子对象,具体分析如下:
/*
函数功能:构建HiChain子对象
函数参数:
    hichain:HiChain实例
    modular:消息模块类型
    is_client:是否是client
    params:构建参数
函数返回值:
    成功:返回0 HC_OK
    失败:返回错误码
详细:
*/
int32_t build_object(struct hichain *hichain, int32_t modular, bool is_client, const void *params)
{
   
    //初始化HC对象表map
    const struct object_map map[] = {
    {
    PAKE_MODULAR, true, (void **)&hichain->pake_client },//pake客户端
                                      {
    PAKE_MODULAR, false, (void **)&hichain->pake_server },//pake服务端
                                      {
    STS_MODULAR, true, (void **)&hichain->sts_client },//sts客户端
                                      {
    STS_MODULAR, false, (void **)&hichain->sts_server },//sts服务端
                                      {
    ADD_MODULAR, true, (void **)&hichain->auth_info },//认证信息
                                      {
    REMOVE_MODULAR, true, (void **)&hichain->auth_info },//认证信息
                                      {
    SEC_CLONE_MODULAR, false, (void **)&hichain->sec_clone_server } };//安全克隆服务端
    void **object = get_object(map, sizeof(map) / sizeof(map[0]), modular, is_client);//根据消息模块类型获取HC对象
    if ((object == NULL) || (*object != NULL)) {
   //获取失败
        DBG_OUT("No sub-objects need to be applied for");
        return HC_OK;
    }
    if (check_mutex_object_is_null(map, sizeof(map) / sizeof(map[0]), modular, is_client) == false) {
   //检查互斥对象是否为空???
        LOGE("The mutex sub-object have been created, create %d:%d sub-object failed", modular, is_client);
        return HC_REPEATED_REFERENCE;
    }
    if (check_depend_object_is_not_null(map, sizeof(map) / sizeof(map[0]), modular, is_client) == false) {
   //检查依赖对象是否为非空???
        LOGE("The depend sub-object is not created, create %d:%d sub-object failed", modular, is_client);
        return HC_NEED_DEPEND;
    }
    *object = build_object_by_modular(hichain, modular, is_client, params);//根据消息模块类型构建子对象
    if
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值