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

📄 cisocaview.cpp

📁 运行debug下的cisoca.exe即可。 由于在vc6.0下开发的
💻 CPP
字号:
// CisoCAView.cpp : implementation of the CCisoCAView class
//

#include "stdafx.h"
#include "CisoCA.h"

#include "CisoCADoc.h"
#include "CisoCAView.h"
#include "getpwd.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

extern  CInfoReport InfoReport;
extern  DWORD dwMoudleID;


/////////////////////////////////////////////////////////////////////////////
// CCisoCAView

IMPLEMENT_DYNCREATE(CCisoCAView, CListView)

BEGIN_MESSAGE_MAP(CCisoCAView, CListView)
	//{{AFX_MSG_MAP(CCisoCAView)
	ON_WM_CREATE()
	ON_WM_SHOWWINDOW()
	ON_COMMAND(ID_CA_REVOKE, OnCaRevoke)
	ON_COMMAND(ID_CA_HELP, OnCaHelp)
	ON_COMMAND(ID_HELP_SITE, OnHelpSite)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCisoCAView construction/destruction

CCisoCAView::CCisoCAView()
{
	// TODO: add construction code here

}

CCisoCAView::~CCisoCAView()
{
}

BOOL CCisoCAView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs
	cs.style |= LVS_REPORT;
	//cs.dwExStyle |=LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES;
	return CListView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CCisoCAView drawing

void CCisoCAView::OnDraw(CDC* pDC)
{
	CCisoCADoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	// TODO: add draw code for native data here
}

void CCisoCAView::OnInitialUpdate()
{
	CListView::OnInitialUpdate();
	
	// TODO: You may populate your ListView with items by directly accessing
	//  its list control through a call to GetListCtrl().
	
}

/////////////////////////////////////////////////////////////////////////////
// CCisoCAView diagnostics

#ifdef _DEBUG
void CCisoCAView::AssertValid() const
{
	CListView::AssertValid();
}

void CCisoCAView::Dump(CDumpContext& dc) const
{
	CListView::Dump(dc);
}

CCisoCADoc* CCisoCAView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CCisoCADoc)));
	return (CCisoCADoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CCisoCAView message handlers
void CCisoCAView::OnStyleChanged(int nStyleType, LPSTYLESTRUCT lpStyleStruct)
{
	//TODO: add code to react to the user changing the view style of your window
}

int CCisoCAView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CListView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	DWORD dwStyle = SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE);
	dwStyle |= LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES|LVS_EX_INFOTIP ;
	SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, (LPARAM)dwStyle);
	return 0;
}

void CCisoCAView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) 
{
	// TODO: Add your specialized code here and/or call the base class
	CCisoCADoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	//
	CListCtrl *lc = &GetListCtrl();
	lc->SetBkColor(RGB(254,252,237));
	lc->SetTextBkColor(RGB(254,252,237));
	lc->SetTextColor(RGB(41,57,201));
	lc->DeleteAllItems();
	pDoc->SelectDB(WANT_TO_SHOW_VALID_CERT,lc);
}

void CCisoCAView::OnShowWindow(BOOL bShow, UINT nStatus) 
{
	CListView::OnShowWindow(bShow, nStatus);
	
	// TODO: Add your message handler code here
	CCisoCADoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	CListCtrl *lc = &GetListCtrl();
	//lc->DeleteAllItems();
	LV_COLUMN lvCol;
	lvCol.mask = LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
	// 加入表头信息
	for (int i = 0; i < pDoc->m_ColHeader.m_ColumnCount; ++i)
	{
		lvCol.iSubItem = i;
		lvCol.pszText = (char*)(LPCTSTR)pDoc->m_ColHeader.m_strColumnName[i];
		lvCol.cx = pDoc->m_ColHeader.m_ColumnSize[i];
		lvCol.fmt = LVCFMT_LEFT;
		lc->InsertColumn(i, &lvCol);
	}
	
}

void CCisoCAView::OnCaRevoke() 
{
	// TODO: Add your command handler code here
	InfoReport.WriteInfo(dwMoudleID,"点击吊销证书按钮!");

	CCisoCADoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	if(pDoc->isInit == FALSE)
	{
		AfxMessageBox("CA未初始化!");
		InfoReport.WriteInfo(dwMoudleID,"系统提示 - CA未初始化!");
		return ;
	}

	// 如果没有读入CA证书与私钥,则读入

	if(!pDoc->m_CaCore.HasValidCA())
	{
		CGetPwd gpDlg;
		gpDlg.strTip="请输入CA私钥的密码:";
		if(gpDlg.DoModal() != IDOK ) return;
		int ret= -1;
		ret = pDoc->m_CaCore.GetCertificate(CA_CERTIFICATE,PEM,TRUE);
		if(ret != CA_OK)
		{
			char buf[256]={0};
			pDoc->m_CaCore.GetErrString(buf);
			AfxMessageBox(buf);
			return ;
		}
		ret = pDoc->m_CaCore.GetPrivateKey(CA_PRIVATE_KEY,gpDlg.m_pwd,PEM,TRUE);
		if(ret != CA_OK)
		{
			char buf[256]={0};
			pDoc->m_CaCore.GetErrString(buf);
			AfxMessageBox(buf);
			return ;
		}
	}

	CStringList list;
	CListCtrl *lc = &GetListCtrl();
	int count = lc->GetSelectedCount();
	
	// 边界判断

	if(count <= 0 )
	{
		::MessageBox(NULL,"没有选中证书!","系统提示",MB_OK|MB_ICONINFORMATION);
		return;
	}

	//

	POSITION pos = lc->GetFirstSelectedItemPosition();
	for(int ii=0;ii<count;ii++)
	{
		try
		{
			int item = lc->GetNextSelectedItem(pos);
			CString str = lc->GetItemText(item,0);
			list.AddTail(str);
		}
		catch(CMemoryException e)
		{}
	}

	// 2004/03/25 张荣华 加入对吊销根证书的提示

	for( int i=0; i < list.GetCount(); i++ )
	{
		int ret ;
		CString strSN = list.GetAt(list.FindIndex(i));
		if(strSN.CompareNoCase("0") == 0)
		{
			ret = ::MessageBox(NULL,"你正对根证书进行吊销!    \n这可能使所有的证书失效!!   \n确定要吊销吗????  ",
			"系统警告",MB_OKCANCEL|MB_ICONSTOP);
			if(ret != IDOK)return;
		}		
	}
	
	// 更新数据库、系统显示

	pDoc->UpdateCertState(&list);
	pDoc->UpdateAllViews(0);
}

void CCisoCAView::OnCaHelp() 
{
	// TODO: Add your command handler code here
	HINSTANCE hinstance;
	CString str="http://www.infosecurity.org.cn/forum/forum.html";
	//hinstance=ShellExecute(GetSafeHwnd(),_T("open"),str,NULL,NULL,SW_SHOWNORMAL);
	hinstance=ShellExecute(NULL,_T("open"),str,NULL,NULL,SW_SHOWNORMAL);
}

void CCisoCAView::OnHelpSite() 
{
	// TODO: Add your command handler code here
	HINSTANCE hinstance;
	CString str="http://www.infosecurity.org.cn";
	hinstance=ShellExecute(GetSafeHwnd(),_T("open"),str,NULL,NULL,SW_SHOWNORMAL);

	
}

⌨️ 快捷键说明

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