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

10-安全传输平台项目-第06天(密钥协商共享内存-守护进程-脚本)

目录:
一、复习
二、密钥协商共享内存-守护进程-脚本
1、共享内存操作函数接口设计
2、共享内存操作函数实现领读
3、生成密钥-组织密钥结构体信息
4、客户端写密钥信息到共享内存
5、服务器内存释放
6、共享内存补充说明
7、服务器守护进程创建
8、守护进程管理脚本
9、借助信号管理守护进程
10、密钥校验流程分析

 

一、复习

1、客户端:keymngclient.c—负责业务逻辑;keymngclientop.c—负责功能实现

2、服务器:keymngserver.c—负责业务逻辑;keymngserverop.c—负责功能实现

密钥协商业务逻辑图

安全传输平台项目——密钥协商共享内存-守护进程-脚本

 

二、安全传输平台项目——密钥协商共享内存-守护进程-脚本

1、共享内存操作函数接口设计

----共享内存    函数接口。
    分析网点密钥信息 元素            --- struct shmNodeInfo{}                   
        shmNodeInfo{ seckey, clientID, serverID, seckeyid, status, time }

    模块组织关系:
        客户端:
            协商密钥成功,写 密钥节点信息 到 共享内存。 密钥校验, 读 取共享内存密钥信息。

        服务器:
            协商密钥成功,写 密钥节点信息 到 共享内存。 密钥校验, 读 取共享内存密钥信息。

    存储:   
        服务器:struct shmNodeInfo     shmInfo[N];
          1
          :
          N
        客户端:struct shmNodeInfo     shmInfo;

    初始化/创建共享内存
        int shmInit(int shmkey, int size, int *shmhdle);   int -- map(shmat) --->void *

    写网点信息共享内存
        int shmNode_write(int shmhdle, struct shmNodeInfo *pShmNode, int maxnode);

    读网点信息共享内存
        int shmNode_Read(int shmhdle, struct shmNodeInfo **pShmNode, char *clientID,char *serverID);

 

2、共享内存操作函数实现领读

》函数封装:shmget()--> myipc_shm.c --> keymng_shmop.c  --- keymng_shmop.h

安全传输平台项目——密钥协商共享内存-守护进程-脚本

分析了keymng_shmop.h和keymng_shmop.c

>keymng_shmop.h

// keymng_shmop.h

#ifndef _KEYMNG_SHMOP_H_
#define _KEYMNG_SHMOP_H_

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


#ifdef __cplusplus 
extern "C" {
#endif

//将网点密钥信息写共享内存, 网点共享内存结构体
typedef struct _NodeSHMInfo
{    
    int             status;            //密钥状态 0-有效 1无效
    char            clientId[12];    //客户端id
    char            serverId[12];    //服务器端id    
    int                seckeyid;        //对称密钥id
    unsigned char    seckey[128];    //对称密钥 //hash1 hash256 md5
}NodeSHMInfo;


//int KeyMng_ShmInit(int keyid, int keysize, void *shmid )
//打开共享内存 共享内存存在则使用 不存在则创建(此函数并不是初始化)
int KeyMng_ShmInit(int key, int maxnodenum, int *shmhdl);

int KeyMng_ShmWrite(int shmhdl, int maxnodenum, NodeSHMInfo *pNodeInfo);//pNodeInfo是传入参数

int KeyMng_ShmRead(int shmhdl, char *clientId, char *serverId,  int maxnodenum, NodeSHMInfo *pNodeInfo);//pNodeInfo是传出参数


#ifdef __cplusplus
}
#endif
#endif
keymng_shmop.h

相关文章:

  • 2021-09-09
  • 2021-12-16
  • 2022-12-23
  • 2022-03-01
  • 2022-01-08
  • 2022-02-17
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-19
  • 2021-10-10
  • 2021-11-25
  • 2021-09-27
  • 2021-12-14
  • 2021-07-31
相关资源
相似解决方案