216 lines
4.9 KiB
C++
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
|