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

📄 certextpage.cpp

📁 MiniCA V2.0版本源码。《小型CA系统V2.1含源码》发表以来
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// CertExtPage.cpp : implementation file
//

#include "stdafx.h"
#include "MiniCA.h"
#include "CertExtPage.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


/////////////////////////////////////////////////////////////////////////////
// CCertExtPage property page

IMPLEMENT_DYNCREATE(CCertExtPage, CPropertyPage)

CCertExtPage::CCertExtPage() : CPropertyPage(CCertExtPage::IDD)
{
	//{{AFX_DATA_INIT(CCertExtPage)
	m_TypeP12 = 0;
	m_TypeCert = 0;
	//}}AFX_DATA_INIT
	m_CertFormat = PEM;
}

CCertExtPage::~CCertExtPage()
{
}

void CCertExtPage::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCertExtPage)
//	DDX_Control(pDX, IDC_EDIT_PASSWORD4, m_XpEditPwd4);
//	DDX_Control(pDX, IDC_EDIT_PASSWORD3, m_XpEditPwd3);
//	DDX_Control(pDX, IDC_EDIT_PASSWORD2, m_XpEditPwd2);
//	DDX_Control(pDX, IDC_EDIT_PASSWORD, m_XpEditPwd);
	DDX_Control(pDX, IDC_B_OK2, m_Bok2);
	DDX_Control(pDX, IDC_B_OK, m_Bok);
	DDX_Radio(pDX, IDC_R_PARSE, m_TypeP12);
	DDX_Radio(pDX, IDC_RADIO_DERTOPEM, m_TypeCert);
	//}}AFX_DATA_MAP
    DDX_FileEditCtrl(pDX, IDC_EDIT_PATH, m_XpEditPath, FEC_FOLDER);
    DDX_FileEditCtrl(pDX, IDC_EDIT_P12, m_XpEditP12, FEC_FILEOPEN);
    DDX_FileEditCtrl(pDX, IDC_EDIT_KEY, m_XpEditKey, FEC_FILEOPEN);
    DDX_FileEditCtrl(pDX, IDC_EDIT_INFILE, m_XpEditInfile, FEC_FILEOPEN);
    DDX_FileEditCtrl(pDX, IDC_EDIT_OUTFILE, m_XpEditOutfile, FEC_FILEOPEN);
}


BEGIN_MESSAGE_MAP(CCertExtPage, CPropertyPage)
	//{{AFX_MSG_MAP(CCertExtPage)
	ON_BN_CLICKED(IDC_B_OK, OnBOk)
	ON_BN_CLICKED(IDC_R_PARSE, OnRParse)
	ON_BN_CLICKED(IDC_R_CREATE, OnRCreate)
	ON_BN_CLICKED(IDC_R_CHANGEP, OnRChangep)
	ON_BN_CLICKED(IDC_RADIO_PEMTODER, OnRadioPemtoder)
	ON_BN_CLICKED(IDC_RADIO_DERTOPEM, OnRadioDertopem)
	ON_BN_CLICKED(IDC_RADIO_ROOTCH, OnRadioRootch)
	ON_BN_CLICKED(IDC_RADIO_CRLCH, OnRadioCrlch)
	ON_BN_CLICKED(IDC_RADIO_TIEMCH, OnRadioTiemch)
	ON_BN_CLICKED(IDC_RADIO_KEYPAIRCH, OnRadioKeypairch)
	ON_BN_CLICKED(IDC_B_OK2, OnBOk2)
	ON_BN_CLICKED(IDC_R_PARSE2, OnRParse2)
	ON_BN_CLICKED(IDC_R_CREATE2, OnRCreate2)
	ON_BN_CLICKED(IDC_EXT_CHECK1, OnCheck1)
	//}}AFX_MSG_MAP
	ON_NOTIFY_EX(TTN_NEEDTEXT, 0, OnToolTipNotify)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCertExtPage message handlers
