windows-nt/Source/XPSP1/NT/inetsrv/iis/ui/itools/keyring/nkdn.cpp
2020-09-26 16:20:57 +08:00

182 lines
4.6 KiB
C++

// NKDNcpp : implementation file
//
#include "stdafx.h"
#include "keyring.h"
#include "NKChseCA.h"
#include "NKDN.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CNKDistinguishedName dialog
CNKDistinguishedName::CNKDistinguishedName(CWnd* pParent /*=NULL*/)
: CNKPages(CNKDistinguishedName::IDD)
{
//{{AFX_DATA_INIT(CNKDistinguishedName)
m_nkdn_sz_CN = _T("");
m_nkdn_sz_O = _T("");
m_nkdn_sz_OU = _T("");
//}}AFX_DATA_INIT
}
void CNKDistinguishedName::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CNKDistinguishedName)
DDX_Control(pDX, IDC_NEWKEY_COMMONNAME, m_control_CN);
DDX_Control(pDX, IDC_NEWKEY_ORGUNIT, m_control_OU);
DDX_Control(pDX, IDC_NEWKEY_ORG, m_control_O);
DDX_Text(pDX, IDC_NEWKEY_COMMONNAME, m_nkdn_sz_CN);
DDV_MaxChars(pDX, m_nkdn_sz_CN, 64);
DDX_Text(pDX, IDC_NEWKEY_ORG, m_nkdn_sz_O);
DDV_MaxChars(pDX, m_nkdn_sz_O, 64);
DDX_Text(pDX, IDC_NEWKEY_ORGUNIT, m_nkdn_sz_OU);
DDV_MaxChars(pDX, m_nkdn_sz_OU, 64);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CNKDistinguishedName, CDialog)
//{{AFX_MSG_MAP(CNKDistinguishedName)
ON_EN_CHANGE(IDC_NEWKEY_COMMONNAME, OnChangeNewkeyCommonname)
ON_EN_CHANGE(IDC_NEWKEY_ORG, OnChangeNewkeyOrg)
ON_EN_CHANGE(IDC_NEWKEY_ORGUNIT, OnChangeNewkeyOrgunit)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
#define SZ_DN_CN "DN_COMMON_NAME"
#define SZ_DN_O "DN_ORGANIZATION"
#define SZ_DN_OU "DN_ORG_UNIT"
//----------------------------------------------------------------
void CNKDistinguishedName::OnFinish()
{
// store the user entries
SetStoredString( m_nkdn_sz_CN, SZ_DN_CN );
SetStoredString( m_nkdn_sz_O, SZ_DN_O );
SetStoredString( m_nkdn_sz_OU, SZ_DN_OU );
}
//----------------------------------------------------------------
BOOL CNKDistinguishedName::OnInitDialog( )
{
// if the entries from last time are available, use them
try
{
FGetStoredString( m_nkdn_sz_CN, SZ_DN_CN );
FGetStoredString( m_nkdn_sz_O, SZ_DN_O );
FGetStoredString( m_nkdn_sz_OU, SZ_DN_OU );
}
catch( CException e )
{
}
// call superclass
CPropertyPage::OnInitDialog();
// return 0 to say we set the default item
// return 1 to just select the default default item
return 1;
}
//----------------------------------------------------------------
BOOL CNKDistinguishedName::OnSetActive()
{
ActivateButtons();
return CPropertyPage::OnSetActive();
}
//----------------------------------------------------------------
void CNKDistinguishedName::ActivateButtons()
{
DWORD flags = PSWIZB_BACK;
BOOL fCanGoOn = TRUE;
UpdateData(TRUE);
//now make sure there is something in each of the required fields
fCanGoOn &= !m_nkdn_sz_CN.IsEmpty();
fCanGoOn &= !m_nkdn_sz_O.IsEmpty();
fCanGoOn &= !m_nkdn_sz_OU.IsEmpty();
// if we can go on, hilite the button
if ( fCanGoOn )
{
flags |= PSWIZB_NEXT;
}
// update the property sheet buttons
m_pPropSheet->SetWizardButtons( flags );
}
/////////////////////////////////////////////////////////////////////////////
// CNKDistinguishedName message handlers
//----------------------------------------------------------------
void CNKDistinguishedName::OnChangeNewkeyCommonname()
{
ActivateButtons();
}
//----------------------------------------------------------------
void CNKDistinguishedName::OnChangeNewkeyOrg()
{
ActivateButtons();
}
//----------------------------------------------------------------
void CNKDistinguishedName::OnChangeNewkeyOrgunit()
{
ActivateButtons();
}
/////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------
CDNEdit::CDNEdit()
{
szExclude.LoadString( IDS_ILLEGAL_DN_CHARS );
szTotallyExclude.LoadString( IDS_TOTALLY_ILLEGAL_CHARS );
}
//----------------------------------------------------------------
BOOL CDNEdit::OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
// if it is a character
if ( message == WM_CHAR )
{
TCHAR chCharCode = (TCHAR)wParam;
// first test the totally bad characters
if ( strchr(szTotallyExclude, chCharCode) )
{
MessageBeep(0);
return 1;
}
// now test the potentially bad characters
if ( strchr(szExclude, chCharCode) )
switch( AfxMessageBox(IDS_BADCHARMSG, MB_YESNO|MB_ICONQUESTION) )
{
case IDYES:
break;
case IDNO:
// reject the character
MessageBeep(0);
return 1;
}
}
// return the default answer
return CEdit::OnWndMsg( message, wParam, lParam, pResult);
}