windows-nt/Source/XPSP1/NT/ds/security/services/ca/capesnpn/caprop.h
2020-09-26 16:20:57 +08:00

216 lines
4.9 KiB
C++

//+----------------------------------------------------------------------------
//
// Class: CDsCACertPage
//+----------------------------------------------------------------------------
//
// Windows NT Directory Service Property Pages
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1999
//
// File: caprop.h
//
// Contents: CA DS object property pages
//
// Classes: CDsCACertPage
//
// History: 16-Mar-99 petesk copied from bryanwal
//
//-----------------------------------------------------------------------------
#ifndef _CAPROP_H_
#define _CAPROP_H_
#include "genpage.h"
#include <wincrypt.h>
#include <cryptui.h>
#include "certifct.h"
#include <shlobj.h>
#include <dsclient.h>
enum {
CERTCOL_ISSUED_TO = 0,
CERTCOL_ISSUED_BY,
CERTCOL_PURPOSES,
CERTCOL_EXP_DATE
};
//
// Purpose: property page object class for the User Certificates page.
//
//-----------------------------------------------------------------------------
class CDsCACertPage : public CAutoDeletePropPage
{
public:
enum { IID_DEFAULT = IDD_CACERTS };
CDsCACertPage(LPWSTR wszObjectDN, UINT uIDD = IDD_CACERTS);
virtual ~CDsCACertPage(void);
//
// Instance specific wind proc
//
LRESULT DlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
private:
CString m_strObjectDN;
CRYPTUI_SELECTCERTIFICATE_STRUCT m_selCertStruct;
HBITMAP m_hbmCert;
HIMAGELIST m_hImageList;
int m_nCertImageIndex;
HRESULT AddListViewColumns ();
HCERTSTORE m_hCertStore;
public:
// Overrides
BOOL OnApply(void );
BOOL OnInitDialog();
protected:
// Implementation
void OnDestroy();
BOOL OnCommand(WPARAM wParam, LPARAM lParam);
BOOL OnNotify(UINT idCtrl, NMHDR* pNMHDR);
int MessageBox (int caption, int text, UINT flags);
HRESULT AddCertToStore (PCCERT_CONTEXT pCertContext);
void OnNotifyItemChanged (LPNMLISTVIEW item);
void OnNotifyStateChanged (LPNMLVODSTATECHANGE pnlvo);
void EnableControls ();
void DisplaySystemError (DWORD dwErr, int iCaptionText);
HRESULT InsertCertInList (CCertificate* pCert, int nItem);
void RefreshItemInList (CCertificate * pCert, int nItem);
CCertificate* GetSelectedCertificate (int& nSelItem);
HRESULT PopulateListView ();
HRESULT OnDeleteItemCertList (LPNMLISTVIEW pNMListView);
HRESULT OnColumnClickCertList (LPNMHDR pNMHdr);
HRESULT OnDblClkCertList (LPNMHDR pNMHdr);
HRESULT OnClickedCopyToFile ();
HRESULT OnClickedRemove();
HRESULT OnClickedAddFromFile();
HRESULT OnClickedAddFromStore ();
HRESULT OnClickedViewCert ();
};
/////////////////////////////////////////////////////////////////////////////
// CCAShellExt
//
// Shell Extension class
//
class ATL_NO_VTABLE CCAShellExt :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CCAShellExt, &CLSID_CAShellExt>,
public IShellExtInit,
public IShellPropSheetExt,
public IContextMenu
{
public:
CCAShellExt()
{
m_Names = NULL;
m_idManage = 0;
m_idOpen = 0;
m_idExport = 0;
}
~CCAShellExt()
{
if(m_Names)
{
GlobalFree(m_Names);
}
}
//Simple ALL 1.0 based registry entry
DECLARE_REGISTRY( CCAShellExt,
_T("CAPESNPN.CCAShellExt.1"),
_T("CAPESNPN.CCAShellExt"),
IDS_CCASHELLEXT_DESC,
THREADFLAGS_APARTMENT)
BEGIN_COM_MAP(CCAShellExt)
COM_INTERFACE_ENTRY(IShellExtInit)
COM_INTERFACE_ENTRY(IShellPropSheetExt)
COM_INTERFACE_ENTRY(IContextMenu)
END_COM_MAP()
// IDfsShell
public:
// IShellExtInit Methods
STDMETHOD (Initialize)
(
IN LPCITEMIDLIST pidlFolder, // Points to an ITEMIDLIST structure
IN LPDATAOBJECT lpdobj, // Points to an IDataObject interface
IN HKEY hkeyProgID // Registry key for the file object or folder type
);
//IShellPropSheetExt methods
STDMETHODIMP AddPages
(
IN LPFNADDPROPSHEETPAGE lpfnAddPage,
IN LPARAM lParam
);
STDMETHODIMP ReplacePage
(
IN UINT uPageID,
IN LPFNADDPROPSHEETPAGE lpfnReplaceWith,
IN LPARAM lParam
);
// IContextMenu methods
STDMETHODIMP GetCommandString
(
UINT_PTR idCmd,
UINT uFlags,
UINT *pwReserved,
LPSTR pszName,
UINT cchMax
);
STDMETHODIMP InvokeCommand
(
LPCMINVOKECOMMANDINFO lpici
);
STDMETHODIMP QueryContextMenu
(
HMENU hmenu,
UINT indexMenu,
UINT idCmdFirst,
UINT idCmdLast,
UINT uFlags
);
private:
STDMETHODIMP _SpawnCertServerSnapin(LPWSTR wszServiceDN);
STDMETHODIMP _CRLFromDN(LPWSTR wszCDPDN, PCCRL_CONTEXT *ppCRL);
STDMETHODIMP _LaunchCRLDialog(PCCRL_CONTEXT pCRL);
STDMETHODIMP _OnExportCRL (PCCRL_CONTEXT pCRL);
LPDSOBJECTNAMES m_Names;
DWORD m_idManage;
DWORD m_idOpen;
DWORD m_idExport;
};
#endif