⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 beeo_core.h

📁 基于beeo标准的数据加解密算法
💻 H
字号:
#ifndef _BEEO_CORE_H_
#define _BEEO_CORE_H_

#include "beeo_Define.h"

#ifdef __cplusplus
extern "C" {
#endif
	
#ifndef PASCAL
#define PASCAL
#endif
	
/*定义密钥交换报文。
对于长整形数据,需要转换成网络字节顺序。*/
typedef struct tagBeeoDHPackage
{
	uIn32	dwVersion;				//版本号,现在使用0x01010000
	uIn32	nPeerSeq;				//已经收到的对方的报文序号,用于判断是否成功交换
	uIn32	nLocalSeq;				//最新发送的交换报文序号,决定是否为新的请求,要求!=0
	uIn32	dwFlag;					//报文标志,=BEEO_DH_FLAG
	uChar	dh[4][BEEO_DH_BYTES];	//DH特征值,前三个分别对应于Col、Row、Xor的DH特征值
	uIn32	dwOffset[4];//前三个分别对应于Col、Row、Xor的位偏移量的DH特征值,取低16bits
	uChar   reserve[128];			//保留位,暂时全部=0
	uChar	cSum1,cSum2,cSum3,cSum4;//校验和
} BEEO_DH_PACKAGE;

/*
 定义加密通道
*/
typedef struct tagBeeoChannel
{
	uChar	bEstablished;			//表明加密信道已经建立
	uChar	bLocalRefreshed;		//表明本地的SEQ已经时最新的SEQ,避免一直不断地协商密钥
	uIn16	nPort;					//对方的端口
	uIn32	dwIP;					//对方的IP地址
	SOCKET	sock;					//一个SOCKET规定了一个唯一的本地IP地址和UDP端口
	uChar   mCol[BEEO_MATRIX_BYTES];
	uChar   mRow[BEEO_MATRIX_BYTES];
	uChar   mXor[BEEO_MATRIX_BYTES];
	uIn32	dwRand[8];
	BEEO_DH_PACKAGE pkLocal;
	BEEO_DH_PACKAGE pkPeer;
	SOCKADDR addrPeer;
	uIn32	dwLastAccessTicks;
	void*	backupSendto;
} BEEO_CHANNEL;

#define PEEO_MAX_KEY_BYTES	200
typedef struct tagBeeoProcessor
{
	uChar	bInitialized;
	uChar	bBufferPacket;
	uIn16	nKeyLength;
	uIn32	dwFlag;
	uIn32	dwVersion;
	uChar	key[PEEO_MAX_KEY_BYTES];
	uChar	tmp[512];
	uIn32	dwRand[8];
	short	nRandPos;
	uChar	bBusy;
	uChar	xx;
	uIn32	dhID;
	uIn32	nNextSeq;
	void*	sl;
} BEEO_PROCESSOR;

int PASCAL beeo_BackupSendto(SOCKET s, char *buf, bsType len, bsType flag, SOCKADDR *addr, bsType adlen);
int PASCAL beeo_Encode(SOCKET s, char *buf, char* bufOut, bsType len, SOCKADDR *addr, bsType adlen, int channel);
int PASCAL beeo_Decode(SOCKET s, char *buf, char* bufOut, bsType len, SOCKADDR *addr, bsType adlen );
void PASCAL beeo_GetMatrix(SOCKET s, SOCKADDR *addr, bsType adlen );
int PASCAL beeo_SendDHPackage(BEEO_CHANNEL* channel);
int PASCAL beeo_GenerateMatrix(BEEO_CHANNEL* channel);

#ifdef __cplusplus
}
#endif

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -