ReactOS 0.4.16-dev-2284-g3529151
certmgr.cpp
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS Certificate Manager
3 * LICENSE: MIT (https://spdx.org/licenses/MIT)
4 * PURPOSE:
5 * COPYRIGHT: Copyright 2025 Mark Jansen <mark.jansen@reactos.org>
6 */
7
8#include "certmgr.h"
9
10struct CCertMgrProperties : public CDialogImpl<CCertMgrProperties>
11{
12 enum
13 {
15 };
20
23
25 {
26
27 }
28
31 {
32 HICON hIcon = (HICON)::LoadImageW(_AtlBaseModule.GetResourceInstance(), MAKEINTRESOURCEW(IDI_CERTMGR), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_SHARED);
35
39
41
42 auto certRoot = m_StoreTree.AddItem(NULL, (LPWSTR)L"Certificates", 0, 0, 0);
43 auto userRoot = m_StoreTree.AddItem(certRoot, (LPWSTR)L"User Store", 0, 0, 0);
45 [&](const CStore *current)
46 {m_StoreTree.AddItem(userRoot, (LPWSTR)current->GetStoreName(), 0, 0, (LPARAM)current); });
47 auto computerRoot = m_StoreTree.AddItem(certRoot, (LPWSTR)L"Computer Store", 0, 0, 0);
49 [&](const CStore *current)
50 { m_StoreTree.AddItem(computerRoot, (LPWSTR)current->GetStoreName(), 0, 0, (LPARAM)current); });
51
52 m_StoreTree.Expand(certRoot, TVE_EXPAND);
53
54 m_CertList.InsertColumn(0, (LPWSTR)L"Issued To", LVCFMT_LEFT, 200);
55 m_CertList.InsertColumn(1, (LPWSTR)L"Issued By", LVCFMT_LEFT, 200);
56 m_CertList.InsertColumn(2, (LPWSTR)L"Expiration Date", LVCFMT_LEFT, 100);
57 m_CertList.InsertColumn(3, (LPWSTR)L"Friendly Name", LVCFMT_LEFT, 200);
58
59 return TRUE;
60 }
61
64 {
65 EndDialog(wID);
66 return 0L;
67 }
68
70 OnStoreChanged(int idCtrl, LPNMHDR pnmh, BOOL &bHandled)
71 {
72 if (idCtrl == IDC_STORE_TREE)
73 {
74 LPNMTREEVIEW pntv = (LPNMTREEVIEW)pnmh;
75 CStore *store = (CStore *)pntv->itemNew.lParam;
76 if (store)
77 {
79 store->Expand();
80 store->ForEach(
81 [&](const CCert *current)
82 {
83 LV_ITEM item = {};
84 item.mask = LVIF_TEXT | LVIF_PARAM;
85 item.lParam = (LPARAM)current;
86 item.pszText = (LPWSTR)(LPCWSTR)current->GetSubjectName();
89 m_CertList.SetItemText(item.iItem, 1, (LPCWSTR)current->GetIssuerName());
90 FILETIME notAfter = current->GetNotAfter();
91 SYSTEMTIME st;
92 FileTimeToSystemTime(&notAfter, &st);
93 WCHAR dateStr[100];
94 GetDateFormatW(LOCALE_USER_DEFAULT, 0, &st, NULL, dateStr, _countof(dateStr));
95 m_CertList.SetItemText(item.iItem, 2, dateStr);
96 m_CertList.SetItemText(item.iItem, 3, (LPCWSTR)current->GetFriendlyName());
97 });
99 }
100 }
101 return 0L;
102 }
103
104 LRESULT
105 OnCertDoubleClicked(int idCtrl, LPNMHDR pnmh, BOOL &bHandled)
106 {
107 if (idCtrl == IDC_CERT_LIST)
108 {
109 auto lpnmitem = (LPNMITEMACTIVATE)pnmh;
110 if (lpnmitem->iItem < 0)
111 return 0L;
112
113 const CCert *current = (const CCert *)m_CertList.GetItemData(lpnmitem->iItem);
114
115 CRYPTUI_VIEWCERTIFICATE_STRUCTW CertViewInfo = {0};
116 CertViewInfo.dwSize = sizeof(CertViewInfo);
117 CertViewInfo.pCertContext = current->GetCertContext();
118 CertViewInfo.hwndParent = m_hWnd;
119 CryptUIDlgViewCertificateW(&CertViewInfo, NULL);
120 }
121 return 0L;
122 }
123
124 LRESULT
125 OnHeaderClicked(int idCtrl, LPNMHDR pnmh, BOOL &bHandled)
126 {
127 auto pnmv = (LPNMLISTVIEW)pnmh;
129 return 0L;
130 }
131
138
145};
146
148{
149 public:
150 HRESULT
151 Run(_In_ int nShowCmd) throw()
152 {
154 CCertMgrProperties certMgr;
155 certMgr.DoModal();
156 return S_OK;
157 }
158};
159
161
162extern "C" int WINAPI
163wWinMain(HINSTANCE /*hInstance*/, HINSTANCE /*hPrevInstance*/, LPWSTR /*lpCmdLine*/, int nShowCmd)
164{
165 return _AtlModule.WinMain(nShowCmd);
166}
StoreType
Definition: CStoreList.hpp:9
#define IDS_PROPERTIES_MAIN_TITLE
Definition: resource.h:23
const WCHAR * class
Definition: main.c:68
#define IDI_CERTMGR
Definition: resource.h:10
#define IDC_STORE_TREE
Definition: resource.h:13
#define IDC_CERT_LIST
Definition: resource.h:14
#define IDD_CERTMGR_MAIN
Definition: resource.h:12
int WINAPI wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int nShowCmd)
Definition: certmgr.cpp:163
CCertMgrModule _AtlModule
Definition: certmgr.cpp:160
int WinMain(int nShowCmd)
Definition: atlbase.h:762
BOOL EndDialog(_In_ int nRetCode)
Definition: atlwin.h:1519
INT_PTR DoModal(HWND hWndParent=::GetActiveWindow(), LPARAM dwInitParam=0)
Definition: atlwin.h:1504
HWND m_hWnd
Definition: atlwin.h:273
HRESULT Run(_In_ int nShowCmd)
Definition: certmgr.cpp:151
Definition: CCert.hpp:9
BOOL DeleteAllItems()
Definition: rosctrls.h:126
int InsertItem(const LV_ITEM *pitem)
Definition: rosctrls.h:96
int GetItemCount()
Definition: rosctrls.h:121
DWORD_PTR GetItemData(int i)
Definition: rosctrls.h:204
int InsertColumn(int iCol, LV_COLUMN *pcol)
Definition: rosctrls.h:52
BOOL SetItemText(int i, int subItem, LPCWSTR text)
Definition: rosctrls.h:186
void ForEach(Fn callback)
Definition: CStoreList.hpp:39
Definition: CStore.hpp:9
void ForEach(Fn callback)
Definition: CStore.hpp:83
void Expand()
Definition: CStore.hpp:57
BOOL Expand(HTREEITEM item, DWORD action)
Definition: rosctrls.h:599
HTREEITEM AddItem(HTREEITEM hParent, LPWSTR lpText, INT Image, INT SelectedImage, LPARAM lParam)
Definition: rosctrls.h:498
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
static const WCHAR Title[]
Definition: oid.c:1259
BOOL WINAPI CryptUIDlgViewCertificateW(PCCRYPTUI_VIEWCERTIFICATE_STRUCTW pCertViewInfo, BOOL *pfPropertiesChanged)
Definition: main.c:4415
BOOL WINAPI FileTimeToSystemTime(IN CONST FILETIME *lpFileTime, OUT LPSYSTEMTIME lpSystemTime)
Definition: time.c:188
#define L(x)
Definition: resources.c:13
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned int BOOL
Definition: ntddk_ex.h:94
#define S_OK
Definition: intsafe.h:52
INT WINAPI GetDateFormatW(LCID lcid, DWORD dwFlags, const SYSTEMTIME *lpTime, LPCWSTR lpFormat, LPWSTR lpDateStr, INT cchOut)
Definition: lcformat.c:1001
#define MESSAGE_HANDLER(msg, func)
Definition: atlwin.h:1926
#define BEGIN_MSG_MAP(theClass)
Definition: atlwin.h:1898
#define COMMAND_ID_HANDLER(id, func)
Definition: atlwin.h:1953
#define END_MSG_MAP()
Definition: atlwin.h:1917
#define NOTIFY_HANDLER(id, cd, func)
Definition: atlwin.h:1989
if(dx< 0)
Definition: linetemp.h:194
LONG_PTR LPARAM
Definition: minwindef.h:175
LONG_PTR LRESULT
Definition: minwindef.h:176
UINT_PTR WPARAM
Definition: minwindef.h:174
struct task_struct * current
Definition: linux.c:32
static HICON
Definition: imagelist.c:80
HICON hIcon
Definition: msconfig.c:44
Definition: rosdlgs.h:6
unsigned int UINT
Definition: ndis.h:50
#define _In_
Definition: no_sal2.h:158
#define LOCALE_USER_DEFAULT
static VOID OnLButtonDown(HWND hwnd, int xPos, int yPos, PPREVIEW_DATA pPreviewData)
Definition: preview.c:338
#define TVN_SELCHANGED
Definition: commctrl.h:3740
#define ListView_SetExtendedListViewStyleEx(hwndLV, dwMask, dw)
Definition: commctrl.h:2731
#define LVN_COLUMNCLICK
Definition: commctrl.h:3144
#define NM_DBLCLK
Definition: commctrl.h:131
#define LPNMTREEVIEW
Definition: commctrl.h:3648
#define LVS_EX_FULLROWSELECT
Definition: commctrl.h:2739
#define TVE_EXPAND
Definition: commctrl.h:3428
struct tagNMITEMACTIVATE * LPNMITEMACTIVATE
#define LVIF_PARAM
Definition: commctrl.h:2316
#define LV_ITEM
Definition: commctrl.h:2342
struct tagNMLISTVIEW * LPNMLISTVIEW
#define LVIF_TEXT
Definition: commctrl.h:2314
#define LVCFMT_LEFT
Definition: commctrl.h:2603
#define _countof(array)
Definition: sndvol32.h:70
CSortableHeader m_SortableHeader
Definition: certmgr.cpp:19
LRESULT OnEndDialog(WORD, WORD wID, HWND, BOOL &)
Definition: certmgr.cpp:63
CSplitter m_Splitter
Definition: certmgr.cpp:18
CListView m_CertList
Definition: certmgr.cpp:17
LRESULT OnCertDoubleClicked(int idCtrl, LPNMHDR pnmh, BOOL &bHandled)
Definition: certmgr.cpp:105
LRESULT OnHeaderClicked(int idCtrl, LPNMHDR pnmh, BOOL &bHandled)
Definition: certmgr.cpp:125
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: certmgr.cpp:30
CStoreList m_UserStoreList
Definition: certmgr.cpp:21
CStoreList m_ComputerStoreList
Definition: certmgr.cpp:22
LRESULT OnStoreChanged(int idCtrl, LPNMHDR pnmh, BOOL &bHandled)
Definition: certmgr.cpp:70
CTreeView m_StoreTree
Definition: certmgr.cpp:16
void ReapplySorting(CListView &listView)
void ColumnClick(CListView &listView, LPNMLISTVIEW pnmv)
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: CSplitter.hpp:56
void Init(CWindow parent, CWindow left, CWindow right)
Definition: CSplitter.hpp:20
bool SetIcon(HWND hConsoleWindow, HANDLE hIcon, LPARAM *pOldBIcon, LPARAM *pOldSIcon, const char *icondir)
Definition: tnmisc.cpp:136
static LRESULT OnMouseMove(HWND hWnd, WPARAM wParam, LPARAM lParam)
Definition: welcome.c:1470
#define WINAPI
Definition: msvc.h:6
#define IDCANCEL
Definition: winuser.h:842
#define IMAGE_ICON
Definition: winuser.h:212
#define WM_SIZE
Definition: winuser.h:1639
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE hInst, _In_ LPCWSTR name, _In_ UINT type, _In_ int cx, _In_ int cy, _In_ UINT fuLoad)
Definition: cursoricon.c:2572
#define WM_MOUSEMOVE
Definition: winuser.h:1803
#define WM_INITDIALOG
Definition: winuser.h:1767
#define WM_LBUTTONDOWN
Definition: winuser.h:1804
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define LR_SHARED
Definition: winuser.h:1111
#define WM_LBUTTONUP
Definition: winuser.h:1805
#define WM_SETCURSOR
Definition: winuser.h:1664
#define LR_DEFAULTSIZE
Definition: winuser.h:1105
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184