在学习安全传输平台项目总结了笔记,并分享出来。有问题请及时联系博主: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