BOOL CCertExtPage::OnToolTipNotify( UINT id, NMHDR * pTTTStruct, LRESULT * pResult )
{
	TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pTTTStruct;    
    UINT nID = pTTTStruct->idFrom;
	switch(nID)
	{
	case IDC_EDIT_P12://0-P12提取 1-P12合并 2-P12改密码 3-提取P7 4-合并P7
		{
			if(m_TypeP12 == 0 || m_TypeP12 == 2)
			{
				strcpy(pTTT->szText,CMiniCaApp::NormalCode("选择PFX文件"));//设置
			}
			else if(m_TypeP12 == 1 || m_TypeP12 == 4)
			{
				strcpy(pTTT->szText,CMiniCaApp::NormalCode("选择公钥证书"));//设置
			}
			else if(m_TypeP12 == 3)
			{
				strcpy(pTTT->szText,CMiniCaApp::NormalCode("选择P7B文件"));//设置
			}
			return TRUE;
		}
	case IDC_EDIT_KEY://选择PFX,选择公钥
		{
			if(m_TypeP12 == 1)
			{
				strcpy(pTTT->szText,CMiniCaApp::NormalCode("选择私钥证书"));//设置
			}
			else if(m_TypeP12 == 4)
			{
				strcpy(pTTT->szText,CMiniCaApp::NormalCode("选择黑名单文件"));//设置
			}
			else
			{
				strcpy(pTTT->szText, "");//设置
			}
			return TRUE;
		}
	case IDC_EDIT_PASSWORD://PFX包的密钥
		{
			//设置相应的显示字串
			if(m_TypeP12 == 0)
			{
				strcpy(pTTT->szText,CMiniCaApp::NormalCode("用于解密PFX包的密钥"));//设置
			}
			else if(m_TypeP12 == 1)
			{
				strcpy(pTTT->szText,CMiniCaApp::NormalCode("用于解密私钥的密钥"));//设置
			}
			else
			{
				strcpy(pTTT->szText,CMiniCaApp::NormalCode("PFX包原密钥"));//设置
			}
			return TRUE;
		}
	case IDC_EDIT_PASSWORD2://PFX包的密钥
		{
			//设置相应的显示字串
			if(m_TypeP12 == 0)
			{
				strcpy(pTTT->szText,CMiniCaApp::NormalCode("用于加密私钥的密钥"));//设置
			}
			else if(m_TypeP12 == 1)
			{
				strcpy(pTTT->szText,CMiniCaApp::NormalCode("用于加密PFX包的密钥"));//设置
			}
			else
			{
				strcpy(pTTT->szText,CMiniCaApp::NormalCode("PFX包新密钥"));//设置
			}
			return TRUE;
		}
	case IDC_B_OK://PFX包的密钥
		{
			CString str;
			GetDlgItemText(IDC_EDIT_PASSWORD2,str);//加密密钥
			
			//设置相应的显示字串
			if(m_TypeP12 == 0)
			{
				if(!str.IsEmpty())
					strcpy(pTTT->szText,CMiniCaApp::NormalCode("提取公私钥证书\r当前私钥保护"));//设置
				else
					strcpy(pTTT->szText,CMiniCaApp::NormalCode("提取公私钥证书\r当前私钥未保护"));//设置
			}
			else if(m_TypeP12 == 1)
			{
				if(!str.IsEmpty())
					strcpy(pTTT->szText,CMiniCaApp::NormalCode("合并公私钥证书\r生成PFX包并加密"));//设置
				else
					strcpy(pTTT->szText,CMiniCaApp::NormalCode("合并公私钥证书\r生成PFX包"));//设置
			}
			else if(m_TypeP12 == 2)
			{
				strcpy(pTTT->szText,CMiniCaApp::NormalCode("修改PFX包密码为指定密码"));//设置
			}
			else if(m_TypeP12 == 3)
			{
				strcpy(pTTT->szText,CMiniCaApp::NormalCode("分解P7文件\r分解为公钥证书和黑名单文件"));//设置
			}
			else if(m_TypeP12 == 4)
			{
				strcpy(pTTT->szText,CMiniCaApp::NormalCode("合并P7文件\r合并公钥证书和黑名单文件"));//设置
			}
			return TRUE;
		}
	case IDC_EDIT_INFILE://选择
		{
			//设置相应的显示字串
			if(m_TypeCert == 0 || m_TypeCert == 1 )
			{
				strcpy(pTTT->szText,CMiniCaApp::NormalCode("选择证书文件"));//设置
			}
			else
			{
				strcpy(pTTT->szText,CMiniCaApp::NormalCode("选择公钥证书"));//设置
			}
			return TRUE;
		}
	case IDC_EDIT_OUTFILE://PFX包的密钥
		{
			//设置相应的显示字串
			if(m_TypeCert == 0)
			{
				strcpy(pTTT->szText, "转换后的PEM格式证书存储信息");//设置
			}
			else if(m_TypeCert == 1)
			{
				strcpy(pTTT->szText, "转换后的DER格式证书存储信息");//设置
			}
			else if(m_TypeCert == 2)
			{
				strcpy(pTTT->szText, "选择根证书");//设置
			}
			else if(m_TypeCert == 3)
			{
				strcpy(pTTT->szText, "选择黑名单");//设置
			}
			else if(m_TypeCert == 5)
			{
				strcpy(pTTT->szText, "选择私钥文件");//设置
			}
			return TRUE;
		}
	case IDC_B_OK2://PFX包的密钥
		{
			//设置相应的显示字串
			if(m_TypeCert == 0)
			{
				CString str;
				GetDlgItemText(IDC_EDIT_PASSWORD4,str);//加密密钥
				if(str.IsEmpty())
					strcpy(pTTT->szText,CMiniCaApp::NormalCode("转换证书为PEM格式\r当前私钥未保护"));//设置
				else
					strcpy(pTTT->szText,CMiniCaApp::NormalCode("转换证书为PEM格式\r当前私钥保护"));//设置
			}
			else if(m_TypeCert == 1)
			{
				CString str;
				GetDlgItemText(IDC_EDIT_PASSWORD4,str);//加密密钥
				if(str.IsEmpty())
					strcpy(pTTT->szText,CMiniCaApp::NormalCode("转换证书为DER格式\r当前私钥未保护"));//设置
				else
					strcpy(pTTT->szText,CMiniCaApp::NormalCode("转换证书为DER格式\r当前私钥保护"));//设置
			}
			else if(m_TypeCert == 2)
			{
				strcpy(pTTT->szText,CMiniCaApp::NormalCode("根证书验证\r验证证书是否由根证书颁发"));//设置
			}
			else if(m_TypeCert == 3)
			{
				strcpy(pTTT->szText,CMiniCaApp::NormalCode("黑名单验证\r验证证书是否在作废列表中"));//设置
			}
			else if(m_TypeCert == 4)
			{
				strcpy(pTTT->szText,CMiniCaApp::NormalCode("时效性验证\r验证证书使用期限是否有效期"));//设置
			}
			else if(m_TypeCert == 5)
			{
				strcpy(pTTT->szText,CMiniCaApp::NormalCode("公私钥对验证\r验证公私钥证书密钥对是否匹配"));//设置
			}
			return TRUE;
		}
		
	}
	return(FALSE);
}

