OpenHarmony解读之设备认证:数据接收管理-通知对端

本文深入探讨了OpenHarmony设备认证中数据接收的处理流程,包括在解析数据后如何构造通知消息回复对端以及错误处理机制。源码分析集中在/base/security/deviceauth目录下的receive_data函数,涉及内存分配、通知消息构造和软总线模块的数据传输。
摘要由CSDN通过智能技术生成

一、概述

在HiChain本端接收数据的处理过程中:(1)在正确解析并处理完接收的数据之后,应构造相应的通知消息回复给对端。(2)在消息处理过程中会有出现错误的情况,在发现错误之后,应针对相应的错误情况通知对端,否则对端会一直处于未知状态。本文将介绍回复通知的相应过程。

二、源码分析

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

  1. receive_data函数中,出现错误会跳转到inform处,在inform阶段,首先调用函数encap_inform_message为通知消息申请内存空间,详细分析如下:
//为通知消息负载申请空间
static void encap_inform_message(int32_t error_code, struct message *send)
{
   
    if ((error_code == HC_OK) || (send->msg_code != INFORM_MESSAGE) || (send->payload != NULL)) {
   
        return;//如果错误码为0或者不等于INFORM_MESSAGE或者发送负载为空就直接返回
    }
    int32_t *err = (int32_t *)MALLOC(sizeof(int32_t));//申请内存空间
    if (err == NULL) {
   
        LOGE("Malloc for encape inform message failed");
        return;
    }

    *err = error_code;//赋值错误码
    send->payload = err;//赋值负载地址
}
  1. 紧接着执行build_send_data_by_struct函数,构造通知消息,详细分析如下:
/*
函数功能:构造结构化的发送消息
函数参数:
    message:输出参数,消息地址
    send_data:输出参数,消息有效载荷地址
    send_data_len:输出参数,消息有效载荷长度
函数返回值:
    成功:返回0
    失败:返回错误码
*/
static int32_t build_send_data_by_struct(const struct message *message, void **send_data, uint32_t *send_data_len)
{
   
    //消息构造表
    const struct make_message_map map[] = {
    {
    PAKE_REQUEST, make_pake_request },//构造pake请求消息
                                            {
    PAKE_RESPONSE, make_pake_response },//构造pake响应消息
                                            {
    PAKE_CLIENT_CONFIRM, make_pake_client_confirm },//构造pake协议客户端认证消息
                                            {
    PAKE_SERVER_CONFIRM_RESPONSE, make_pake_server_confirm },//构造pake协议服务端认证消息
                                            {
    AUTH_START_REQUEST, make_auth_start_request 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值