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

📄 safedatasetpage.h

📁 MiniCA V2.0版本源码。《小型CA系统V2.1含源码》发表以来
💻 H
字号:
#if !defined(AFX_SAFEDATASETPAGE_H__9174F171_3067_4C73_AAD1_55D5475BDB1C__INCLUDED_)
#define AFX_SAFEDATASETPAGE_H__9174F171_3067_4C73_AAD1_55D5475BDB1C__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// SafeDataSetPage.h : header file
//

/////////////////////////////////////////////////////////////////////////////
// CSafeDataSetPage dialog
#include "DataSafe.H"
#include ".\Control\SuperList\SuperGridCtrl.h"
#include ".\Control\ProgressCtrlST\ProgressCtrlST.h"
#include "evp.h"
#include ".\GenericClass\OleTarget.h"
#include "SafeDataCdbPage.h"

class CSafeDataSetPage : public CPropertyPage
{
	DECLARE_DYNCREATE(CSafeDataSetPage)

// Construction
public:
	void TranslateCT();
	void DoSign();			//签名
	void DoRSAPubDec();		//RSA 公鈅解密
	void DoRSAPriDec();		//RSA 私鈅解密
	void DoOpenSeal();		//拆封数字信封
	void DoDecCrypt();		//对称解密
	void DoRSAPrivEnc();	//RSA 私鈅加密
	void DoRSAPubEnc();		//RSA 公鈅加密
	void DoSeal();			//数字信封
	void DoCrypt();			//对称加密
	BOOL GetIsEnc() const	//在线程中得到当前的操作方式,加密还是解密
	{
		return m_bIsEnc;
	}
	CWnd * GetParentWnd() const //长函数,调用他的对象不能改变成员值(m_pParent)
	{
		return m_pParent;
	}
	CString GetEvpPath() const
	{
		return m_strEvpPath;
	}

	enum EncType
	{
		NONE = 0,
		CRYPT = 1001,
		DIGEST = 2001,
		SIGN = 3001,
		SEAL = 4001,
		PubEnc = 5001,
		PrivEnc = 6001
	}m_EncType;

	BOOL ParseEvp(CString strEvpFile, EncType & encType);
	BOOL AddList(CString sLocalDir, UINT uPid = 0, CSuperGridCtrl::CTreeItem * hPitem = NULL);
	BOOL DecOneFile(CString strEvpFile, CString strOutFile, DWORD dSeek, DWORD dFileLen,
					DWORD dOldLen, CString & outStr);


