communication_softbus_lite

整体介绍

auth_conn.h和auth_conn.c封装了用户身份认证信息的发送、接收、加密等一系列方法和功能,使用统一的数据结构体进行信息封装,信息发送和接收前进行各种信息的检查,最后通过函数将所有的信息进行统一打包发送。

auth_conn.h

  1. 开头一个条件编译当定义了LITE_AUTH_CONN_H时使用宏定义定义了许多变量包括信息索引的宽度,包裹packet的头大小,数据本身的大小,模式的定义等等
    具体的标注在代码注释中给出
    在这里插入图片描述
  2. DataBuffer结构体:装载传输数据的结构体。例如:在wifi_auth_manager.c将conn.tb接收下来;作为AuthConn结构体下的子结构体装载具体的数据。三个部分:数据的实际指针,数据大小,和一个标志位是否使用。
    在这里插入图片描述
  3. AuthConn结构体:用于存储用户会话连接的一系列信息,包括上述的自定义结构体DataBuffer作为数据载体。
    在这里插入图片描述
  4. AuthConnNode:作为用户会话List的结点,包括头和上述的AuthConn结构体
  5. 链接信息的结构体:包括版本设备名称和类型
    在这里插入图片描述
  6. 定义的函数原型(会在auth_conn.c中提到)
    在这里插入图片描述

auth_conn.c

各种用户身份认证功能的集合,包括发送,接收,模式加密,数据加密,数据封装,提交

  1. AuthConnSend()
    检查会话连接发送是否符合规范,符合则调用TcpData(tcp_socket.c中有生命)方法将Data发送
    在这里插入图片描述
  2. AuthConnRecv()
    与上面的send相反,用于接收TCP数据,当参数都符合规范时,调用函数TcpRecvData()接收用户连接数据
    在这里插入图片描述
  3. 使用上面宏定义好的加密模式判断文本是否实现加密的函数ModuleUseCipherText(int module)
    在这里插入图片描述
  4. GetEncryptTransData()
    先通过auth_conn.c中的方法AuthGetNewSessionKey()得到最后一个结点的skey,经过一系列变换的准备工作,最后调用EncryptTransData()方法进行变换,最后将变换完的cipher长度和数据包的大小相加赋给实际的bufLen。返回0为成功,返回-1为失败
    在这里插入图片描述
  5. AuthConnPackBytes()将数据封装打包的函数。确定数据不为空,确定是否为密文,确定总长度,将信息打包安全拷贝到data中,如果是密文将密钥同样打包入数据中,最后返回data指针指向的数据buf
    在这里插入图片描述
  6. AuthConnPostBytes()
    将使用函数AuthConnPackBytes()打包好的数据调用AuthConnSend()进行传输,并使用封装好的信息打印函数SOFTBUS_PRINT进行信息提示

在这里插入图片描述

  1. AuthConnPostMessage()
    引入cJSON将msg进行格式化,再调用 AuthConnPostBytes()进行数据的提交
    在这里插入图片描述
Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