BOOL CCertExtPage::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();

	if(!((CMiniCaApp *)AfxGetApp())->IsXpStyle())
	{
		ClassXP(GetDlgItem(IDC_R_PARSE)->m_hWnd,TRUE);
		ClassXP(GetDlgItem(IDC_R_CREATE)->m_hWnd,TRUE);
		ClassXP(GetDlgItem(IDC_R_CHANGEP)->m_hWnd,TRUE);
		ClassXP(GetDlgItem(IDC_R_PARSE2)->m_hWnd,TRUE);
		ClassXP(GetDlgItem(IDC_R_CREATE2)->m_hWnd,TRUE);
		ClassXP(GetDlgItem(IDC_EXT_CHECK1)->m_hWnd,TRUE);
		
		ClassXP(GetDlgItem(IDC_RADIO_DERTOPEM)->m_hWnd,TRUE);
		ClassXP(GetDlgItem(IDC_RADIO_ROOTCH)->m_hWnd,TRUE);
		ClassXP(GetDlgItem(IDC_RADIO_TIEMCH)->m_hWnd,TRUE);
		ClassXP(GetDlgItem(IDC_RADIO_PEMTODER)->m_hWnd,TRUE);
		ClassXP(GetDlgItem(IDC_RADIO_KEYPAIRCH)->m_hWnd,TRUE);
		ClassXP(GetDlgItem(IDC_RADIO_CRLCH)->m_hWnd,TRUE);

		ClassXP(GetDlgItem(IDC_EDIT_PASSWORD)->m_hWnd,TRUE);
		ClassXP(GetDlgItem(IDC_EDIT_PASSWORD2)->m_hWnd,TRUE);
		ClassXP(GetDlgItem(IDC_EDIT_PASSWORD3)->m_hWnd,TRUE);
		ClassXP(GetDlgItem(IDC_EDIT_PASSWORD4)->m_hWnd,TRUE);
	}
	SetDlgItemText(IDC_EDIT_PASSWORD,  "MiniCA");
	SetDlgItemText(IDC_EDIT_PASSWORD2, "MiniCA");
	SetDlgItemText(IDC_EDIT_PASSWORD3, "MiniCA");
	SetDlgItemText(IDC_EDIT_PASSWORD4, "MiniCA");

	SetCheck();

	OnRadioDertopem();

	CXPStyleButtonST::SetAllThemeHelper(this, ((CMiniCaApp *)AfxGetApp())->GetThemeHelperST());
