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

📄 sslserversocket.h

📁 基本实现了数字证书的制作、SSL安全通讯、加解密操作等功能
💻 H
字号:
#if !defined(AFX_SSLSERVERSOCKET_H__743B3028_F922_4137_9156_47A3BE019520__INCLUDED_)
#define AFX_SSLSERVERSOCKET_H__743B3028_F922_4137_9156_47A3BE019520__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// SslServerSocket.h : header file
//
#include "ColorListBox.h"
#include "..\ca.h"


/////////////////////////////////////////////////////////////////////////////
// CSslServerSocket command target
#pragma warning(disable:4146) 
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")

class CSslServerSocket : public CAsyncSocket
{
// Attributes
public:
	SSL_CTX * InitCtx(SSL_METHOD *meth,char *certfile,int certlen, char *keyfile,int keylen,
			char * cafile, char * capath,int VerType,CColorListBox * plist,CObList	* pObSock/*连接列表*/,
			_ConnectionPtr pConnection/*数据库连接*/,char * out);
	BOOL CreateLisenSock( UINT nSocketPort = 0, long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE );
	int SSlReceive(char * buf,int len);
	int SSlSend(char * buf,int len);
	void SSlShouDown();
	CSslServerSocket * m_pSocket;//接受
// Operations
public:
	CSslServerSocket();
	virtual ~CSslServerSocket();
// Overrides
public:
	CSslServerSocket(int type);
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CSslServerSocket)
	public:
	virtual void OnAccept(int nErrorCode);
	virtual void OnClose(int nErrorCode);
	virtual void OnReceive(int nErrorCode);
	virtual void OnSend(int nErrorCode);
	//}}AFX_VIRTUAL

	// Generated message map functions
	//{{AFX_MSG(CSslServerSocket)
		// NOTE - the ClassWizard will add and remove member functions here.
	//}}AFX_MSG

// Implementation
protected:
	int Rand(const char *file,int dont_warn,char * outMsg);
	X509 * LoadCert(char * cert,int certlen,char * outMsg);//枚举DER/PEM格式
	EVP_PKEY * LoadKey(char * key,int keylen,char * pass,char * outMsg);//枚举DER/PEM格式
	BOOL GetPeerInfo(SSL * ssl,stuCLIENTINFO * stu);
	stuCLIENTINFO m_CLIENTINFO;
private:
	static char * NewCrlMem(UINT len);
	CObList	* m_pObSock;//连接列表
	CColorListBox *	m_pList;
	_ConnectionPtr m_pConnection;
	SSL_CTX * m_Ctx;
	SSL * m_Ssl;
	int m_type;//类型---www还是ra
	int m_Rcount;//纪录条数
	X509 * load_cert(BIO *cert, int format,char * pwd,char * outMsg);
	EVP_PKEY * load_key(BIO *bio, int format, char *pass,char * outMsg);
	int static Verify(int ok, X509_STORE_CTX *ctx);
	void SSlWww(char * file,int len, char *out);//发送网页信息
	void DisplayError(_com_error &e);

	enum OPERTYPE//操作类型
	{
		Input,//录入
		Audit,//审核
		Made,//制作
		MadeOK,//制作成功,只用于客户端
		Revoke,//作废
		MadeCrl,//制作黑名单
		FInputD,//查找已经录入---待审核
		FAuditD,//查找已经审核---待制作
		FMadeD,//查找已经制作 ---有效
		FRevokeD//查找已经作废---无效
	};

	struct stuRA//客户端接受用结构
	{	
		OPERTYPE Type;//操作类型
		BOOL State;//操作状态 成功,失败
		int ID;//证书ID
		int CertL;//公钥长度
		int KeyL;//私钥长度
		stuSUBJECT SUBJECT;//申请者信息
		char Time[12];//操作时间2003-12-06
		stuRA()
		{
			memset(this,0,sizeof(stuRA));
		}
	};

	struct stuCA//服务器接收用
	{
		OPERTYPE Type;//操作类型
		char SQL[200];//SQL语句
		stuCA()
		{
			memset(this,0,sizeof(stuCA));
		}
	};
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_SSLSERVERSOCKET_H__743B3028_F922_4137_9156_47A3BE019520__INCLUDED_)

⌨️ 快捷键说明

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