windows-nt/Source/XPSP1/NT/inetsrv/iis/admin/certwiz/keypasswordpage.cpp
2020-09-26 16:20:57 +08:00

348 lines
8 KiB
C++

// KeyPasswordPage.cpp : implementation file
//
#include "stdafx.h"
#include "CertWiz.h"
#include "KeyPasswordPage.h"
#include "Certificat.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CKeyPasswordPage property page
IMPLEMENT_DYNCREATE(CKeyPasswordPage, CIISWizardPage)
CKeyPasswordPage::CKeyPasswordPage(CCertificate * pCert)
: CIISWizardPage(CKeyPasswordPage::IDD, IDS_CERTWIZ, TRUE),
m_pCert(pCert)
{
//{{AFX_DATA_INIT(CKeyPasswordPage)
m_Password = _T("");
//}}AFX_DATA_INIT
}
CKeyPasswordPage::~CKeyPasswordPage()
{
}
void CKeyPasswordPage::DoDataExchange(CDataExchange* pDX)
{
CIISWizardPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CKeyPasswordPage)
DDX_Text(pDX, IDC_KEYPASSWORD, m_Password);
DDV_MaxChars(pDX, m_Password, 64);
//}}AFX_DATA_MAP
}
LRESULT
CKeyPasswordPage::OnWizardBack()
/*++
Routine Description:
Prev button handler
Arguments:
None
Return Value:
0 to automatically advance to the prev page;
1 to prevent the page from changing.
To jump to a page other than the prev one,
return the identifier of the dialog to be displayed.
--*/
{
return IDD_PAGE_PREV;
}
LRESULT
CKeyPasswordPage::OnWizardNext()
{
UpdateData(TRUE);
if (0 != m_Password.Compare(m_pCert->m_KeyPassword))
{
m_pCert->DeleteKeyRingCert();
m_pCert->m_KeyPassword = m_Password;
}
if (NULL == m_pCert->GetKeyRingCert())
{
// probably password was wrong
CString txt;
txt.LoadString(IDS_FAILED_IMPORT_KEY_FILE);
ASSERT(GetDlgItem(IDC_ERROR_TEXT) != NULL);
SetDlgItemText(IDC_ERROR_TEXT, txt);
GetDlgItem(IDC_KEYPASSWORD)->SetFocus();
GetDlgItem(IDC_KEYPASSWORD)->SendMessage(EM_SETSEL, 0, -1);
SetWizardButtons(PSWIZB_BACK);
return 1;
}
return IDD_PAGE_NEXT;
}
BOOL
CKeyPasswordPage::OnSetActive()
{
ASSERT(m_pCert != NULL);
m_Password = m_pCert->m_KeyPassword;
UpdateData(FALSE);
SetWizardButtons(m_Password.IsEmpty() || m_pCert->GetKeyRingCert() == NULL ?
PSWIZB_BACK : PSWIZB_BACK | PSWIZB_NEXT);
return CIISWizardPage::OnSetActive();
}
BOOL
CKeyPasswordPage::OnKillActive()
{
UpdateData();
m_pCert->m_KeyPassword = m_Password;
return CIISWizardPage::OnKillActive();
}
BEGIN_MESSAGE_MAP(CKeyPasswordPage, CIISWizardPage)
//{{AFX_MSG_MAP(CKeyPasswordPage)
ON_EN_CHANGE(IDC_KEYPASSWORD, OnEditchangePassword)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSiteNamePage message handlers
void CKeyPasswordPage::OnEditchangePassword()
{
UpdateData(TRUE);
SetWizardButtons(m_Password.IsEmpty() ?
PSWIZB_BACK : PSWIZB_BACK | PSWIZB_NEXT);
CString str;
SetDlgItemText(IDC_ERROR_TEXT, str);
}
/////////////////////////////////////////////////////////////////////////////
// CKeyPasswordPage property page
IMPLEMENT_DYNCREATE(CImportPFXPasswordPage, CIISWizardPage)
CImportPFXPasswordPage::CImportPFXPasswordPage(CCertificate * pCert)
: CIISWizardPage(CImportPFXPasswordPage::IDD, IDS_CERTWIZ, TRUE),
m_pCert(pCert)
{
//{{AFX_DATA_INIT(CImportPFXPasswordPage)
m_Password = _T("");
//}}AFX_DATA_INIT
}
CImportPFXPasswordPage::~CImportPFXPasswordPage()
{
}
void CImportPFXPasswordPage::DoDataExchange(CDataExchange* pDX)
{
CIISWizardPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CImportPFXPasswordPage)
DDX_Text(pDX, IDC_KEYPASSWORD, m_Password);
DDV_MaxChars(pDX, m_Password, 64);
//}}AFX_DATA_MAP
}
LRESULT
CImportPFXPasswordPage::OnWizardBack()
/*++
Routine Description:
Prev button handler
Arguments:
None
Return Value:
0 to automatically advance to the prev page;
1 to prevent the page from changing.
To jump to a page other than the prev one,
return the identifier of the dialog to be displayed.
--*/
{
return IDD_PAGE_PREV;
}
LRESULT
CImportPFXPasswordPage::OnWizardNext()
{
UpdateData(TRUE);
if (0 != m_Password.Compare(m_pCert->m_KeyPassword))
{
m_pCert->DeleteKeyRingCert();
m_pCert->m_KeyPassword = m_Password;
}
if (NULL == m_pCert->GetPFXFileCert())
{
// probably password was wrong
CString txt;
txt.LoadString(IDS_FAILED_IMPORT_PFX_FILE);
ASSERT(GetDlgItem(IDC_ERROR_TEXT) != NULL);
SetDlgItemText(IDC_ERROR_TEXT, txt);
GetDlgItem(IDC_KEYPASSWORD)->SetFocus();
GetDlgItem(IDC_KEYPASSWORD)->SendMessage(EM_SETSEL, 0, -1);
SetWizardButtons(PSWIZB_BACK);
return 1;
}
return IDD_PAGE_NEXT;
}
BOOL
CImportPFXPasswordPage::OnSetActive()
{
ASSERT(m_pCert != NULL);
m_Password = m_pCert->m_KeyPassword;
UpdateData(FALSE);
SetWizardButtons(m_Password.IsEmpty() || m_pCert->GetKeyRingCert() == NULL ?
PSWIZB_BACK : PSWIZB_BACK | PSWIZB_NEXT);
return CIISWizardPage::OnSetActive();
}
BOOL
CImportPFXPasswordPage::OnKillActive()
{
UpdateData();
m_pCert->m_KeyPassword = m_Password;
return CIISWizardPage::OnKillActive();
}
BEGIN_MESSAGE_MAP(CImportPFXPasswordPage, CIISWizardPage)
//{{AFX_MSG_MAP(CImportPFXPasswordPage)
ON_EN_CHANGE(IDC_KEYPASSWORD, OnEditchangePassword)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSiteNamePage message handlers
void CImportPFXPasswordPage::OnEditchangePassword()
{
UpdateData(TRUE);
SetWizardButtons(m_Password.IsEmpty() ?
PSWIZB_BACK : PSWIZB_BACK | PSWIZB_NEXT);
CString str;
SetDlgItemText(IDC_ERROR_TEXT, str);
}
/////////////////////////////////////////////////////////////////////////////
// CExportPFXPasswordPage property page
IMPLEMENT_DYNCREATE(CExportPFXPasswordPage, CIISWizardPage)
CExportPFXPasswordPage::CExportPFXPasswordPage(CCertificate * pCert)
: CIISWizardPage(CExportPFXPasswordPage::IDD, IDS_CERTWIZ, TRUE),
m_pCert(pCert)
{
//{{AFX_DATA_INIT(CExportPFXPasswordPage)
m_Password = _T("");
m_Export_Private_key = FALSE;
//}}AFX_DATA_INIT
}
CExportPFXPasswordPage::~CExportPFXPasswordPage()
{
}
void CExportPFXPasswordPage::DoDataExchange(CDataExchange* pDX)
{
CIISWizardPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CExportPFXPasswordPage)
DDX_Text(pDX, IDC_KEYPASSWORD, m_Password);
DDV_MaxChars(pDX, m_Password, 64);
DDX_Check(pDX, IDC_CHK_EXPORT_PRIVATE, m_Export_Private_key);
//}}AFX_DATA_MAP
}
LRESULT
CExportPFXPasswordPage::OnWizardBack()
/*++
Routine Description:
Prev button handler
Arguments:
None
Return Value:
0 to automatically advance to the prev page;
1 to prevent the page from changing.
To jump to a page other than the prev one,
return the identifier of the dialog to be displayed.
--*/
{
return IDD_PAGE_PREV;
}
LRESULT
CExportPFXPasswordPage::OnWizardNext()
{
UpdateData(TRUE);
if (0 != m_Password.Compare(m_pCert->m_KeyPassword))
{
m_pCert->DeleteKeyRingCert();
m_pCert->m_KeyPassword = m_Password;
m_pCert->m_ExportPFXPrivateKey = m_Export_Private_key;
m_pCert->m_ExportPFXPrivateKey = TRUE;
}
/*
if (NULL == m_pCert->GetKeyRingCert())
{
// probably password was wrong
CString txt;
txt.LoadString(IDS_FAILED_IMPORT_KEY_FILE);
ASSERT(GetDlgItem(IDC_ERROR_TEXT) != NULL);
SetDlgItemText(IDC_ERROR_TEXT, txt);
GetDlgItem(IDC_KEYPASSWORD)->SetFocus();
GetDlgItem(IDC_KEYPASSWORD)->SendMessage(EM_SETSEL, 0, -1);
SetWizardButtons(PSWIZB_BACK);
return 1;
}
*/
return IDD_PAGE_NEXT;
}
BOOL
CExportPFXPasswordPage::OnSetActive()
{
ASSERT(m_pCert != NULL);
m_Password = m_pCert->m_KeyPassword;
UpdateData(FALSE);
SetWizardButtons(m_Password.IsEmpty() || m_pCert->GetKeyRingCert() == NULL ?
PSWIZB_BACK : PSWIZB_BACK | PSWIZB_NEXT);
return CIISWizardPage::OnSetActive();
}
BOOL
CExportPFXPasswordPage::OnKillActive()
{
UpdateData();
m_pCert->m_KeyPassword = m_Password;
return CIISWizardPage::OnKillActive();
}
BEGIN_MESSAGE_MAP(CExportPFXPasswordPage, CIISWizardPage)
//{{AFX_MSG_MAP(CExportPFXPasswordPage)
ON_EN_CHANGE(IDC_KEYPASSWORD, OnEditchangePassword)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CExportPFXPasswordPage::OnEditchangePassword()
{
UpdateData(TRUE);
SetWizardButtons(m_Password.IsEmpty() ?
PSWIZB_BACK : PSWIZB_BACK | PSWIZB_NEXT);
CString str;
SetDlgItemText(IDC_ERROR_TEXT, str);
}