//	m_Bsout.SetIcon(IDI_ICON_SELECTDIR);
//	m_Bsout.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);

//	m_Bsin.SetIcon(IDI_ICON_SELECTDIR);
//	m_Bsin.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);

//	m_Bpub.SetIcon(IDI_ICON_SELECTDIR);
//	m_Bpub.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);

//	m_Bpath.SetIcon(IDI_ICON_DIR);
//	m_Bpath.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);

	m_Bok2.SetIcon(IDI_ICON20);
	m_Bok2.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);


	m_Bok.SetIcon(IDI_ICON20);
	m_Bok.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);


//	m_Bkey.SetIcon(IDI_ICON_SELECTDIR);
//	m_Bkey.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);


    HANDLE handle = ::LoadImage(AfxGetInstanceHandle(),
                                MAKEINTRESOURCE(IDI_ICON_DIR),
                                IMAGE_ICON,
                                0,
                                0,
                                LR_DEFAULTCOLOR);

    m_XpEditPath.SetButtonImage(handle, PJAI_ICON | PJAI_AUTODELETE | PJAI_STRETCHED );
	m_XpEditPath.SetButtonWidth(18);

    m_XpEditP12.SetButtonImage(handle, PJAI_ICON | PJAI_AUTODELETE | PJAI_STRETCHED );
	m_XpEditP12.SetButtonWidth(18);
