?? certdbpage.cpp
字號:
// CertDbPage.cpp : implementation file
//
#include "stdafx.h"
#include "minica.h"
#include "CertDbPage.h"
#include "MiniMainDlg.h"
#include ".\GenericClass\Language.h"
#include "minict.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CCertDbPage property page
IMPLEMENT_DYNCREATE(CCertDbPage, CPropertyPage)
CCertDbPage::CCertDbPage() : CPropertyPage(CCertDbPage::IDD)
{
//{{AFX_DATA_INIT(CCertDbPage)
//}}AFX_DATA_INIT
m_IniPathName = ((CMiniCaApp *)AfxGetApp())->GetAppPath() + "\\MiniCA.ini";
}
CCertDbPage::~CCertDbPage()
{
}
void CCertDbPage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCertDbPage)
DDX_Control(pDX, IDC_DB_SAVECDB, m_Bsavecdb);
DDX_Control(pDX, IDC_DB_RESERTDB, m_Bresertdb);
DDX_Control(pDX, IDC_TREE_SETUP, m_TreeSetup);
// DDX_Control(pDX, IDC_EDIT_SAVE, m_CertSave);
DDX_Control(pDX, IDC_DB_SELECT, m_Bselect);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CCertDbPage, CPropertyPage)
//{{AFX_MSG_MAP(CCertDbPage)
ON_BN_CLICKED(IDC_DB_RESERTDB, OnBResertdb)
ON_BN_CLICKED(IDC_DB_SAVECDB, OnBSavecdb)
ON_NOTIFY(NM_RCLICK, IDC_TREE_SETUP, OnRclickTreeSetup)
ON_BN_CLICKED(IDC_DB_SELECT, OnBSelect)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCertDbPage message handlers
BOOL CCertDbPage::OnInitDialog()
{
CPropertyPage::OnInitDialog();
CXPStyleButtonST::SetAllThemeHelper(this, ((CMiniCaApp *)AfxGetApp())->GetThemeHelperST());
m_Bsavecdb.SetIcon(IDI_ICON11);
m_Bsavecdb.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);
m_Bresertdb.SetIcon(IDI_ICON12);
m_Bresertdb.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);
// TODO: Add extra initialization here
CImageList * pImgList = ((CMiniCaApp *)AfxGetApp())->GetImgList();
m_TreeSetup.SetImageList(pImgList,TVSIL_NORMAL);//9 - 15
//24:每個圖片的寬度為24
//24:每個圖片的高度為24
//TRUE 該圖以透明方式顯示
//ILC_COLOR24, 顏色數為24位(其他可選常量祥見有關API)
//16: 創建時容量為3個圖片
//1: 圖片數量超出當前容量時,自動擴容,每次擴容1個圖片的容量
/* m_DbList.SetImageList(pImgList, LVSIL_SMALL);
m_DbList.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_CHECKBOXES);
m_DbList.InsertColumn(0, CMiniCaApp::NormalCode("證書分類"), LVCFMT_LEFT, 130);
m_DbList.InsertColumn(1, CMiniCaApp::NormalCode("序號"), LVCFMT_LEFT, 40);
m_DbList.InsertColumn(2, CMiniCaApp::NormalCode("密鑰"), LVCFMT_LEFT, 40);
m_DbList.InsertColumn(3, CMiniCaApp::NormalCode("用戶信息"), LVCFMT_LEFT, 135);
m_DbList.InsertColumn(4, CMiniCaApp::NormalCode("起始時間"), LVCFMT_LEFT, 70);
m_DbList.InsertColumn(5, CMiniCaApp::NormalCode("有效期"), LVCFMT_LEFT, 50);
*/
// m_TreeSetup.m_HtreeList.RemoveAll();//清除列表
m_hItem[0] = m_TreeSetup.InsertItem(MiniCT_1800, 0, 0); //證書庫 m_hItem[0]
m_TreeSetup.SetItemImage(m_hItem[0],0,0);
m_TreeSetup.SetItemData(m_hItem[0],0);//根為0
HTREEITEM hItemSecond = TVI_ROOT;//二級
HTREEITEM hItemThird = TVI_ROOT;//三級
HTREEITEM hItemFour = TVI_ROOT;//四級
m_hItem[1] = m_TreeSetup.InsertItem(MiniCT_1801, 0, 0, m_hItem[0]); //根證書(Highest) hItemSecond
m_TreeSetup.SetItemImage(m_hItem[1],0,0);
m_TreeSetup.SetItemData(m_hItem[1],1);//根證書為1
m_hItem[2] = m_TreeSetup.InsertItem(MiniCT_1802, 0, 0,m_hItem[1]); //根證書公鑰 hItemThird
m_TreeSetup.SetItemImage(m_hItem[2],0,0);
m_TreeSetup.SetItemData(m_hItem[2],10);//根證書公鑰10
m_hItem[3] = m_TreeSetup.InsertItem(MiniCT_1803, 0, 0,m_hItem[2]); //公鑰文件 hItemFour
m_TreeSetup.SetItemImage(m_hItem[3],3,3);
m_TreeSetup.SetItemData(m_hItem[3],100);//根證書公鑰文件為100
m_TreeSetup.m_HtreeList.AddTail(m_hItem[3]);
m_hItem[4] = m_TreeSetup.InsertItem(MiniCT_1804, 0, 0,m_hItem[1]); //根證書私鑰 hItemThird
m_TreeSetup.SetItemImage(m_hItem[4],0,0);
m_TreeSetup.SetItemData(m_hItem[4],11);//根證書私鑰為11
m_hItem[5] = m_TreeSetup.InsertItem(MiniCT_1805, 0, 0,m_hItem[4]); //私鑰文件 hItemFour
m_TreeSetup.SetItemImage(m_hItem[5],3,3);
m_TreeSetup.SetItemData(m_hItem[5],110);//根證書私鑰文件為110
m_TreeSetup.m_HtreeList.AddTail(m_hItem[5]);
m_hItem[6] = m_TreeSetup.InsertItem("********", 0, 0,m_hItem[4]); //hItemFour
m_TreeSetup.SetItemImage(m_hItem[6],5,5);
m_TreeSetup.SetItemData(m_hItem[6],111);//根證書私鑰密鑰111
m_hItem[7] = m_TreeSetup.InsertItem(MiniCT_1806, 0, 0,m_hItem[0]); //根證書(Higher) hItemSecond
m_TreeSetup.SetItemImage(m_hItem[7],0,0);
m_TreeSetup.SetItemData(m_hItem[7],2);//服務器證書為2
m_hItem[8] = m_TreeSetup.InsertItem(MiniCT_1802, 0, 0,m_hItem[7]); //hItemThird
m_TreeSetup.SetItemImage(m_hItem[8],0,0);
m_TreeSetup.SetItemData(m_hItem[8],20);//服務器公鑰20
m_hItem[9] = m_TreeSetup.InsertItem(MiniCT_1803, 0, 0,m_hItem[8]); //hItemFour
m_TreeSetup.SetItemImage(m_hItem[9],3,3);
m_TreeSetup.SetItemData(m_hItem[9],200);//公鑰文件200
m_TreeSetup.m_HtreeList.AddTail(m_hItem[9]);
m_hItem[10] = m_TreeSetup.InsertItem(MiniCT_1804, 0, 0,m_hItem[7]); //hItemThird
m_TreeSetup.SetItemImage(m_hItem[10],0,0);
m_TreeSetup.SetItemData(m_hItem[10],21);//服務器私鑰為21
m_hItem[11] = m_TreeSetup.InsertItem(MiniCT_1805, 0, 0,m_hItem[10]); //hItemFour
m_TreeSetup.SetItemImage(m_hItem[11],3,3);
m_TreeSetup.SetItemData(m_hItem[11],210);//私鑰文件為210
m_TreeSetup.m_HtreeList.AddTail(m_hItem[11]);
m_hItem[12] = m_TreeSetup.InsertItem("********", 0, 0,m_hItem[10]); //hItemFour
m_TreeSetup.SetItemImage(m_hItem[12],5,5);
m_TreeSetup.SetItemData(m_hItem[12],211);//私鑰密鑰211
m_hItem[13] = m_TreeSetup.InsertItem(MiniCT_1807, 0, 0,m_hItem[0]); //根證書(High) hItemSecond
m_TreeSetup.SetItemImage(m_hItem[13],0,0);
m_TreeSetup.SetItemData(m_hItem[13],3);//客戶端證書為3
m_hItem[14] = m_TreeSetup.InsertItem(MiniCT_1802, 0, 0,m_hItem[13]); //hItemThird
m_TreeSetup.SetItemImage(m_hItem[14],0,0);
m_TreeSetup.SetItemData(m_hItem[14],30);//客戶端公鑰為30
m_hItem[15] = m_TreeSetup.InsertItem(MiniCT_1803, 0, 0,m_hItem[14]); //hItemFour
m_TreeSetup.SetItemImage(m_hItem[15],3,3);
m_TreeSetup.SetItemData(m_hItem[15],300);//客戶端公鑰文件為300
m_TreeSetup.m_HtreeList.AddTail(m_hItem[15]);
m_hItem[16] = m_TreeSetup.InsertItem(MiniCT_1804, 0, 0,m_hItem[13]); //hItemThird
m_TreeSetup.SetItemImage(m_hItem[16],0,0);
m_TreeSetup.SetItemData(m_hItem[16],31);//客戶端私鑰為31
m_hItem[17] = m_TreeSetup.InsertItem(MiniCT_1805, 0, 0,m_hItem[16]); //hItemFour
m_TreeSetup.SetItemImage(m_hItem[17],3,3);
m_TreeSetup.SetItemData(m_hItem[17],310);//私鑰文件為310
m_TreeSetup.m_HtreeList.AddTail(m_hItem[17]);
m_hItem[18] = m_TreeSetup.InsertItem("********", 0, 0,m_hItem[16]); //hItemFour
m_TreeSetup.SetItemImage(m_hItem[18],5,5);
m_TreeSetup.SetItemData(m_hItem[18],311);//私鑰密鑰為311
m_hItem[19] = m_TreeSetup.InsertItem(MiniCT_1808, 0, 0,m_hItem[0]); //根證書(Low) hItemSecond
m_TreeSetup.SetItemImage(m_hItem[19],0,0);
m_TreeSetup.SetItemData(m_hItem[19],4);//加密證書4
m_hItem[20] = m_TreeSetup.InsertItem(MiniCT_1802, 0, 0,m_hItem[19]); //hItemThird
m_TreeSetup.SetItemImage(m_hItem[20],0,0);
m_TreeSetup.SetItemData(m_hItem[20],40);//公鑰為40
m_hItem[21] = m_TreeSetup.InsertItem(MiniCT_1803, 0, 0,m_hItem[20]); //hItemFour
m_TreeSetup.SetItemImage(m_hItem[21],3,3);
m_TreeSetup.SetItemData(m_hItem[21],400);//公鑰文件400
m_TreeSetup.m_HtreeList.AddTail(m_hItem[21]);
m_hItem[22] = m_TreeSetup.InsertItem(MiniCT_1804, 0, 0,m_hItem[19]); //hItemThird
m_TreeSetup.SetItemImage(m_hItem[22],0,0);
m_TreeSetup.SetItemData(m_hItem[22],41);//私鑰為41
m_hItem[23] = m_TreeSetup.InsertItem(MiniCT_1805, 0, 0,m_hItem[22]); //hItemFour
m_TreeSetup.SetItemImage(m_hItem[23],3,3);
m_TreeSetup.SetItemData(m_hItem[23],410);//私鑰文件為410
m_TreeSetup.m_HtreeList.AddTail(m_hItem[23]);
m_hItem[24] = m_TreeSetup.InsertItem("********", 0, 0,m_hItem[22]); //hItemFour
m_TreeSetup.SetItemImage(m_hItem[24],5,5);
m_TreeSetup.SetItemData(m_hItem[24],411);//私鑰密鑰為411
m_hItem[25] = m_TreeSetup.InsertItem(MiniCT_1809, 0, 0,m_hItem[0]); //hItemSecond
m_TreeSetup.SetItemImage(m_hItem[25],0,0);
m_TreeSetup.SetItemData(m_hItem[25],5);//簽名為5
m_hItem[26] = m_TreeSetup.InsertItem(MiniCT_1802, 0, 0,m_hItem[25]); //hItemThird
m_TreeSetup.SetItemImage(m_hItem[26],0,0);
m_TreeSetup.SetItemData(m_hItem[26],50);//驗證公鑰50
m_hItem[27] = m_TreeSetup.InsertItem(MiniCT_1803, 0, 0,m_hItem[26]); //hItemFour
m_TreeSetup.SetItemImage(m_hItem[27],3,3);
m_TreeSetup.SetItemData(m_hItem[27],500);//公鑰文件為500
m_TreeSetup.m_HtreeList.AddTail(m_hItem[27]);
m_hItem[28] = m_TreeSetup.InsertItem(MiniCT_1804, 0, 0,m_hItem[25]); //hItemThird
m_TreeSetup.SetItemImage(m_hItem[28],0,0);
m_TreeSetup.SetItemData(m_hItem[28],51);//簽名私鑰為51
m_hItem[29] = m_TreeSetup.InsertItem(MiniCT_1805, 0, 0,m_hItem[28]); //hItemFour
m_TreeSetup.SetItemImage(m_hItem[29],3,3);
m_TreeSetup.SetItemData(m_hItem[29],510);//私鑰文件510
m_TreeSetup.m_HtreeList.AddTail(m_hItem[29]);
m_hItem[30] = m_TreeSetup.InsertItem("********", 0, 0,m_hItem[28]); //hItemFour
m_TreeSetup.SetItemImage(m_hItem[30],5,5);
m_TreeSetup.SetItemData(m_hItem[30],511);//私鑰密鑰511
// hItemFour = m_TreeSetup.InsertItem(_T("Your First Name (Example of edit box)"), 10, 10);
// m_TreeSetup.AddEditBox(hItemFour, RUNTIME_CLASS(CDemoEdit));
m_TreeSetup.EnsureVisible(m_hItem[0]);
// m_TreeSetup.Expand(m_TreeSetup.GetRootItem(),TVE_EXPAND);
// CG: The following block was added by the ToolTips component. { // Create the ToolTip control. m_toolTip.Create(this); m_toolTip.AddTool(GetDlgItem(IDC_TREE_SETUP), "根證書庫\r可設置五個不同級別的根證書");
m_toolTip.AddTool(GetDlgItem(IDC_DB_RESERTDB), "重置證書庫\r操作不可恢復");
m_toolTip.AddTool(GetDlgItem(IDC_DB_SAVECDB), "保存證書庫\r保存后新配置生效");
m_toolTip.AddTool(GetDlgItem(IDC_DB_SELECT), "選擇全局證書存儲路徑");
m_toolTip.AddTool(GetDlgItem(IDC_EDIT_SAVE), "全局證書存儲路徑\r默認情況下的證書存儲路徑");
m_toolTip.AddTool(GetDlgItem(IDC_DB_RADIO1), "全局證書命名方式\r行如:hpxs.Cer");
m_toolTip.AddTool(GetDlgItem(IDC_DB_RADIO2), "全局證書命名方式\r行如:hpxs100.Cer");
m_toolTip.AddTool(GetDlgItem(IDC_DB_RADIO3), "全局證書命名方式\r行如:100hpxs.Cer");
m_toolTip.AddTool(GetDlgItem(IDC_DB_RADIO4), "全局證書命名方式\r行如:100.Cer");
// TODO: Use one of the following forms to add controls: }
((CButton*)GetDlgItem(IDC_DB_RADIO2))->SetCheck(true);
if(!((CMiniCaApp *)AfxGetApp())->IsXpStyle())
{
ClassXP(GetDlgItem(IDC_DB_RADIO1)->m_hWnd,TRUE);
ClassXP(GetDlgItem(IDC_DB_RADIO2)->m_hWnd,TRUE);
ClassXP(GetDlgItem(IDC_DB_RADIO3)->m_hWnd,TRUE);
ClassXP(GetDlgItem(IDC_DB_RADIO4)->m_hWnd,TRUE);
ClassXP(GetDlgItem(IDC_EDIT_SAVE)->m_hWnd,TRUE);
}
CXPStyleButtonST::SetAllThemeHelper(this,
((CMiniCaApp *)AfxGetApp())->GetThemeHelperST());
m_Bselect.SetIcon(IDI_ICON12);
m_Bselect.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);
CString strRoot = ((CMiniCaApp *)AfxGetApp())->GetAppPath();
CString strPath;
GetPrivateProfileString("PATH", "Cert","",strPath.GetBuffer(256),255, m_IniPathName);
strPath.ReleaseBuffer();//在 GetBuffer 和 ReleaseBuffer 之間這個范圍,一定不能使用你要操作的這個緩沖的 CString 對象的任何方法
if(strPath.IsEmpty())
SetCaPath(strRoot);
else
SetCaPath(strPath);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
/*void CCertDbPage::OnBSave() //寫入注冊表
{
// TODO: Add your control notification handler code here
CString strRegCode,strRootCert,strRootP12,strRootPwd,strServerP12,strServerPwd,strClientP12,strClientPwd;
GetDlgItemText(IDC_EDIT2,strRootP12);
GetDlgItemText(IDC_EDIT5,strRootPwd);
GetDlgItemText(IDC_EDIT3,strServerP12);
GetDlgItemText(IDC_EDIT6,strServerPwd);
GetDlgItemText(IDC_EDIT4,strClientP12);
GetDlgItemText(IDC_EDIT7,strClientPwd);
GetDlgItemText(IDC_EDIT_REGCODE,strRegCode);
CString RegMiniCA,RegRootCert,RegRootP12,RegRootPwd,RegServerP12,RegServerPwd,RegClientP12,
RegClientPwd;//注冊表項
RegMiniCA.LoadString(IDS_REG_KEY);
RegRootCert.LoadString(IDS_ROOT_CERT);
RegRootP12.LoadString(IDS_ROOT_P12);
RegRootPwd.LoadString(IDS_ROOT_PWD);
RegServerP12.LoadString(IDS_SERVER_P12);
RegServerPwd.LoadString(IDS_SERVER_PWD);
RegClientP12.LoadString(IDS_CLIENT_P12);
RegClientPwd.LoadString(IDS_CLIENT_PWD);
HKEY hKey = NULL;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,RegMiniCA, 0, KEY_SET_VALUE, &hKey)!=ERROR_SUCCESS) //打開錯誤
{
return;
}
//加密各信息 注冊碼作為pwd
char encInfo[512]={0};
UINT encLen=0;
char outMsg[100]={0};
if(strRootP12.IsEmpty())//如果為空,則不進行加密,直接刪除Reg
{
RegDeleteValue(hKey,RegRootP12);
}
else if(Crypt("idea-cbc",strRootP12.GetBuffer(0),strRootP12.GetLength(),encInfo,encLen,
strRegCode.GetBuffer(0),1,outMsg,NULL))
{
if (RegSetValueEx(hKey,RegRootP12,0,REG_BINARY,(UCHAR *)encInfo,encLen)!=ERROR_SUCCESS)
{
AddMsg("創建RootP12鍵錯誤",M_ERROR);
}
memset(encInfo,0,512);
encLen=0;
}
if(strRootPwd.IsEmpty())//如果為空,則不進行加密,直接刪除Reg
{
RegDeleteValue(hKey,RegRootPwd);
}
else if(Crypt("idea-cbc",strRootPwd.GetBuffer(0),strRootPwd.GetLength(),encInfo,encLen,
strRegCode.GetBuffer(0),1,outMsg,NULL))
{
if (RegSetValueEx(hKey,RegRootPwd,0,REG_BINARY,(UCHAR *)encInfo,encLen)!=ERROR_SUCCESS)
{
AddMsg("創建RegRootPwd鍵錯誤",M_ERROR);
}
memset(encInfo,0,512);
encLen=0;
}
if(strServerP12.IsEmpty())//如果為空,則不進行加密,直接刪除Reg
{
RegDeleteValue(hKey,RegServerP12);
}
else if(Crypt("idea-cbc",strServerP12.GetBuffer(0),strServerP12.GetLength(),encInfo,encLen,
strRegCode.GetBuffer(0),1,outMsg,NULL))
{
if (RegSetValueEx(hKey,RegServerP12,0,REG_BINARY,(UCHAR *)encInfo,encLen)!=ERROR_SUCCESS)
{
AddMsg("創建RegServerP12鍵錯誤",M_ERROR);
}
memset(encInfo,0,512);
encLen=0;
}
if(strServerPwd.IsEmpty())//如果為空,則不進行加密,直接刪除Reg
{
RegDeleteValue(hKey,RegServerPwd);
}
else if(Crypt("idea-cbc",strServerPwd.GetBuffer(0),strServerPwd.GetLength(),encInfo,encLen,
strRegCode.GetBuffer(0),1,outMsg,NULL))
{
if(RegSetValueEx(hKey,RegServerPwd,0,REG_BINARY,(UCHAR *)encInfo,encLen)!=ERROR_SUCCESS)
{
AddMsg("創建RegServerPwd鍵錯誤",M_ERROR);
}
memset(encInfo,0,512);
encLen=0;
}
if(strClientP12.IsEmpty())//如果為空,則不進行加密,直接刪除Reg
{
RegDeleteValue(hKey,RegClientP12);
}
else if(Crypt("idea-cbc",strClientP12.GetBuffer(0),strClientP12.GetLength(),encInfo,encLen,
strRegCode.GetBuffer(0),1,outMsg,NULL))
{
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -