OpenHarmony源码分析之分布式软总线:authmanager/auth_conn.h

一、概述

该头文件定义了与设备认证连接相关的接口、宏和结构体,本文将对其深刻含义进行介绍。

二、源码分析

auth_conn.h

arduino 复制代码
/*
 * Copyright (c) 2020 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#ifndef LITE_AUTH_CONN_H
#define LITE_AUTH_CONN_H
#include "cJSON.h"
#include "common_info_manager.h"
#include "comm_defs.h"
#define MESSAGE_INDEX_LEN 4     //消息索引长度
#define MESSAGE_GCM_NONCE_LEN 12    //GCM加密的消息的NONCE长度
#define MESSAGE_GCM_MAC_LEN 16      //GCM加密的消息的MAC长度
#define MESSAGE_ENCRYPT_OVER_HEAD_LEN (MESSAGE_INDEX_LEN + MESSAGE_GCM_NONCE_LEN + MESSAGE_GCM_MAC_LEN)     //GCM加密的消息的头部长度
#define DEFAULT_BUF_SIZE 1536   //默认缓冲区大小
#define PACKET_HEAD_SIZE 24     //认证协议数据包头部长度
#define PACKET_DATA_SIZE (DEFAULT_BUF_SIZE - PACKET_HEAD_SIZE)
#define PKG_HEADER_IDENTIFIER 0xBABEFACE    //数据包标识号
#define ONLINE_UNKNOWN 0    //未知状态设备
#define ONLINE_YES 1        //在线设备
#define ONLINE_NO (-1)      //离线设备
/*数据包类型*/
#define MODULE_NONE 0
#define MODULE_TRUST_ENGINE 1   //可信设备
#define MODULE_HICHAIN 2
#define MODULE_AUTH_SDK 3       //待认证设备
#define MODULE_HICHAIN_SYNC 4
#define MODULE_CONNECTION 5     //验证IP和设备id
#define MODULE_SESSION 6
#define MODULE_SMART_COMM 7
#define MODULE_AUTH_CHANNEL 8
#define MODULE_AUTH_MSG 9
#define FLAG_REPLY 1    //表示回复消息
#define AUTH_UNKNOWN 0  
#define AUTH_INIT 1
/*用于设备通信的数据缓冲区*/
typedef struct DataBuffer {
    char *buf;//缓冲区首地址
    int size;//缓冲区大小
    int used;//缓冲区已使用量
} DataBuffer;
/*AuthConn结构体用于保存已建立socket连接的身份认证设备的基本信息以及状态信息*/
typedef struct AuthConn {
    int fd;//通信套接字描述符
    char authId[MAX_AUTH_ID_LEN];//身份认证id
    char deviceId[MAX_DEV_ID_LEN];//设备id
    char deviceIp[MAX_DEV_IP_LEN];//设备IP
    int busVersion;//总线版本
    int authPort;//认证通道端口
    int sessionPort;//会话通道端口
    int authState;//认证状态
    int onlineState;//设备在线状态
    DataBuffer db;//数据缓冲区
} AuthConn;
/*设备身份认证连接节点*/
typedef struct AuthConnNode {
    List head;
    AuthConn *aconn;
} AuthConnNode;
/*设备连接信息*/
typedef struct ConnInfo {
    int maxVersion;//最大版本号
    int minVersion;//最小版本号
    char deviceName[MAX_DEV_NAME_LEN];//设备名称
    char deviceType[MAX_DEV_TYPE_LEN];//设备类型
} ConnInfo;
int AuthConnRecv(int fd, char *buf, int offset, int count, int timeout);//接收设备认证过程中传输的数据
int AuthConnPostBytes(int fd, int module, int flags, long long seq, const char *data);//按字节构造身份认证连接的POST消息并通过TCP协议发送
int AuthConnPostMessage(int fd, int module, int flags, long long seqNum, const cJSON *msg);//构造/封装身份认证Post消息并发送给对端
bool ModuleUseCipherText(int module);//根据module参数判断是否使用密文传输
unsigned char* AuthConnPackBytes(int module, int flags, long long seqNum, const char *str, int *bufLen);//按字节构造设备身份认证数据包
#endif

DD一下: 欢迎大家关注公众号<程序猿百晓生>,可以了解到一下知识点。

erlang 复制代码
1.OpenHarmony开发基础
2.OpenHarmony北向开发环境搭建
3.鸿蒙南向开发环境的搭建
4.鸿蒙生态应用开发白皮书V2.0 & V3.0
5.鸿蒙开发面试真题(含参考答案) 
6.TypeScript入门学习手册
7.OpenHarmony 经典面试题(含参考答案)
8.OpenHarmony设备开发入门【最新版】
9.沉浸式剖析OpenHarmony源代码
10.系统定制指南
11.【OpenHarmony】Uboot 驱动加载流程
12.OpenHarmony构建系统--GN与子系统、部件、模块详解
13.ohos开机init启动流程
14.鸿蒙版性能优化指南
.......
相关推荐
上海锟联科技2 分钟前
250MSPS DAS 在地铁监测中够用吗?——来自上海锟联科技的工程实践
分布式·科技·分布式光纤传感·das解调卡·光频域反射·das
王码码20354 分钟前
Flutter for OpenHarmony 实战之基础组件:第十八篇 布局终极者 CustomScrollView 与 Slivers
flutter·harmonyos
一起养小猫12 分钟前
Flutter for OpenHarmony 实战:打地鼠游戏完整开发指南
flutter·游戏·harmonyos
岁岁种桃花儿28 分钟前
深度解析DolphinScheduler核心架构:搭建高可用Zookeeper集群
linux·分布式·zookeeper
一起养小猫29 分钟前
Flutter for OpenHarmony 实战:打地鼠游戏难度设计与平衡性
flutter·游戏·harmonyos
果粒蹬i29 分钟前
OpenHarmony 跨平台开发实战:第一阶段的踩坑记录与深度复盘
harmonyos
Betelgeuse7634 分钟前
【Flutter For OpenHarmony】 阶段复盘:从单页Demo到模块化App
flutter·ui·华为·交互·harmonyos
网易独家音乐人Mike Zhou36 分钟前
【RealMCU】瑞昱官方LOG信息保存及解析,DebugAnalyzer自动化接收脚本(不需要用到ROM.trace文件)
单片机·mcu·物联网·自动化·嵌入式·iot·瑞昱
一起养小猫42 分钟前
Flutter for OpenHarmony 实战:记忆翻牌游戏完整开发指南
flutter·游戏·harmonyos
yxy___1 小时前
达梦分布式集群DPC_影子和实体副本相互转换(DEM)_yxy
分布式·dem·影子副本