SafeDataSetPage.h
上传用户:dengkfang
上传日期:2008-12-30
资源大小:5233k
文件大小:6k
源码类别:

CA认证

开发平台:

Visual C++

  1. #if !defined(AFX_SAFEDATASETPAGE_H__9174F171_3067_4C73_AAD1_55D5475BDB1C__INCLUDED_)
  2. #define AFX_SAFEDATASETPAGE_H__9174F171_3067_4C73_AAD1_55D5475BDB1C__INCLUDED_
  3. #if _MSC_VER > 1000
  4. #pragma once
  5. #endif // _MSC_VER > 1000
  6. // SafeDataSetPage.h : header file
  7. //
  8. /////////////////////////////////////////////////////////////////////////////
  9. // CSafeDataSetPage dialog
  10. #include "DataSafe.H"
  11. #include ".ControlSuperListSuperGridCtrl.h"
  12. #include ".ControlProgressCtrlSTProgressCtrlST.h"
  13. #include "evp.h"
  14. #include ".GenericClassOleTarget.h"
  15. #include "SafeDataCdbPage.h"
  16. class CSafeDataSetPage : public CPropertyPage
  17. {
  18. DECLARE_DYNCREATE(CSafeDataSetPage)
  19. // Construction
  20. public:
  21. void TranslateCT();
  22. void DoSign(); //签名
  23. void DoRSAPubDec(); //RSA 公鈅解密
  24. void DoRSAPriDec(); //RSA 私鈅解密
  25. void DoOpenSeal(); //拆封数字信封
  26. void DoDecCrypt(); //对称解密
  27. void DoRSAPrivEnc(); //RSA 私鈅加密
  28. void DoRSAPubEnc(); //RSA 公鈅加密
  29. void DoSeal(); //数字信封
  30. void DoCrypt(); //对称加密
  31. BOOL GetIsEnc() const //在线程中得到当前的操作方式,加密还是解密
  32. {
  33. return m_bIsEnc;
  34. }
  35. CWnd * GetParentWnd() const //长函数,调用他的对象不能改变成员值(m_pParent)
  36. {
  37. return m_pParent;
  38. }
  39. CString GetEvpPath() const
  40. {
  41. return m_strEvpPath;
  42. }
  43. enum EncType
  44. {
  45. NONE = 0,
  46. CRYPT = 1001,
  47. DIGEST = 2001,
  48. SIGN = 3001,
  49. SEAL = 4001,
  50. PubEnc = 5001,
  51. PrivEnc = 6001
  52. }m_EncType;
  53. BOOL ParseEvp(CString strEvpFile, EncType & encType);
  54. BOOL AddList(CString sLocalDir, UINT uPid = 0, CSuperGridCtrl::CTreeItem * hPitem = NULL);
  55. BOOL DecOneFile(CString strEvpFile, CString strOutFile, DWORD dSeek, DWORD dFileLen,
  56. DWORD dOldLen, CString & outStr);
  57. CSafeDataSetPage();
  58. ~CSafeDataSetPage();
  59. // Dialog Data
  60. //{{AFX_DATA(CSafeDataSetPage)
  61. enum { IDD = IDD_PROPPAGE_SAFED };
  62. // CXPEdit m_XpEditPwd;
  63. CXPStyleButtonST m_BEnc;
  64. CProgressCtrlST m_ProgAll;
  65. CProgressCtrlST m_ProgOne;
  66. CSuperGridCtrl m_DataSetList;
  67. //}}AFX_DATA
  68. // Overrides
  69. // ClassWizard generate virtual function overrides
  70. //{{AFX_VIRTUAL(CSafeDataSetPage)
  71. protected:
  72. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  73. //}}AFX_VIRTUAL
  74. // Implementation
  75. protected:
  76. // Generated message map functions
  77. //{{AFX_MSG(CSafeDataSetPage)
  78. virtual BOOL OnInitDialog();
  79. afx_msg void OnRclickListDataset(NMHDR* pNMHDR, LRESULT* pResult);
  80. afx_msg void OnDblclkListDataset(NMHDR* pNMHDR, LRESULT* pResult);
  81. afx_msg void OnBEnc();
  82. afx_msg void OnRadio1();
  83. afx_msg void OnRadio2();
  84. afx_msg void OnRadio5();
  85. afx_msg void OnRadio6();
  86. afx_msg void OnKeydownListDataset(NMHDR* pNMHDR, LRESULT* pResult);
  87. afx_msg void OnRadio3();
  88. afx_msg void OnRadio4();
  89. afx_msg void OnBegindragListDataset(NMHDR* pNMHDR, LRESULT* pResult);
  90. //}}AFX_MSG
  91. afx_msg LRESULT OnDropOk(WPARAM wParam,  LPARAM lParam);
  92. DECLARE_MESSAGE_MAP()
  93. private:
  94. BOOL SelectPath();
  95. void AddMsg(CString info, DWORD type = M_OK);
  96. void AddOnceMsg(CString info, DWORD type = M_OK);
  97. BOOL Mdir(CString strPathName, CString & strInfo);
  98. BOOL Crypt(CString strCpName, CString strPwd, CString strFileName, CString & outMsg);
  99. BOOL DecCrypt(CString strCpName, CString strPwd, CString strEvpFile, CString & outMsg);
  100. BOOL Digest(CString strMdName, CString strOutName, CString & outMsg);
  101. BOOL VerifyDigest(CString strMdName, CString strEvpFile, CString & outStr);
  102. BOOL Sign(CString strMdName, const BYTE * pCertBuf, const UINT nCertLen, CString strPwd,
  103.   CString strOutName, CString & outStr);
  104. BOOL VerifySign(CString strMdName, const BYTE * pCertBuf, const UINT nCertLen,
  105.   CString strOutName, CString & outStr);
  106. BOOL Seal(CEvp::stuCertLink * pCERT, CString strCpName, CString strOutName, CString & outMsg);
  107. BOOL OpenSeal(char * pKey, UINT ukeyLen, char * pwd, CString strCpName,
  108. CString strEvpFile, CString & outStr);
  109. BOOL RSAPubEnc(const BYTE * pCertBuf, const UINT nCertLen, CString strOutName, CString & outStr);
  110. BOOL RSAPriDec(const BYTE * pCertBuf, const UINT nCertLen, CString strPwd, CString strEvpFile, CString & outStr);
  111. BOOL RSAPrivEnc(const BYTE * pCertBuf, const UINT nCertLen, CString strPwd,
  112.   CString strOutName, CString & outStr);
  113. BOOL RSAPubDec(const BYTE * pCertBuf, const UINT nCertLen, CString strEvpFile, CString & outStr);
  114. CString GetPathName(CDataSafe* pDataSafe, CList<CDataSafe *, CDataSafe *> * pDataList);
  115. CSuperGridCtrl::CTreeItem *  AddDataSet(const CDataSafe * pDataSafe,
  116. const CString strDataSet, const UINT uImage,
  117. const DWORD & dFileLen, const DWORD dNewLen = 0,
  118. CString strTime = "", CString strType = "",
  119. CSuperGridCtrl::CTreeItem * pParent = NULL);
  120. BOOL EnumDir(CString sLocalDir, UINT uPid = 0, CSuperGridCtrl::CTreeItem * hPitem = NULL);
  121. BOOL MadeFileHead(CFile & File, const int nCount, DWORD & dFileInfoLen, CString & strMsg);
  122. BOOL MadeFileNeck(CList<CDataSafe *, CDataSafe *> * pDataList, CFile &File, 
  123. const EncType encType, const int nCount, 
  124. const DWORD dFileInfoLen, CString &strMsg);
  125. void AddFileList(const WIN32_FIND_DATA & FileData, 
  126.  CSuperGridCtrl::CTreeItem * hPitem,
  127.  const UINT uTempParent,
  128.  CString sFile,
  129.  DWORD & dFileLen);//枚举到文件时候的操作
  130. CProgressCtrlST * ShowProg(int nItem, int nCol);
  131. //主意 pDirList 保存得是pDataList中得目录信息,是指针,不需释放,释放时候只释放pDataList就可以了,不能释放pDirList
  132. void EnumList(CList<CDataSafe *, CDataSafe *> * pDataList, CList<CDataSafe *, CDataSafe *> * pDirList = NULL);
  133. void CleanList(CList<CDataSafe *, CDataSafe *> * pDataList);
  134. CImageList m_Image;//Must provide an imagelist
  135. CStringList m_DirName;//用于保存托放文件信息,以免重复添加
  136. UINT m_uIndex;//文件信息父标记
  137. static CProgressCtrlST * m_pProgOne;
  138. CWnd * m_pParent; //父窗口,如果在线程中使用AfxGetMainWnd()得到的会错误
  139. BOOL m_bIsEnc;//加密,解密方式
  140. CString m_p12Pwd; //全局私鈅密码,可以在各个操作中使用
  141. char m_strKey[10240];//P12密码,证书路径,或内容
  142. DWORD m_lenKey;//长度
  143. CDropTarget m_Target;
  144. CSafeDataCdbPage * m_pPageCdb;
  145. CString m_strEvpPath; //保存加密生成的文件名,外部调入的.evp文件名
  146. CString m_strSavePath; //解密到的路径
  147. };
  148. //{{AFX_INSERT_LOCATION}}
  149. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  150. #endif // !defined(AFX_SAFEDATASETPAGE_H__9174F171_3067_4C73_AAD1_55D5475BDB1C__INCLUDED_)