	CSafeDataSetPage();
	~CSafeDataSetPage();

// Dialog Data
	//{{AFX_DATA(CSafeDataSetPage)
	enum { IDD = IDD_PROPPAGE_SAFED };
//	CXPEdit	m_XpEditPwd;
	CXPStyleButtonST	m_BEnc;
	CProgressCtrlST	m_ProgAll;
	CProgressCtrlST	m_ProgOne;
	CSuperGridCtrl	m_DataSetList;
	//}}AFX_DATA


// Overrides
	// ClassWizard generate virtual function overrides
	//{{AFX_VIRTUAL(CSafeDataSetPage)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	// Generated message map functions
	//{{AFX_MSG(CSafeDataSetPage)
	virtual BOOL OnInitDialog();
	afx_msg void OnRclickListDataset(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnDblclkListDataset(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnBEnc();
	afx_msg void OnRadio1();
	afx_msg void OnRadio2();
	afx_msg void OnRadio5();
	afx_msg void OnRadio6();
	afx_msg void OnKeydownListDataset(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnRadio3();
	afx_msg void OnRadio4();
	afx_msg void OnBegindragListDataset(NMHDR* pNMHDR, LRESULT* pResult);
	//}}AFX_MSG
	afx_msg LRESULT OnDropOk(WPARAM wParam,  LPARAM lParam);
	DECLARE_MESSAGE_MAP()

private:
	BOOL SelectPath();
	void AddMsg(CString info, DWORD type = M_OK);
	void AddOnceMsg(CString info, DWORD type = M_OK);

	BOOL Mdir(CString strPathName, CString & strInfo);

	BOOL Crypt(CString strCpName, CString strPwd, CString strFileName, CString & outMsg);
	BOOL DecCrypt(CString strCpName, CString strPwd, CString strEvpFile, CString & outMsg);

	BOOL Digest(CString strMdName, CString strOutName, CString & outMsg);
	BOOL VerifyDigest(CString strMdName, CString strEvpFile, CString & outStr);

	BOOL Sign(CString strMdName, const BYTE * pCertBuf, const UINT nCertLen, CString strPwd,
								  CString strOutName, CString & outStr);
	BOOL VerifySign(CString strMdName, const BYTE * pCertBuf, const UINT nCertLen,
								  CString strOutName, CString & outStr);

	BOOL Seal(CEvp::stuCertLink * pCERT, CString strCpName, CString strOutName, CString & outMsg);
	BOOL OpenSeal(char * pKey, UINT ukeyLen, char * pwd, CString strCpName,
							CString strEvpFile, CString & outStr);

	BOOL RSAPubEnc(const BYTE * pCertBuf, const UINT nCertLen, CString strOutName, CString & outStr);
	BOOL RSAPriDec(const BYTE * pCertBuf, const UINT nCertLen, CString strPwd, CString strEvpFile, CString & outStr);

	BOOL RSAPrivEnc(const BYTE * pCertBuf, const UINT nCertLen, CString strPwd,
								  CString strOutName, CString & outStr);
	BOOL RSAPubDec(const BYTE * pCertBuf, const UINT nCertLen, CString strEvpFile, CString & outStr);


	CString GetPathName(CDataSafe* pDataSafe, CList<CDataSafe *, CDataSafe *> * pDataList);

	CSuperGridCtrl::CTreeItem *  AddDataSet(const CDataSafe * pDataSafe,
											const CString strDataSet, const UINT uImage,
											const DWORD & dFileLen,	const DWORD dNewLen = 0,
											CString strTime = "", CString strType = "",
											CSuperGridCtrl::CTreeItem * pParent = NULL);


	BOOL EnumDir(CString sLocalDir, UINT uPid = 0, CSuperGridCtrl::CTreeItem * hPitem = NULL);

	BOOL MadeFileHead(CFile & File, const int nCount, DWORD & dFileInfoLen, CString & strMsg);

	BOOL MadeFileNeck(CList<CDataSafe *, CDataSafe *> * pDataList, CFile &File, 
							const EncType encType, const int nCount, 
									const DWORD dFileInfoLen, CString &strMsg);

	void AddFileList(const WIN32_FIND_DATA & FileData, 
					 CSuperGridCtrl::CTreeItem * hPitem,
					 const UINT uTempParent,
					 CString sFile,
					 DWORD & dFileLen);//枚举到文件时候的操作

	CProgressCtrlST * ShowProg(int nItem, int nCol);
	
	//主意 pDirList 保存得是pDataList中得目录信息,是指针,不需释放,释放时候只释放pDataList就可以了,不能释放pDirList
	void EnumList(CList<CDataSafe *, CDataSafe *> * pDataList, CList<CDataSafe *, CDataSafe *> * pDirList = NULL);

	void CleanList(CList<CDataSafe *, CDataSafe *> * pDataList);

	CImageList m_Image;//Must provide an imagelist
	CStringList m_DirName;//用于保存托放文件信息,以免重复添加
	UINT m_uIndex;//文件信息父标记
	static CProgressCtrlST * m_pProgOne;
	CWnd * m_pParent;	//父窗口,如果在线程中使用AfxGetMainWnd()得到的会错误
	BOOL m_bIsEnc;//加密,解密方式
	CString m_p12Pwd;	//全局私鈅密码,可以在各个操作中使用
	char m_strKey[10240];//P12密码,证书路径,或内容
	DWORD m_lenKey;//长度
	CDropTarget m_Target;
	CSafeDataCdbPage * m_pPageCdb;
	CString m_strEvpPath;	//保存加密生成的文件名,外部调入的.evp文件名
	CString m_strSavePath;	//解密到的路径

};

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

#endif // !defined(AFX_SAFEDATASETPAGE_H__9174F171_3067_4C73_AAD1_55D5475BDB1C__INCLUDED_)

⌨️ 快捷键说明

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