|
|
/////////////////////////////////////////////////////////////////////////////////
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 2000-2001.
//
// File: TemplateV2AuthenticationPropertyPage.cpp
//
// Contents: Implementation of CTemplateV2AuthenticationPropertyPage
//
//----------------------------------------------------------------------------
// TemplateV2AuthenticationPropertyPage.cpp : implementation file
//
#include "stdafx.h"
#include "certtmpl.h"
#include "TemplateV2AuthenticationPropertyPage.h"
#include "AddApprovalDlg.h"
#include "PolicyOID.h"
extern POLICY_OID_LIST g_policyOIDList;
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
/////////////////////////////////////////////////////////////////////////////
// CTemplateV2AuthenticationPropertyPage property page
CTemplateV2AuthenticationPropertyPage::CTemplateV2AuthenticationPropertyPage( CCertTemplate& rCertTemplate, bool& rbIsDirty) : CHelpPropertyPage(CTemplateV2AuthenticationPropertyPage::IDD), m_rCertTemplate (rCertTemplate), m_curApplicationSel (LB_ERR), m_rbIsDirty (rbIsDirty) { //{{AFX_DATA_INIT(CTemplateV2AuthenticationPropertyPage)
//}}AFX_DATA_INIT
m_rCertTemplate.AddRef (); }
CTemplateV2AuthenticationPropertyPage::~CTemplateV2AuthenticationPropertyPage() { m_rCertTemplate.Release (); }
void CTemplateV2AuthenticationPropertyPage::DoDataExchange(CDataExchange* pDX) { CHelpPropertyPage::DoDataExchange(pDX); //{{AFX_DATA_MAP(CTemplateV2AuthenticationPropertyPage)
DDX_Control(pDX, IDC_APPLICATION_POLICIES, m_applicationPolicyCombo); DDX_Control(pDX, IDC_POLICY_TYPES, m_policyTypeCombo); DDX_Control(pDX, IDC_ISSUANCE_POLICIES, m_issuanceList); //}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTemplateV2AuthenticationPropertyPage, CHelpPropertyPage) //{{AFX_MSG_MAP(CTemplateV2AuthenticationPropertyPage)
ON_BN_CLICKED(IDC_ADD_APPROVAL, OnAddApproval) ON_BN_CLICKED(IDC_REMOVE_APPROVAL, OnRemoveApproval) ON_EN_CHANGE(IDC_NUM_SIG_REQUIRED_EDIT, OnChangeNumSigRequiredEdit) ON_BN_CLICKED(IDC_REENROLLMENT_REQUIRES_VALID_CERT, OnAllowReenrollment) ON_BN_CLICKED(IDC_PEND_ALL_REQUESTS, OnPendAllRequests) ON_LBN_SELCHANGE(IDC_ISSUANCE_POLICIES, OnSelchangeIssuancePolicies) ON_CBN_SELCHANGE(IDC_POLICY_TYPES, OnSelchangePolicyTypes) ON_CBN_SELCHANGE(IDC_APPLICATION_POLICIES, OnSelchangeApplicationPolicies) ON_WM_DESTROY() ON_BN_CLICKED(IDC_NUM_SIG_REQUIRED_CHECK, OnNumSigRequiredCheck) ON_BN_CLICKED(IDC_REENROLLMENT_SAME_AS_ENROLLMENT, OnReenrollmentSameAsEnrollment) //}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTemplateV2AuthenticationPropertyPage message handlers
enum { POLICY_TYPE_ISSUANCE = 0, POLICY_TYPE_APPLICATION, POLICY_TYPE_APPLICATION_AND_ISSUANCE };
BOOL CTemplateV2AuthenticationPropertyPage::OnInitDialog() { _TRACE (1, L"Entering CTemplateV2AuthenticationPropertyPage::OnInitDialog\n"); CHelpPropertyPage::OnInitDialog ();
// Initialize Application Policy combo
for (POSITION nextPos = g_policyOIDList.GetHeadPosition (); nextPos; ) { CPolicyOID* pPolicyOID = g_policyOIDList.GetNext (nextPos); if ( pPolicyOID ) { // If this is the Application OID dialog, show only application
// OIDS, otherwise if this is the Issuance OID dialog, show only
// issuance OIDs
if ( pPolicyOID->IsApplicationOID () ) { // Bug 262925 CERTSRV: "All Application Policies should be
// removed from Issuance Requirements tab for a cert template
if ( 0 != strcmp (szOID_ANY_APPLICATION_POLICY, pPolicyOID->GetOIDA ()) ) { int nIndex = m_applicationPolicyCombo.AddString (pPolicyOID->GetDisplayName ()); if ( nIndex >= 0 ) { LPSTR pszOID = new CHAR[strlen (pPolicyOID->GetOIDA ())+1]; if ( pszOID ) { strcpy (pszOID, pPolicyOID->GetOIDA ()); m_applicationPolicyCombo.SetItemDataPtr (nIndex, pszOID); } } } } } }
// Check for and add pending requests
if ( m_rCertTemplate.PendAllRequests () ) SendDlgItemMessage (IDC_PEND_ALL_REQUESTS, BM_SETCHECK, BST_CHECKED);
// Get the RA Issuance Policies and add them to the issuance list
int nRAPolicyIndex = 0; CString szRAPolicyOID; while ( SUCCEEDED (m_rCertTemplate.GetRAIssuancePolicy (nRAPolicyIndex, szRAPolicyOID)) ) { CString policyName; int nLen = WideCharToMultiByte( CP_ACP, // code page
0, // performance and mapping flags
(PCWSTR) szRAPolicyOID, // wide-character string
(int) wcslen (szRAPolicyOID), // number of chars in string
0, // buffer for new string
0, // size of buffer
0, // default for unmappable chars
0); // set when default char used
if ( nLen > 0 ) { nLen++; // account for Null terminator
PSTR pszAnsiBuf = new CHAR[nLen]; if ( pszAnsiBuf ) { ZeroMemory (pszAnsiBuf, nLen*sizeof(CHAR)); nLen = WideCharToMultiByte( CP_ACP, // code page
0, // performance and mapping flags
(PCWSTR) szRAPolicyOID, // wide-character string
(int) wcslen (szRAPolicyOID), // number of chars in string
pszAnsiBuf, // buffer for new string
nLen, // size of buffer
0, // default for unmappable chars
0); // set when default char used
if ( nLen ) { if ( MyGetOIDInfoA (policyName, pszAnsiBuf) ) { int nIndex = m_issuanceList.AddString (policyName); if ( nIndex >= 0 ) m_issuanceList.SetItemData (nIndex, (DWORD_PTR) pszAnsiBuf); } } else { _TRACE (0, L"WideCharToMultiByte (%s) failed: 0x%x\n", (PCWSTR) szRAPolicyOID, GetLastError ()); } } else break; } else { _TRACE (0, L"WideCharToMultiByte (%s) failed: 0x%x\n", (PCWSTR) szRAPolicyOID, GetLastError ()); }
nRAPolicyIndex++; }
// Get the RA Application policy and select it
// in the application combo
nRAPolicyIndex = 0; while ( SUCCEEDED (m_rCertTemplate.GetRAApplicationPolicy (nRAPolicyIndex, szRAPolicyOID)) ) { CString policyName; int nLen = WideCharToMultiByte( CP_ACP, // code page
0, // performance and mapping flags
(PCWSTR) szRAPolicyOID, // wide-character string
(int) wcslen (szRAPolicyOID), // number of chars in string
0, // buffer for new string
0, // size of buffer
0, // default for unmappable chars
0); // set when default char used
if ( nLen > 0 ) { nLen++; // account for Null terminator
PSTR pszAnsiBuf = new CHAR[nLen]; if ( pszAnsiBuf ) { ZeroMemory (pszAnsiBuf, nLen*sizeof(CHAR)); nLen = WideCharToMultiByte( CP_ACP, // code page
0, // performance and mapping flags
(PCWSTR) szRAPolicyOID, // wide-character string
(int) wcslen (szRAPolicyOID), // number of chars in string
pszAnsiBuf, // buffer for new string
nLen, // size of buffer
0, // default for unmappable chars
0); // set when default char used
if ( nLen ) { if ( MyGetOIDInfoA (policyName, pszAnsiBuf) ) { int nIndex = m_applicationPolicyCombo.FindStringExact (-1, policyName); if ( nIndex >= 0 ) m_applicationPolicyCombo.SetCurSel (nIndex); m_curApplicationSel = nIndex; break; } } else { _TRACE (0, L"WideCharToMultiByte (%s) failed: 0x%x\n", (PCWSTR) szRAPolicyOID, GetLastError ()); } delete [] pszAnsiBuf; } else break; } else { _TRACE (0, L"WideCharToMultiByte (%s) failed: 0x%x\n", (PCWSTR) szRAPolicyOID, GetLastError ()); }
nRAPolicyIndex++; }
// Initialize "Policy Type" combo box
CString text; int nApplicationSel = m_applicationPolicyCombo.GetCurSel (); int nIssuanceCnt = m_issuanceList.GetCount ();
VERIFY (text.LoadString (IDS_ISSUANCE_POLICY)); int nIndex = m_policyTypeCombo.AddString (text); if ( nIndex >= 0 ) { m_policyTypeCombo.SetItemData (nIndex, POLICY_TYPE_ISSUANCE); if ( LB_ERR == nApplicationSel && nIssuanceCnt > 0 ) m_policyTypeCombo.SetCurSel (nIndex); }
VERIFY (text.LoadString (IDS_APPLICATION_POLICY)); nIndex = m_policyTypeCombo.AddString (text); if ( nIndex >= 0 ) { m_policyTypeCombo.SetItemData (nIndex, POLICY_TYPE_APPLICATION); if ( nApplicationSel >= 0 && 0 == nIssuanceCnt ) m_policyTypeCombo.SetCurSel (nIndex); }
VERIFY (text.LoadString (IDS_APPLICATION_AND_ISSUANCE_POLICY)); nIndex = m_policyTypeCombo.AddString (text); if ( nIndex >= 0 ) { m_policyTypeCombo.SetItemData (nIndex, POLICY_TYPE_APPLICATION_AND_ISSUANCE); if ( nApplicationSel >= 0 && nIssuanceCnt > 0 ) m_policyTypeCombo.SetCurSel (nIndex); }
DWORD dwNumSignatures = 0; if ( SUCCEEDED (m_rCertTemplate.GetRANumSignaturesRequired (dwNumSignatures)) ) SetDlgItemInt (IDC_NUM_SIG_REQUIRED_EDIT, dwNumSignatures);
if ( dwNumSignatures > 0 ) SendDlgItemMessage (IDC_NUM_SIG_REQUIRED_CHECK, BM_SETCHECK, BST_CHECKED);
if ( m_rCertTemplate.ReenrollmentValidWithPreviousApproval () ) SendDlgItemMessage (IDC_REENROLLMENT_REQUIRES_VALID_CERT, BM_SETCHECK, BST_CHECKED); else SendDlgItemMessage (IDC_REENROLLMENT_SAME_AS_ENROLLMENT, BM_SETCHECK, BST_CHECKED);
EnableControls ();
_TRACE (-1, L"Leaving CTemplateV2AuthenticationPropertyPage::OnInitDialog\n"); return TRUE; }
void CTemplateV2AuthenticationPropertyPage::OnAddApproval() { // Create the list of already added approvals. These will not be displayed
// in the Add Approval dialog.
int nCnt = m_issuanceList.GetCount (); PSTR* paszUsedApprovals = 0;
// allocate an array of PSTR pointers and add each item.
// Set the last to NULL
if ( nCnt ) { paszUsedApprovals = new PSTR[nCnt+1]; if ( paszUsedApprovals ) { ::ZeroMemory (paszUsedApprovals, sizeof (PSTR) * (nCnt+1)); while (--nCnt >= 0) { PSTR pszPolicyOID = (PSTR) m_issuanceList.GetItemData (nCnt); if ( pszPolicyOID ) { PSTR pNewStr = new CHAR[strlen (pszPolicyOID) + 1]; if ( pNewStr ) { strcpy (pNewStr, pszPolicyOID); paszUsedApprovals[nCnt] = pNewStr; } else break; } } } }
CAddApprovalDlg dlg (this, paszUsedApprovals);
CThemeContextActivator activator; if ( IDOK == dlg.DoModal () && dlg.m_paszReturnedApprovals ) { for (int nIndex = 0; dlg.m_paszReturnedApprovals[nIndex]; nIndex++) { SetModified (); m_rbIsDirty = true;
// Add to template RA list
CString szRAPolicyOID (dlg.m_paszReturnedApprovals[nIndex]); HRESULT hr = m_rCertTemplate.ModifyRAIssuancePolicyList (szRAPolicyOID, true); ASSERT (SUCCEEDED (hr)); if ( SUCCEEDED (hr) ) { // Add to list
CString policyName; if ( MyGetOIDInfoA (policyName, dlg.m_paszReturnedApprovals[nIndex]) ) { int nAddedIndex = m_issuanceList.AddString (policyName); if ( nAddedIndex >= 0 ) { PSTR pszAnsiBuf = new CHAR[strlen (dlg.m_paszReturnedApprovals[nIndex]) + 1]; if ( pszAnsiBuf ) { strcpy (pszAnsiBuf, dlg.m_paszReturnedApprovals[nIndex]); m_issuanceList.SetItemData (nAddedIndex, (DWORD_PTR) pszAnsiBuf); } } } } } }
if ( paszUsedApprovals ) { for (int nIndex = 0; paszUsedApprovals[nIndex]; nIndex++) delete [] paszUsedApprovals[nIndex]; delete [] paszUsedApprovals; }
EnableControls (); }
void CTemplateV2AuthenticationPropertyPage::OnRemoveApproval() { int nSelCnt = m_issuanceList.GetSelCount (); int* pnSelIndexes = new int[nSelCnt]; if ( pnSelIndexes ) { m_issuanceList.GetSelItems (nSelCnt, pnSelIndexes); for (int nIndex = nSelCnt-1; nIndex >= 0; nIndex--) { PSTR pszPolicyOID = (PSTR) m_issuanceList.GetItemData (pnSelIndexes[nIndex]); if ( pszPolicyOID ) { HRESULT hr = m_rCertTemplate.ModifyRAIssuancePolicyList (pszPolicyOID, false); if ( SUCCEEDED (hr) ) VERIFY (m_issuanceList.DeleteString (pnSelIndexes[nIndex])); else { CString text; CString caption; CThemeContextActivator activator;
VERIFY (caption.LoadString (IDS_CERTTMPL)); text.FormatMessage (IDS_CANNOT_DELETE_ISSUANCE_RA, GetSystemMessage (hr)); MessageBox (text, caption, MB_OK | MB_ICONWARNING); delete [] pszPolicyOID; } } }
delete [] pnSelIndexes; } SetModified (); m_rbIsDirty = true; }
void CTemplateV2AuthenticationPropertyPage::EnableControls() { if ( m_rCertTemplate.ReadOnly () ) { GetDlgItem (IDC_PEND_ALL_REQUESTS)->EnableWindow (FALSE); m_policyTypeCombo.EnableWindow (FALSE); m_issuanceList.EnableWindow (FALSE); m_applicationPolicyCombo.EnableWindow (FALSE); GetDlgItem (IDC_ADD_APPROVAL)->EnableWindow (FALSE); GetDlgItem (IDC_REMOVE_APPROVAL)->EnableWindow (FALSE); GetDlgItem (IDC_NUM_SIG_REQUIRED_EDIT)->EnableWindow (FALSE); GetDlgItem (IDC_REENROLLMENT_REQUIRES_VALID_CERT)->EnableWindow (FALSE); GetDlgItem (IDC_REENROLLMENT_SAME_AS_ENROLLMENT)->EnableWindow (FALSE); GetDlgItem (IDC_REENROLLMENT_REQUIRES_VALID_CERT)->EnableWindow (FALSE); GetDlgItem (IDC_REENROLLMENT_SAME_AS_ENROLLMENT)->EnableWindow (FALSE); GetDlgItem (IDC_NUM_SIG_REQUIRED_CHECK)->EnableWindow (FALSE); } else { BOOL bEnable = (BST_CHECKED == SendDlgItemMessage (IDC_NUM_SIG_REQUIRED_CHECK, BM_GETCHECK));
EnablePolicyControls (bEnable);
if ( bEnable ) { int nCnt = m_issuanceList.GetCount (); int nSel = m_issuanceList.GetSelCount ();
switch (m_policyTypeCombo.GetItemData (m_policyTypeCombo.GetCurSel ())) { case POLICY_TYPE_ISSUANCE: m_issuanceList.EnableWindow (TRUE); GetDlgItem (IDC_ADD_APPROVAL)->EnableWindow (TRUE); GetDlgItem (IDC_REMOVE_APPROVAL)->EnableWindow (TRUE); GetDlgItem (IDC_ISSUANCE_POLICY_LABEL)->EnableWindow (TRUE); m_applicationPolicyCombo.EnableWindow (FALSE); GetDlgItem (IDC_APP_POLICY_LABEL)->EnableWindow (FALSE); break;
case POLICY_TYPE_APPLICATION: m_issuanceList.EnableWindow (FALSE); GetDlgItem (IDC_ADD_APPROVAL)->EnableWindow (FALSE); GetDlgItem (IDC_REMOVE_APPROVAL)->EnableWindow (FALSE); GetDlgItem (IDC_ISSUANCE_POLICY_LABEL)->EnableWindow (FALSE); m_applicationPolicyCombo.EnableWindow (TRUE); GetDlgItem (IDC_APP_POLICY_LABEL)->EnableWindow (TRUE); break;
case POLICY_TYPE_APPLICATION_AND_ISSUANCE: m_issuanceList.EnableWindow (TRUE); GetDlgItem (IDC_ADD_APPROVAL)->EnableWindow (TRUE); GetDlgItem (IDC_REMOVE_APPROVAL)->EnableWindow (nSel > 0 && nCnt > nSel); GetDlgItem (IDC_ISSUANCE_POLICY_LABEL)->EnableWindow (TRUE); m_applicationPolicyCombo.EnableWindow (TRUE); GetDlgItem (IDC_APP_POLICY_LABEL)->EnableWindow (TRUE); break;
default: // nothing selected
m_issuanceList.EnableWindow (FALSE); GetDlgItem (IDC_ADD_APPROVAL)->EnableWindow (FALSE); GetDlgItem (IDC_REMOVE_APPROVAL)->EnableWindow (FALSE); GetDlgItem (IDC_ISSUANCE_POLICY_LABEL)->EnableWindow (FALSE); m_applicationPolicyCombo.EnableWindow (FALSE); GetDlgItem (IDC_APP_POLICY_LABEL)->EnableWindow (FALSE); break; } } } }
void CTemplateV2AuthenticationPropertyPage::OnChangeNumSigRequiredEdit() { static bool bProcessingOnChangeNumSigRequiredEdit = false;
if ( !bProcessingOnChangeNumSigRequiredEdit ) { bProcessingOnChangeNumSigRequiredEdit = true; CString szText; if ( GetDlgItemText (IDC_NUM_SIG_REQUIRED_EDIT, szText) > 0 ) { DWORD dwNumSignatures = GetDlgItemInt (IDC_NUM_SIG_REQUIRED_EDIT); DWORD dwFormerNumSignatures = 0; m_rCertTemplate.GetRANumSignaturesRequired (dwFormerNumSignatures);
if ( dwFormerNumSignatures != dwNumSignatures ) { HRESULT hr = m_rCertTemplate.SetRANumSignaturesRequired (dwNumSignatures); if ( SUCCEEDED (hr) ) { if ( 0 == dwFormerNumSignatures || 0 == dwNumSignatures ) { OnNumSigRequiredCheck(); }
SetModified (); m_rbIsDirty = true; } } }
bProcessingOnChangeNumSigRequiredEdit = false; } }
void CTemplateV2AuthenticationPropertyPage::OnAllowReenrollment() { HRESULT hr = m_rCertTemplate.SetReenrollmentValidWithPreviousApproval ( BST_CHECKED == SendDlgItemMessage (IDC_REENROLLMENT_REQUIRES_VALID_CERT, BM_GETCHECK)); if ( SUCCEEDED (hr) ) { SetModified (); m_rbIsDirty = true; } }
void CTemplateV2AuthenticationPropertyPage::DoContextHelp (HWND hWndControl) { _TRACE(1, L"Entering CTemplateV2AuthenticationPropertyPage::DoContextHelp\n"); switch (::GetDlgCtrlID (hWndControl)) { case IDC_STATIC: break;
default: // Display context help for a control
if ( !::WinHelp ( hWndControl, GetContextHelpFile (), HELP_WM_HELP, (DWORD_PTR) g_aHelpIDs_IDD_TEMPLATE_V2_AUTHENTICATION) ) { _TRACE(0, L"WinHelp () failed: 0x%x\n", GetLastError ()); } break; } _TRACE(-1, L"Leaving CTemplateV2AuthenticationPropertyPage::DoContextHelp\n"); }
void CTemplateV2AuthenticationPropertyPage::OnPendAllRequests() { m_rCertTemplate.SetPendAllRequests ( BST_CHECKED == SendDlgItemMessage (IDC_PEND_ALL_REQUESTS, BM_GETCHECK)); SetModified (); m_rbIsDirty = true; }
void CTemplateV2AuthenticationPropertyPage::OnSelchangeIssuancePolicies() { EnableControls (); }
void CTemplateV2AuthenticationPropertyPage::OnSelchangePolicyTypes() { SetModified (); m_rbIsDirty = true;
switch (m_policyTypeCombo.GetItemData (m_policyTypeCombo.GetCurSel ())) { case POLICY_TYPE_ISSUANCE: { // Unselect the application policy and inform the user that
// an issuance policy must be added if there aren't any
int nSel = m_applicationPolicyCombo.GetCurSel (); if ( nSel >= 0 ) { PSTR pszOID = (PSTR) m_applicationPolicyCombo.GetItemDataPtr (nSel); if ( pszOID ) { HRESULT hr = m_rCertTemplate.ModifyRAApplicationPolicyList (pszOID, false); _ASSERT (SUCCEEDED (hr)); if ( SUCCEEDED (hr) ) { SetModified (); m_rbIsDirty = true; } } m_applicationPolicyCombo.SetCurSel (LB_ERR); m_curApplicationSel = LB_ERR; } } break;
case POLICY_TYPE_APPLICATION: { // Select an application policy, if necessary and remove
// the issuance policies
int nSel = m_applicationPolicyCombo.GetCurSel (); if ( LB_ERR == nSel ) { m_applicationPolicyCombo.SetCurSel (0); nSel = m_applicationPolicyCombo.GetCurSel (); m_curApplicationSel = nSel; if ( nSel >= 0 ) { PSTR pszOID = (PSTR) m_applicationPolicyCombo.GetItemDataPtr (nSel); if ( pszOID ) { HRESULT hr = m_rCertTemplate.ModifyRAApplicationPolicyList (pszOID, true); _ASSERT (SUCCEEDED (hr)); if ( SUCCEEDED (hr) ) { SetModified (); m_rbIsDirty = true; } } } }
ClearIssuanceList (); } break;
case POLICY_TYPE_APPLICATION_AND_ISSUANCE: { // Select an application policy, if necessary and inform the user
// that an issuance policy must be added, if there aren't any.
int nSel = m_applicationPolicyCombo.GetCurSel (); if ( LB_ERR == nSel ) { m_applicationPolicyCombo.SetCurSel (0); nSel = m_applicationPolicyCombo.GetCurSel (); m_curApplicationSel = nSel; if ( nSel >= 0 ) { PSTR pszOID = (PSTR) m_applicationPolicyCombo.GetItemDataPtr (nSel); if ( pszOID ) { HRESULT hr = m_rCertTemplate.ModifyRAApplicationPolicyList (pszOID, true); _ASSERT (SUCCEEDED (hr)); if ( SUCCEEDED (hr) ) { SetModified (); m_rbIsDirty = true; } } } } } break;
default: // nothing selected
break; } EnableControls (); }
void CTemplateV2AuthenticationPropertyPage::OnSelchangeApplicationPolicies() { int nNewSel = m_applicationPolicyCombo.GetCurSel (); // Remove the old application OID and add the new one
if ( m_curApplicationSel != nNewSel ) { if ( LB_ERR != m_curApplicationSel ) { LPSTR pszOID = (LPSTR) m_applicationPolicyCombo.GetItemDataPtr (m_curApplicationSel); if ( pszOID ) { HRESULT hr = m_rCertTemplate.ModifyRAApplicationPolicyList (pszOID, false); _ASSERT (SUCCEEDED (hr)); } }
if ( LB_ERR != nNewSel ) { LPSTR pszOID = (LPSTR) m_applicationPolicyCombo.GetItemDataPtr (nNewSel); if ( pszOID ) { HRESULT hr = m_rCertTemplate.ModifyRAApplicationPolicyList (pszOID, true); _ASSERT (SUCCEEDED (hr)); } }
SetModified (); m_rbIsDirty = true;
m_curApplicationSel = nNewSel; } }
void CTemplateV2AuthenticationPropertyPage::OnDestroy() { int nCnt = m_issuanceList.GetCount (); for (int nIndex = 0; nIndex < nCnt; nIndex++) { PSTR pszBuf = (PSTR) m_issuanceList.GetItemData (nIndex); if ( pszBuf ) delete [] pszBuf; }
nCnt = m_applicationPolicyCombo.GetCount (); for (int nIndex = 0; nIndex < nCnt; nIndex++) { PSTR pszOID = (PSTR) m_applicationPolicyCombo.GetItemDataPtr (nIndex); if ( pszOID ) delete [] pszOID; }
CHelpPropertyPage::OnDestroy(); }
void CTemplateV2AuthenticationPropertyPage::OnNumSigRequiredCheck() { static bProcessingOnNumSigRequiredCheck = false;
if ( !bProcessingOnNumSigRequiredCheck ) // to prevent reentrancy
{ bProcessingOnNumSigRequiredCheck = true; if ( BST_UNCHECKED == SendDlgItemMessage (IDC_NUM_SIG_REQUIRED_CHECK, BM_GETCHECK) ) { if ( 0 != GetDlgItemInt (IDC_NUM_SIG_REQUIRED_EDIT) ) SetDlgItemInt (IDC_NUM_SIG_REQUIRED_EDIT, 0);
// NTRAID# 369551 CertTmpl:UI does not clean up changed settings
// clear out policy type combo, application policy combo and issuance
// policy list
m_policyTypeCombo.SetCurSel (-1); m_policyTypeCombo.Clear ();
// Clear application policy
int nCurSel = m_applicationPolicyCombo.GetCurSel (); if ( LB_ERR != nCurSel ) { // Remove the old application OID
LPSTR pszOID = (LPSTR) m_applicationPolicyCombo.GetItemDataPtr (nCurSel); if ( pszOID ) { HRESULT hr = m_rCertTemplate.ModifyRAApplicationPolicyList (pszOID, false); _ASSERT (SUCCEEDED (hr)); } } m_applicationPolicyCombo.SetCurSel (-1); m_applicationPolicyCombo.Clear (); // Clear issuance policy
ClearIssuanceList (); } else if ( 0 == GetDlgItemInt (IDC_NUM_SIG_REQUIRED_EDIT) ) SetDlgItemInt (IDC_NUM_SIG_REQUIRED_EDIT, 1);
if ( GetDlgItemInt (IDC_NUM_SIG_REQUIRED_EDIT) > 0 ) { m_policyTypeCombo.SetCurSel (0); m_applicationPolicyCombo.SetCurSel (0); LPSTR pszOID = (LPSTR) m_applicationPolicyCombo.GetItemDataPtr (0); if ( pszOID ) { HRESULT hr = m_rCertTemplate.ModifyRAApplicationPolicyList (pszOID, true); _ASSERT (SUCCEEDED (hr)); } }
EnableControls ();
bProcessingOnNumSigRequiredCheck = false; } }
void CTemplateV2AuthenticationPropertyPage::EnablePolicyControls (BOOL& bEnable) { GetDlgItem (IDC_NUM_SIG_REQUIRED_EDIT)->EnableWindow (bEnable);
if ( bEnable ) { if ( GetDlgItemInt (IDC_NUM_SIG_REQUIRED_EDIT) < 1 ) bEnable = false; }
GetDlgItem (IDC_POLICY_TYPES_LABEL)->EnableWindow (bEnable); GetDlgItem (IDC_POLICY_TYPES)->EnableWindow (bEnable); GetDlgItem (IDC_APP_POLICY_LABEL)->EnableWindow (bEnable); GetDlgItem (IDC_APPLICATION_POLICIES)->EnableWindow (bEnable); GetDlgItem (IDC_ISSUANCE_POLICY_LABEL)->EnableWindow (bEnable); GetDlgItem (IDC_ISSUANCE_POLICIES)->EnableWindow (bEnable); GetDlgItem (IDC_ADD_APPROVAL)->EnableWindow (bEnable); GetDlgItem (IDC_REMOVE_APPROVAL)->EnableWindow (bEnable); }
BOOL CTemplateV2AuthenticationPropertyPage::OnKillActive() { switch (m_policyTypeCombo.GetItemData (m_policyTypeCombo.GetCurSel ())) { case POLICY_TYPE_ISSUANCE: { // Inform the user that
// an issuance policy must be added if there aren't any
m_rCertTemplate.IssuancePoliciesRequired ( (0 == m_issuanceList.GetCount ()) ? true : false); } break;
case POLICY_TYPE_APPLICATION: m_rCertTemplate.IssuancePoliciesRequired (false); break;
case POLICY_TYPE_APPLICATION_AND_ISSUANCE: { // Inform the user
// that an issuance policy must be added, if there aren't any.
m_rCertTemplate.IssuancePoliciesRequired ( (0 == m_issuanceList.GetCount ()) ? true : false); } break;
default: // nothing selected
break; } return CHelpPropertyPage::OnKillActive(); }
void CTemplateV2AuthenticationPropertyPage::OnReenrollmentSameAsEnrollment() { HRESULT hr = m_rCertTemplate.SetReenrollmentValidWithPreviousApproval ( BST_CHECKED == SendDlgItemMessage (IDC_REENROLLMENT_REQUIRES_VALID_CERT, BM_GETCHECK)); if ( SUCCEEDED (hr) ) { SetModified (); m_rbIsDirty = true; } }
void CTemplateV2AuthenticationPropertyPage::ClearIssuanceList () { int nCnt = m_issuanceList.GetCount (); for (int nIndex = nCnt-1; nIndex >= 0; nIndex--) { LPSTR pszOID = (LPSTR) m_issuanceList.GetItemDataPtr (nIndex); if ( pszOID ) { HRESULT hr = m_rCertTemplate.ModifyRAIssuancePolicyList (pszOID, false); if ( SUCCEEDED (hr) ) { m_issuanceList.DeleteString (nIndex); delete [] pszOID; SetModified (); m_rbIsDirty = true; } else { _ASSERT (0); break; } } } }
|