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

CA认证

开发平台:

Visual C++

  1. // CaCertTypePage.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "minica.h"
  5. #include "CaCertTypePage.h"
  6. #include ".GenericClassLanguage.h"
  7. #include "minict.h"
  8. #include "MiniMainDlg.h"
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14. /////////////////////////////////////////////////////////////////////////////
  15. // CCaCertTypePage property page
  16. char * CERTUSAGE[] =
  17. {
  18. "Digital Signature",
  19. "Non Repudiation",
  20. "Key Encipherment",
  21. "Data Encipherment",
  22. "Key Agreement",
  23. "Key CertSign",
  24. "Crl Sign",
  25. "Encipher Only",
  26. "Decipher Only",
  27. "1.3.6.1.4.1.311.10.3.1",
  28. "1.3.6.1.4.1.311.10.3.10",
  29. "1.3.6.1.4.1.311.10.3.11",
  30. "1.3.6.1.4.1.311.10.6.2",
  31. "1.3.6.1.4.1.311.10.3.13",
  32. "1.3.6.1.4.1.311.10.3.2",
  33. "1.3.6.1.4.1.311.10.3.4",
  34. "1.3.6.1.4.1.311.10.3.4.1",
  35. "1.3.6.1.4.1.311.10.3.9",
  36. "1.3.6.1.4.1.311.10.5.1",
  37. "1.3.6.1.4.1.311.10.6.1",
  38. "1.3.6.1.4.1.311.10.3.12",
  39. "1.3.6.1.4.1.311.20.2.1",
  40. "1.3.6.1.4.1.311.20.2.2",
  41. "1.3.6.1.4.1.311.21.5",
  42. "1.3.6.1.4.1.311.10.3.5",
  43. "1.3.6.1.4.1.311.21.6",
  44. "1.3.6.1.5.5.7.3.3",
  45. "1.3.6.1.5.5.7.3.8",
  46. "1.3.6.1.5.5.7.3.2",
  47. "1.3.6.1.5.5.7.3.4",
  48. "1.3.6.1.5.5.7.3.1",
  49. "1.3.6.1.5.5.7.3.7",
  50. "1.3.6.1.5.5.8.2.2",
  51. "1.3.6.1.4.1.311.10.3.7",
  52. "1.3.6.1.5.5.7.3.5",
  53. "1.3.6.1.5.5.7.3.6",
  54. "1.3.6.1.4.1.311.21.19",
  55. "1.3.6.1.4.1.311.10.3.8",
  56. "1.3.6.1.4.1.311.10.3.6",
  57. "2.5.29.32.0",
  58. NULL
  59. };
  60. IMPLEMENT_DYNCREATE(CCaCertTypePage, CPropertyPage)
  61. CCaCertTypePage::CCaCertTypePage() : CPropertyPage(CCaCertTypePage::IDD)
  62. {
  63. //{{AFX_DATA_INIT(CCaCertTypePage)
  64. m_CertType = 1;
  65. //}}AFX_DATA_INIT
  66. m_bTestCheck = TRUE;
  67. }
  68. CCaCertTypePage::~CCaCertTypePage()
  69. {
  70. }
  71. void CCaCertTypePage::DoDataExchange(CDataExchange* pDX)
  72. {
  73. CPropertyPage::DoDataExchange(pDX);
  74. //{{AFX_DATA_MAP(CCaCertTypePage)
  75. DDX_Radio(pDX, IDC_RADIO01, m_CertType);
  76. //}}AFX_DATA_MAP
  77. DDX_Check(pDX, IDC_CHECK2, m_bTestCheck);
  78. }
  79. BEGIN_MESSAGE_MAP(CCaCertTypePage, CPropertyPage)
  80. //{{AFX_MSG_MAP(CCaCertTypePage)
  81. ON_BN_CLICKED(IDC_RADIO01, OnRadio1)
  82. ON_BN_CLICKED(IDC_RADIO02, OnRadio2)
  83. ON_BN_CLICKED(IDC_RADIO03, OnRadio3)
  84. ON_BN_CLICKED(IDC_RADIO04, OnRadio4)
  85. ON_BN_CLICKED(IDC_RADIO05, OnRadio5)
  86. ON_BN_CLICKED(IDC_RADIO06, OnRadio6)
  87. ON_BN_CLICKED(IDC_RADIO07, OnRadio7)
  88. ON_BN_CLICKED(IDC_RADIO08, OnRadio8)
  89. ON_BN_CLICKED(IDC_RADIO09, OnRadio9)
  90. ON_BN_CLICKED(IDC_RADIO10, OnRadio10)
  91. ON_BN_CLICKED(IDC_RADIO11, OnRadio11)
  92. //}}AFX_MSG_MAP
  93. END_MESSAGE_MAP()
  94. /////////////////////////////////////////////////////////////////////////////
  95. // CCaCertTypePage message handlers
  96. BOOL CCaCertTypePage::OnInitDialog() 
  97. {
  98. CPropertyPage::OnInitDialog();
  99. for(int i = IDC_CHECK2; i <= IDC_CHECK10; i++)
  100. {
  101. ((CButton*)GetDlgItem(i))->SetCheck(true);
  102. }
  103. // TODO: Add extra initialization here
  104. if(!((CMiniCaApp *)AfxGetApp())->IsXpStyle())
  105. {
  106. ClassXP(GetDlgItem(IDC_RADIO01)->m_hWnd,TRUE);
  107. ClassXP(GetDlgItem(IDC_RADIO02)->m_hWnd,TRUE);
  108. ClassXP(GetDlgItem(IDC_RADIO03)->m_hWnd,TRUE);
  109. ClassXP(GetDlgItem(IDC_RADIO04)->m_hWnd,TRUE);
  110. ClassXP(GetDlgItem(IDC_RADIO05)->m_hWnd,TRUE);
  111. ClassXP(GetDlgItem(IDC_RADIO06)->m_hWnd,TRUE);
  112. ClassXP(GetDlgItem(IDC_RADIO07)->m_hWnd,TRUE);
  113. ClassXP(GetDlgItem(IDC_RADIO08)->m_hWnd,TRUE);
  114. ClassXP(GetDlgItem(IDC_RADIO09)->m_hWnd,TRUE);
  115. ClassXP(GetDlgItem(IDC_RADIO10)->m_hWnd,TRUE);
  116. ClassXP(GetDlgItem(IDC_RADIO11)->m_hWnd,TRUE);
  117. ClassXP(GetDlgItem(IDC_CHECK2)->m_hWnd,TRUE);
  118. ClassXP(GetDlgItem(IDC_CHECK3)->m_hWnd,TRUE);
  119. ClassXP(GetDlgItem(IDC_CHECK4)->m_hWnd,TRUE);
  120. ClassXP(GetDlgItem(IDC_CHECK5)->m_hWnd,TRUE);
  121. ClassXP(GetDlgItem(IDC_CHECK6)->m_hWnd,TRUE);
  122. ClassXP(GetDlgItem(IDC_CHECK7)->m_hWnd,TRUE);
  123. ClassXP(GetDlgItem(IDC_CHECK8)->m_hWnd,TRUE);
  124. ClassXP(GetDlgItem(IDC_CHECK9)->m_hWnd,TRUE);
  125. ClassXP(GetDlgItem(IDC_CHECK10)->m_hWnd,TRUE);
  126. ClassXP(GetDlgItem(IDC_CHECK11)->m_hWnd,TRUE);
  127. ClassXP(GetDlgItem(IDC_CHECK12)->m_hWnd,TRUE);
  128. ClassXP(GetDlgItem(IDC_CHECK13)->m_hWnd,TRUE);
  129. ClassXP(GetDlgItem(IDC_CHECK14)->m_hWnd,TRUE);
  130. ClassXP(GetDlgItem(IDC_CHECK15)->m_hWnd,TRUE);
  131. ClassXP(GetDlgItem(IDC_CHECK16)->m_hWnd,TRUE);
  132. ClassXP(GetDlgItem(IDC_CHECK17)->m_hWnd,TRUE);
  133. ClassXP(GetDlgItem(IDC_CHECK18)->m_hWnd,TRUE);
  134. ClassXP(GetDlgItem(IDC_CHECK19)->m_hWnd,TRUE);
  135. ClassXP(GetDlgItem(IDC_CHECK20)->m_hWnd,TRUE);
  136. ClassXP(GetDlgItem(IDC_CHECK21)->m_hWnd,TRUE);
  137. ClassXP(GetDlgItem(IDC_CHECK22)->m_hWnd,TRUE);
  138. ClassXP(GetDlgItem(IDC_CHECK23)->m_hWnd,TRUE);
  139. ClassXP(GetDlgItem(IDC_CHECK24)->m_hWnd,TRUE);
  140. ClassXP(GetDlgItem(IDC_CHECK25)->m_hWnd,TRUE);
  141. ClassXP(GetDlgItem(IDC_CHECK26)->m_hWnd,TRUE);
  142. ClassXP(GetDlgItem(IDC_CHECK27)->m_hWnd,TRUE);
  143. ClassXP(GetDlgItem(IDC_CHECK28)->m_hWnd,TRUE);
  144. ClassXP(GetDlgItem(IDC_CHECK29)->m_hWnd,TRUE);
  145. ClassXP(GetDlgItem(IDC_CHECK30)->m_hWnd,TRUE);
  146. ClassXP(GetDlgItem(IDC_CHECK31)->m_hWnd,TRUE);
  147. ClassXP(GetDlgItem(IDC_CHECK32)->m_hWnd,TRUE);
  148. ClassXP(GetDlgItem(IDC_CHECK33)->m_hWnd,TRUE);
  149. ClassXP(GetDlgItem(IDC_CHECK34)->m_hWnd,TRUE);
  150. ClassXP(GetDlgItem(IDC_CHECK35)->m_hWnd,TRUE);
  151. ClassXP(GetDlgItem(IDC_CHECK36)->m_hWnd,TRUE);
  152. ClassXP(GetDlgItem(IDC_CHECK37)->m_hWnd,TRUE);
  153. ClassXP(GetDlgItem(IDC_CHECK38)->m_hWnd,TRUE);
  154. ClassXP(GetDlgItem(IDC_CHECK39)->m_hWnd,TRUE);
  155. ClassXP(GetDlgItem(IDC_CHECK40)->m_hWnd,TRUE);
  156. ClassXP(GetDlgItem(IDC_CHECK41)->m_hWnd,TRUE);
  157. }
  158. // m_CertType = 2;
  159. OnRadio2();
  160. return TRUE;
  161. // return TRUE unless you set the focus to a control
  162.               // EXCEPTION: OCX Property Pages should return FALSE
  163. }
  164. void CCaCertTypePage::GetCertTypeInfo(CStaticTreeCtrl * p_WizardTree,
  165.  HTREENODE & hTypeType, 
  166.  HTREENODE &  hTypeKusage, 
  167.  HTREENODE &  hTypeEkusage)
  168. {
  169. CString info,type,keyuse,ekeyuse;
  170.  //  数证类型 ,单选按钮
  171. for(int i = IDC_RADIO11; i >= IDC_RADIO01; i--)
  172. {
  173. if(((CButton*)GetDlgItem(i))->GetCheck())//选中
  174. {
  175. GetDlgItemText(i,type);
  176. m_CertType = i - IDC_RADIO01;
  177. break;
  178. }
  179. }
  180.  //  密钥用法 ,复选按钮
  181. for(i = IDC_CHECK10; i >= IDC_CHECK2; i--)
  182. {
  183. if(((CButton*)GetDlgItem(i))->GetCheck())//选中
  184. {
  185. CString str,temp;
  186. GetDlgItemText(i,temp);
  187. str.Format("%s-%s(%d)", temp, CERTUSAGE[i - IDC_CHECK2], i-IDC_CHECK2);
  188. p_WizardTree->InsertChild( hTypeKusage, _T(str) );
  189. keyuse += str;
  190. }
  191. }
  192. if(keyuse.IsEmpty())
  193. {
  194. p_WizardTree->InsertChild( hTypeKusage, _T(CMiniCaApp::NormalCode("未指定")));
  195. }
  196.  //   增强密钥用法
  197. for(i = IDC_CHECK41; i >= IDC_CHECK11; i--)
  198. {
  199. if(((CButton*)GetDlgItem(i))->GetCheck())//选中
  200. {
  201. CString str,temp;
  202. GetDlgItemText(i,temp);
  203. str.Format("%s-%s(%d)", temp, CERTUSAGE[i - IDC_CHECK2], i-IDC_CHECK11);
  204. p_WizardTree->InsertChild( hTypeEkusage, _T(str) );
  205. ekeyuse += str;
  206. }
  207. }
  208. if(ekeyuse.IsEmpty())
  209. {
  210. p_WizardTree->InsertChild( hTypeEkusage, _T(CMiniCaApp::NormalCode("未指定")));
  211. }
  212. CString strType;
  213. strType.Format("%s(%d)",type,m_CertType);
  214. p_WizardTree->InsertChild( hTypeType, strType);
  215. // info.Format("n密钥用法:n%s增强型密钥用法:n%s",,
  216. // keyuse,ekeyuse);
  217. }
  218. void CCaCertTypePage::GetCert(CString & kusage, CString & ekusage, int & type)
  219. {
  220. CString strTemp,strkusage,strekusage;
  221. for(int i = IDC_CHECK2; i <= IDC_CHECK10; i++)
  222. {
  223. if(((CButton*)GetDlgItem(i))->GetCheck())//选中
  224. {
  225. //得到静态数组对应的内容 i - IDC_CHECK2
  226. strkusage += CERTUSAGE[i - IDC_CHECK2];
  227. strkusage += ",";
  228. }
  229. }
  230. if(!strkusage.IsEmpty())
  231. {
  232. kusage = strkusage.Left(strkusage.GetLength() - 1);//去掉,
  233. }
  234. for(i = IDC_CHECK11; i <= IDC_CHECK41; i++)
  235. {
  236. if(((CButton*)GetDlgItem(i))->GetCheck())//选中
  237. {
  238. strekusage += CERTUSAGE[i - IDC_CHECK2];
  239. strekusage += ",";
  240. }
  241. }
  242. if(!strekusage.IsEmpty())
  243. {
  244. ekusage = strekusage.Left(strekusage.GetLength() - 1);//去掉,
  245. }
  246. type = m_CertType;
  247. }
  248. void CCaCertTypePage::OnRadio1() //根证书
  249. {
  250. // TODO: Add your control notification handler code here
  251. SetState(FALSE,"1,5,6");
  252. }
  253. void CCaCertTypePage::OnRadio2() //自定证书
  254. {
  255. // TODO: Add your control notification handler code here
  256. SetState(FALSE,"");
  257. }
  258. void CCaCertTypePage::OnRadio3() //代码签名
  259. {
  260. // TODO: Add your control notification handler code here
  261. SetState(FALSE,"0,26");
  262. }
  263. void CCaCertTypePage::OnRadio4() //计算机
  264. {
  265. // TODO: Add your control notification handler code here
  266. SetState(FALSE,"0,4,28,30");
  267. }
  268. void CCaCertTypePage::OnRadio5() //WEB服务器
  269. {
  270. // TODO: Add your control notification handler code here
  271. SetState(FALSE,"0,1,2,3,4,30");
  272. }
  273. void CCaCertTypePage::OnRadio6() //客户端
  274. {
  275. // TODO: Add your control notification handler code here
  276. SetState(FALSE,"0,1,2,3,28");
  277. }
  278. void CCaCertTypePage::OnRadio7() //信任列表签名
  279. {
  280. // TODO: Add your control notification handler code here
  281. SetState(FALSE,"0,9");
  282. }
  283. void CCaCertTypePage::OnRadio8() //时间戳
  284. {
  285. // TODO: Add your control notification handler code here
  286. SetState(FALSE,"0,1,2,3,27");
  287. }
  288. void CCaCertTypePage::OnRadio9() //IPSEC
  289. {
  290. // TODO: Add your control notification handler code here
  291. SetState(FALSE,"0,1,2,3,32");
  292. }
  293. void CCaCertTypePage::OnRadio10() //安全Email
  294. {
  295. // TODO: Add your control notification handler code here
  296. SetState(FALSE,"0,1,2,3,29");
  297. }
  298. void CCaCertTypePage::OnRadio11() //智能卡登陆
  299. {
  300. // TODO: Add your control notification handler code here
  301. SetState(FALSE,"0,4,8,11,15,22");
  302. }
  303. void CCaCertTypePage::SetState(BOOL bEnable,CString  strCheck)
  304. {
  305. for(int i = IDC_CHECK2; i <= IDC_CHECK41; i++)
  306. {
  307. // GetDlgItem(i)->EnableWindow(bEnable);
  308. if(!bEnable)
  309. ((CButton*)GetDlgItem(i))->SetCheck(FALSE);
  310. }
  311. strCheck += ",";
  312. CString strL;
  313. for(;;)
  314. {
  315. int state=strCheck.Find(",");
  316. if(state==-1&&strCheck.GetLength())
  317. strL=strCheck;
  318. else if(strCheck.GetLength()==0)
  319. break;
  320. else strL=strCheck.Left(state);
  321. if(!strL.IsEmpty())
  322. {
  323. UINT index = atoi(strL.GetBuffer(0));
  324. strL.ReleaseBuffer();
  325. if(index >= 0 && index<= IDC_CHECK41 - IDC_CHECK2)
  326. ((CButton*)GetDlgItem(index+IDC_CHECK2))->SetCheck(TRUE);
  327. }
  328. strCheck=strCheck.Right(strCheck.GetLength()-state-1);
  329. strCheck.TrimLeft();
  330. }
  331. }
  332. void CCaCertTypePage::TranslateCT()
  333. {
  334. SetDlgItemText(IDC_STATIC_CERT , MiniCT_10801);
  335. SetDlgItemText(IDC_STATIC_KUSE , MiniCT_10802);
  336. SetDlgItemText(IDC_STATIC_EKUSE , MiniCT_10803);
  337. SetDlgItemText(IDC_RADIO01 , MiniCT_10804);
  338. SetDlgItemText(IDC_RADIO02 , MiniCT_10805);
  339. SetDlgItemText(IDC_RADIO03 , MiniCT_10806);
  340. SetDlgItemText(IDC_RADIO04 , MiniCT_10807);
  341. SetDlgItemText(IDC_RADIO05 , MiniCT_10808);
  342. SetDlgItemText(IDC_RADIO06 , MiniCT_10809);
  343. SetDlgItemText(IDC_RADIO07 , MiniCT_10810);
  344. SetDlgItemText(IDC_RADIO08 , MiniCT_10811);
  345. SetDlgItemText(IDC_RADIO09 , MiniCT_10812);
  346. SetDlgItemText(IDC_RADIO10 , MiniCT_10813);
  347. SetDlgItemText(IDC_RADIO11 , MiniCT_10814);
  348. SetDlgItemText(IDC_CHECK2 , MiniCT_10815);
  349. SetDlgItemText(IDC_CHECK3 , MiniCT_10816);
  350. SetDlgItemText(IDC_CHECK4 , MiniCT_10817);
  351. SetDlgItemText(IDC_CHECK5 , MiniCT_10818);
  352. SetDlgItemText(IDC_CHECK6 , MiniCT_10819);
  353. SetDlgItemText(IDC_CHECK7 , MiniCT_10820);
  354. SetDlgItemText(IDC_CHECK8 , MiniCT_10821);
  355. SetDlgItemText(IDC_CHECK9 , MiniCT_10822);
  356. SetDlgItemText(IDC_CHECK10 , MiniCT_10823);
  357. SetDlgItemText(IDC_CHECK11 , MiniCT_10824);
  358. SetDlgItemText(IDC_CHECK12 , MiniCT_10825);
  359. SetDlgItemText(IDC_CHECK13 , MiniCT_10826);
  360. SetDlgItemText(IDC_CHECK14 , MiniCT_10827);
  361. SetDlgItemText(IDC_CHECK15 , MiniCT_10828);
  362. SetDlgItemText(IDC_CHECK16 , MiniCT_10829);
  363. SetDlgItemText(IDC_CHECK17 , MiniCT_10830);
  364. SetDlgItemText(IDC_CHECK18 , MiniCT_10831);
  365. SetDlgItemText(IDC_CHECK19 , MiniCT_10832);
  366. SetDlgItemText(IDC_CHECK20 , MiniCT_10833);
  367. SetDlgItemText(IDC_CHECK21 , MiniCT_10834);
  368. SetDlgItemText(IDC_CHECK22 , MiniCT_10835);
  369. SetDlgItemText(IDC_CHECK23 , MiniCT_10836);
  370. SetDlgItemText(IDC_CHECK24 , MiniCT_10837);
  371. SetDlgItemText(IDC_CHECK25 , MiniCT_10838);
  372. SetDlgItemText(IDC_CHECK26 , MiniCT_10839);
  373. SetDlgItemText(IDC_CHECK27 , MiniCT_10840);
  374. SetDlgItemText(IDC_CHECK28 , MiniCT_10841);
  375. SetDlgItemText(IDC_CHECK29 , MiniCT_10842);
  376. SetDlgItemText(IDC_CHECK30 , MiniCT_10843);
  377. SetDlgItemText(IDC_CHECK31 , MiniCT_10844);
  378. SetDlgItemText(IDC_CHECK32 , MiniCT_10845);
  379. SetDlgItemText(IDC_CHECK33 , MiniCT_10846);
  380. SetDlgItemText(IDC_CHECK34 , MiniCT_10847);
  381. SetDlgItemText(IDC_CHECK35 , MiniCT_10848);
  382. SetDlgItemText(IDC_CHECK36 , MiniCT_10849);
  383. SetDlgItemText(IDC_CHECK37 , MiniCT_10850);
  384. SetDlgItemText(IDC_CHECK38 , MiniCT_10851);
  385. SetDlgItemText(IDC_CHECK39 , MiniCT_10852);
  386. SetDlgItemText(IDC_CHECK40 , MiniCT_10853);
  387. SetDlgItemText(IDC_CHECK41 , MiniCT_10854);
  388. }