//	m_XpEditP12.ModifyStyleEx(0, WS_EX_ACCEPTFILES);


    m_XpEditKey.SetButtonImage(handle, PJAI_ICON | PJAI_AUTODELETE | PJAI_STRETCHED );
	m_XpEditKey.SetButtonWidth(18);

    m_XpEditInfile.SetButtonImage(handle, PJAI_ICON | PJAI_AUTODELETE | PJAI_STRETCHED );
	m_XpEditInfile.SetButtonWidth(18);

    m_XpEditOutfile.SetButtonImage(handle, PJAI_ICON | PJAI_AUTODELETE | PJAI_STRETCHED );
	m_XpEditOutfile.SetButtonWidth(18);
	// CG: The following block was added by the ToolTips component.	{		// Create the ToolTip control.		m_toolTip.Create(this);		// TODO: Use one of the following forms to add controls://		m_toolTip.AddTool(GetDlgItem(IDC_B_PATH), CMiniCaApp::NormalCode("文件存储路径"));		m_toolTip.AddTool(GetDlgItem(IDC_EDIT_PATH), "操作结果文件存储路径");
		m_toolTip.AddTool(GetDlgItem(IDC_R_PARSE), CMiniCaApp::NormalCode("分解PKCS#12包\r从PKCS#12包中提取公私钥文件"));		m_toolTip.AddTool(GetDlgItem(IDC_R_CREATE), CMiniCaApp::NormalCode("合并PKCS#12包\r将公私钥文件合并成PKCS#12包"));
		m_toolTip.AddTool(GetDlgItem(IDC_R_CHANGEP), CMiniCaApp::NormalCode("修改PKCS#12包密码"));
		m_toolTip.AddTool(GetDlgItem(IDC_RADIO_DERTOPEM), CMiniCaApp::NormalCode("转换证书格式为PEM"));
		m_toolTip.AddTool(GetDlgItem(IDC_RADIO_PEMTODER), CMiniCaApp::NormalCode("转换证书格式为DER"));
		m_toolTip.AddTool(GetDlgItem(IDC_RADIO_ROOTCH), CMiniCaApp::NormalCode("检验证书是否为根机构颁发"));
		m_toolTip.AddTool(GetDlgItem(IDC_RADIO_CRLCH), CMiniCaApp::NormalCode("检验证书是否在黑名单中"));
		m_toolTip.AddTool(GetDlgItem(IDC_RADIO_TIEMCH), CMiniCaApp::NormalCode("检验证书是否在有效期内"));
		m_toolTip.AddTool(GetDlgItem(IDC_RADIO_KEYPAIRCH), CMiniCaApp::NormalCode("检验公私钥对是否匹配"));
		m_toolTip.AddTool(GetDlgItem(IDC_EDIT_PASSWORD3), CMiniCaApp::NormalCode("解密密钥\r解密私钥文件的密码"));
		m_toolTip.AddTool(GetDlgItem(IDC_EDIT_PASSWORD4), CMiniCaApp::NormalCode("加密密钥\r加密私钥文件的密码"));
		m_toolTip.AddTool(GetDlgItem(IDC_R_PARSE2), CMiniCaApp::NormalCode("分解PKCS#7包\r从PKCS#7包中提取公钥和黑名单文件"));
		m_toolTip.AddTool(GetDlgItem(IDC_R_CREATE2), CMiniCaApp::NormalCode("合并PKCS#7包\r将公钥和黑名单文件合并成PKCS#7包"));
		m_toolTip.AddTool(GetDlgItem(IDC_EXT_CHECK1), "新生成证书文件格式");
		m_toolTip.AddTool(GetDlgItem(IDC_EDIT_P12), LPSTR_TEXTCALLBACK);
		m_toolTip.AddTool(GetDlgItem(IDC_EDIT_KEY), LPSTR_TEXTCALLBACK);
		m_toolTip.AddTool(GetDlgItem(IDC_EDIT_PASSWORD), LPSTR_TEXTCALLBACK);
		m_toolTip.AddTool(GetDlgItem(IDC_EDIT_PASSWORD2), LPSTR_TEXTCALLBACK);
		m_toolTip.AddTool(GetDlgItem(IDC_B_OK), LPSTR_TEXTCALLBACK);
		m_toolTip.AddTool(GetDlgItem(IDC_STATIC_EXT10), LPSTR_TEXTCALLBACK);
		m_toolTip.AddTool(GetDlgItem(IDC_B_OK2), LPSTR_TEXTCALLBACK);
		m_toolTip.AddTool(GetDlgItem(IDC_STATIC_EXT11), LPSTR_TEXTCALLBACK);
		m_toolTip.AddTool(GetDlgItem(IDC_EDIT_INFILE), LPSTR_TEXTCALLBACK);
		m_toolTip.AddTool(GetDlgItem(IDC_EDIT_OUTFILE), LPSTR_TEXTCALLBACK);
	}

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

⌨️ 快捷键说明

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