OpenHarmony深度解读之分布式软总线:authmanager模块(4)/设备身份认证过程

本文深入探讨了OpenHarmony的authmanager模块在设备身份认证中的作用,详细分析了源码,特别是在`OnDataReceived()`和`DecryptMessage()`函数中的处理过程,以及根据数据包类型在`OnModuleMessageReceived()`中的不同操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概述

authmanager模块是鸿蒙为设备提供认证机制的模块。模块内的主要处理过程包括报文的接收、解密、再次封装、加密、发送的步骤。本文将继续介绍设备身份认证过程的细节。

二、源码分析

本文源代码主要是位于wifi_auth_manager.c文件中。

  1. 在函数 OnDataReceived() 中处理认证协议数据包负载部分。
/*
函数功能:处理接收到的认证协议数据包数据负载部分
函数参数:
    conn:认证设备连接信息结构体
    pkt:认证协议数据包头部结构体的地址
    data:数据负载部分的起始地址
函数返回值:无
详细:
*/
static void OnDataReceived(AuthConn *conn, const Packet *pkt, const char *data)
{
   
    SOFTBUS_PRINT("[AUTH] OnDataReceived\n");
    //如果module字段为MODULE_AUTH_SDK,则调用AuthInterfaceOnDataReceived继续进行处理。这里没有直接用==,是为了可扩展性
    if ((pkt->module > MODULE_HICHAIN) && (pkt->module <= MODULE_AUTH_SDK)) {
   
    	//若数据包类型为MODULE_AUTH_SDK,表示对端请求创建设备身份认证环境(暂定)
        AuthInterfaceOnDataReceived(conn, pkt->module, pkt->seq, data, pkt->dataLen);
        return;
    }
	//解密消息,返回cJSON结构体格式的数据
    cJSON *msg = DecryptMessage(pkt->module, data, pkt->dataLen);
    if (msg == NULL) {
   
        SOFTBUS_PRINT("[AUTH] OnDataReceived DecryptMessage fail\n");
        return;
    }
	//根据数据包类型字段module,对接收到的cJSON数据选择不同的处理方式
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值