在学习安全传输平台项目总结了笔记,并分享出来。有问题请及时联系博主:Alliswell_WP,转载请注明出处。

10-安全传输平台项目-第11天(客户端代码移植-项目模块总结)

目录:
一、复习
二、安全传输平台项目——客户端代码移植-项目模块总结
1、图形客户端-密钥协商组件分析
2、图形客户端-物理组件集成
3、图形客户端-Linux源码对接错误调试
4、图形客户端-系统初始化
5、图形客户端-删除控件对应函数
6、图形客户端-密钥协商
7、图形客户端-密钥协商内存释放错误说明
8、总结
9、接口设计
10、文件加密原理
11、文件加密函数源码
12、数字证书、非对称加密

 

一、复习

1、复习-连接数据库
2、复习-网点信息管理

 

二、安全传输平台项目——客户端代码移植-项目模块总结

1、图形客户端-密钥协商组件分析

》SecMngClient协商客户端 界面设计及功能实现和SecMngServer配置管理 大体相同:

1)打开“VS”,新建Dialog,ID更改为:IDD_DIALOG_CLIENT,布局如下:

安全传输平台项目——客户端代码移植-项目模块总结

2)在“IDD_DIALOG_CLIENT”界面右键“添加类”,类名输入:CViewClient,基类选择:CFormView

3)使用类向导,为ListCtrl添加成员变量:

安全传输平台项目——客户端代码移植-项目模块总结

注意:自定义变量m_imageList不是通过类向导定义的,是通过代码定义的!

4)在MainFrm.cpp中OnOutbarNotify函数中打开case代码,增加调用(去掉return 0)

5)“类向导”中(ViewClient.cpp)重写OnInitialUpdate函数;和DlgNetInfo类似!

6)在“IDD_DIALOG_CLIENT”界面中为按钮设置ID并添加回调函数

回调函数的逻辑在Linux下已经做过:借助wind图形界面(客户端与服务器密钥协商、密钥校验、密钥注销)与linux客户端 文字界面(与 服务器密钥协商、密钥校验、密钥注销)逻辑一样,所以这块代码不用写了,把Linux下的代码移植过来。当然还需要更改!

对比分析:

》分析wind客户端和服务器 与 linux客户端和服务器 4大基础组件区别:
    1)统一报文编码解码    libmessagereal.so .h ---> .dll .lib .h
    2)统一通信组件socket    --- windows socket 通信        
    3)共享内存        --- windows shm 机制
    4)数据库访问    (客户端无需数据库)

》代码如下:

1)报文编解码_win

>messagereal.dll

>messagereal.lib

>keymng_msg.h

#ifndef _KEYMNG_MSG_H_
#define _KEYMNG_MSG_H_

#ifdef __cplusplus
extern "C" {
#endif

#define        KeyMng_ParamErr            200        //输入参数失败
#define        KeyMng_TypeErr            201        //输入类型失败
#define        KeyMng_MallocErr        202        //分配内存失败

#define        KeyMng_NEWorUPDATE        1        //1 密钥更新 
#define        KeyMng_Check            2        //2 密钥校验
#define        KeyMng_Revoke            3        //3 密钥注销
             ;     
#define  ID_MsgKey_Req  60

//密钥请求报文
typedef struct _MsgKey_Req
{
    //1 密钥更新      //2 密钥校验;     //3 密钥注销
    int                cmdType;        //报文命令码 
    char            clientId[12];    //客户端编号
    char            AuthCode[16];    //认证码
    char            serverId[12];    //服务器端I编号
    char            r1[64];        //客户端随机数
    
}MsgKey_Req;


//密钥应答报文
#define  ID_MsgKey_Res  61
typedef struct  _MsgKey_Res
{
    int                    rv;                //返回值
    char                clientId[12];    //客户端编号
    char                serverId[12];    //服务器编号
    unsigned char        r2[64];            //服务器端随机数
    int                    seckeyid;        //对称密钥编号 //modfy 2015.07.20
}MsgKey_Res;


/*
 pstruct :    输入的报文数据 ; (指向相应结构体的指针) 
 type :        输入的类型标识(函数内部通过type 得到 pstruct 所指向的报文类型)
 poutData:    输出的编码后的报文 ; 
 outlen :    输出的数据长度;
*/

int MsgEncode(
    void            *pStruct , /*in*/
    int                type,
    unsigned char    **outData, /*out*/
    int                *outLen );

/*
 inData        : 输入的编码后的数据;
 inLen        : 输入的数据长度 ;
 pstruct    : 输出的解码后的数据; (其空间是在内部开辟的,也需要用内部定义的free函数进行释放)
 type        : 结构的类型标识(返回类型标识,使得调用者通过flag进行判断,将pstruct 转换为相应的结构)
*/
int MsgDecode( 
    unsigned char *inData,/*in*/
    int           inLen,
    void          **pStruct /*out*/,
    int           *type /*out*/);


/*
释放 MsgEncode( )函数中的outData; 方法:MsgMemFree((void **)outData, 0); 
释放MsgDecode( )函数中的pstruct结构体,MsgMemFree((void **)outData, type);
type : 输入参数,便于函数判断调用哪个结构体的free函数
*/ 

int MsgMemFree(void **point,int type);

#ifdef __cplusplus
}
#endif

#endif
keymng_msg.h

相关文章:

  • 2022-12-23
  • 2021-11-09
  • 2021-11-29
  • 2021-04-21
  • 2021-05-20
  • 2021-09-04
  • 2022-02-26
  • 2022-12-23
猜你喜欢
  • 2021-12-14
  • 2021-11-15
  • 2021-10-10
  • 2022-01-29
  • 2022-12-23
  • 2021-09-27
相关资源
相似解决方案