安全传输平台项目——密钥协商服务器-密钥协商客户端

本文详述了安全传输平台中密钥协商服务器与客户端的实现过程,包括物理组件集成、日志使用、模块划分及功能实现。通过创建文件结构、拷贝库文件、编写和编译源码,实现了密钥协商的功能,涉及客户端的Agree、Check、View操作及服务器端的相应逻辑。
摘要由CSDN通过智能技术生成

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

10-安全传输平台项目-第05天(密钥协商服务器-密钥协商客户端)

目录:
一、复习
二、安全传输平台项目——密钥协商服务器-密钥协商客户端
1、密钥协商-物理组件集成
2、密钥协商-日志的使用
3、密钥协商客户端-模块划分
4、密钥协商客户端-框架实现
5、密钥协商客户端-Agree函数框架
6、密钥协商客户端-Agree函数实现
7、密钥协商客户端-Agree函数内存释放
8、密钥协商服务器-框架梳理
9、密钥协商服务器-业务逻辑实现
10、密钥协商服务器-Agree功能实现
11、总结

 

一、复习

1、线程传参
2、共享内存

 

二、安全传输平台项目——密钥协商服务器-密钥协商客户端

》密钥协商业务逻辑图

1、密钥协商-物理组件集成

》创建相应的文件夹及文件准备

>mkdir secmng
>cd secmng
>mkdir inc
>mkdir lib
>mkdir src

通过远程软件,将库文件:libitcastsocket.so和libmessagereal.so拷贝到新创建的lib目录下;

把(keymnglog.c和myipc_shm.c)2个文件放入到src目录下,把(keymng_msg.h—统一报文编码解码,对应lib库libmessagereal.so、keymnglog.h—日志,对应inc的keymnglog.c、myipc_shm.h—统一共享内存,对应inc的myipc_shm.c、poolsocket.h—统一通信,对应lib库libitcastsocket.so)4个文件放入到inc目录下。

 

2、密钥协商-日志的使用

>cd src
>touch keymngclient.c
>touch keymngserver.c
>vi keymngclient.c

#include "keymnglog.h"

int main(void)
{
    KeyMng_Log(__FILE__, __LINE__, KeyMngLevel[0], 0, "%s", "00000000000000");
    KeyMng_Log(__FILE__, __LINE__, KeyMngLevel[1], 1, "%s", "11111111111111");
    KeyMng_Log(__FILE__, __LINE__, KeyMngLevel[2], 2, "%s", "22222222222222");
    KeyMng_Log(__FILE__, __LINE__, KeyMngLevel[3], 3, "%s", "33333333333333");
    KeyMng_Log(__FILE__, __LINE__, KeyMngLevel[4], 4, "%s", "44444444444444");
    
    return 0;    
}
keymngclient.c

>gcc keymngclient.c keymnglog.c -o keymngclient -I ../inc
>./keymngclient

打开另一个终端,然后在家目录的log目录下查看日志

注意:0的时候没有日志,所以查看的时候只有4行。

 

3、密钥协商客户端-模块划分

》密钥协商客户端:        keymngclient.c
    显示菜单。
    接收用户选择。  num。
    客户端信息初始化。
    switch(num) {
        case 1协商:
            密钥协商。 建立连接、封装req结构体、编码、发送、接收、解码、生成密钥、写共享内存。
            _Agree();

        case 2校验:
            密钥校验。 建立连接、封装req结构体、编码、发送、接收、解码、生成密钥、写共享内存。
            _Check();    

        case 查看:
            密钥查看。 建立连接、封装req结构体、编码、发送、接收、解码、生成密钥、写共享内存。
            _View();
        。。。。
    }

    将结果展示给用户。

》模块划分:
    业务逻辑:
        keymngclient.c
    业务功能:
        keymngclientop.c            -->           keymngclientop.h
        实现 客户端信息初始化。                客户端信息初始化声明。             
        实现 客户端密钥协商。                。。。。
        实现 客户端密钥校验。

        struct clientInfo { serverIp, serverPort, clientID, serverID, Autocode, shmkey, shmid, maxnode }

        int keymng_Agree(struct clientInfo *pInfo)
        int keymng_Check(struct clientInfo *pInfo);
        int keymng_Revoke(struct clientInfo *pInfo);

====================================================================
》密钥协商服务器:
    keymngserverop.c         keymngserverop.h        功能实现
    实现 服务器信息初始化。        服务器信息初始化声明。             
    实现 服务器密钥协商。        。。。。
    实现 服务器密钥校验。   
    实现 服务器密钥注销。

 

4、密钥协商客户端-框架实现

》文件准备:

// keymngclientop.h

#ifndef _KEYMNG_CLIENTOP_H_
#define _KEYMNG_CLIENTOP_H_

#ifdef __cplusplus
extern "C" {
#endif

#define        MngClt_OK                0            //正确
#define        MngClt_ParamErr            301            //输入参数失败
#define        MngClt_NoNetPointErr    302            //共享内存中,没有找到网点信息
#define        MngClt_NodeMaxCount        303            //共享内存中,超过最大网点

typedef struct _MngClient_Info
{
    char            clientId[12];    //客户端编号
    char            AuthCode[16];    //认证码
    char            serverId[12];    //服务器端编号
    
    char            serverip[32];
    int             serverport;
    
    int                maxnode;         //最大网点数 客户端默认1个
    int             shmkey;             //共享内存keyid 创建共享内存时使用     
    int             shmhdl;         //共享内存句柄    
}MngClient_Info;


//初始化客户端 全局变量
int MngClient_InitInfo(MngClient_Info *pCltInfo);

int MngClient_Quit(MngClient_Info *pCltInfo);

int MngClient_Agree(MngClient_Info *pCltInfo);

int MngClient_Check(MngClient_Info *pCltInfo);

int MngClient_Revoke(MngClient_Info *pCltInfo);

int MngClient_view(MngClient_Info *pCltInfo);


#ifdef __cplusplus
}
#endif

#endif
keymngclientop.h

将keymngclientop.h放入ins目录下,然后在src新建keymngclientop.c,进行开发

>touch keymngclientop.c

>vi keymngclientop.c

#include <stdio.h>
#include <stdlib.h>
#include "keymngclientop.h"

int MngClient_InitInfo(MngClient_Info *pCltInfo)
{
    strcpy(pCltInfo->clientId, "1111");
    strcpy(pCltInfo->AuthCode, "1111");
    strcpy(pCltInfo->serverId, "0001");
    strcpy(pCltInfo->serverip, "127.0.0.1");
    pCltInfo->serverport = 8001;
    
    pCltInfo->maxnode = 1;
    pCltInfo->shmkey = 0x0011;
    pCltInfo->shmhdl = 0;    
    
    return 0;
}

int MngClient_Agree(MngClient_Info *pCltInfo)
{
    
    return 0;
}
keymngclientop.c

 

5、密钥协商客户端-Agree函数框架

>keymngclient.c

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值