Viewing file: GenerateCertificateDlg.cpp (3.22 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
// FileZilla Server - a Windows ftp server
// Copyright (C) 2002-2004 - Tim Kosse <tim.kosse@gmx.de>
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "stdafx.h"
#include "filezilla server.h"
#include "GenerateCertificateDlg.h"
#include "../AsyncSslSocketLayer.h"
#include ".\generatecertificatedlg.h"
IMPLEMENT_DYNAMIC(CGenerateCertificateDlg, CDialog)
CGenerateCertificateDlg::CGenerateCertificateDlg(CWnd* pParent /*=NULL*/)
: CDialog(CGenerateCertificateDlg::IDD, pParent)
, m_city(_T(""))
, m_cname(_T(""))
, m_country(_T(""))
, m_email(_T(""))
, m_file(_T(""))
, m_organization(_T(""))
, m_state(_T(""))
, m_unit(_T(""))
, m_keysize(0)
{
}
CGenerateCertificateDlg::~CGenerateCertificateDlg()
{
}
void CGenerateCertificateDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_CITY, m_city);
DDX_Text(pDX, IDC_CNAME, m_cname);
DDX_Text(pDX, IDC_COUNTRY, m_country);
DDV_MaxChars(pDX, m_country, 2);
DDX_Text(pDX, IDC_EMAIL, m_email);
DDX_Text(pDX, IDC_FILE, m_file);
DDX_Text(pDX, IDC_ORGANIZATION, m_organization);
DDX_Text(pDX, IDC_STATE, m_state);
DDX_Text(pDX, IDC_UNIT, m_unit);
DDX_Radio(pDX, IDC_KEYSIZE1, m_keysize);
}
BEGIN_MESSAGE_MAP(CGenerateCertificateDlg, CDialog)
ON_BN_CLICKED(IDOK, OnOK)
ON_BN_CLICKED(IDC_BROWSE, OnBrowse)
END_MESSAGE_MAP()
void CGenerateCertificateDlg::OnOK()
{
UpdateData(TRUE);
if (m_country.GetLength() != 2)
{
AfxMessageBox(_T("Please enter the 2 digit country code"));
return;
}
if (m_file == _T(""))
{
AfxMessageBox(_T("Please enter a filename"));
return;
}
m_country.MakeUpper();
int bits = 1024;
if (m_keysize == 1)
bits = 2048;
else if (m_keysize == 2)
bits = 4096;
CString error;
USES_CONVERSION;
if (CAsyncSslSocketLayer::CreateSslCertificate(LPCTSTR(m_file), bits, (unsigned char*)T2CA(m_country),
(unsigned char*)T2CA(m_state), (unsigned char*)T2CA(m_city), (unsigned char*)T2CA(m_organization), (unsigned char*)T2CA(m_unit),
(unsigned char*)T2CA(m_cname), (unsigned char*)T2CA(m_email), error))
{
AfxMessageBox(_T("Certificate generated successfully."));
EndDialog(IDOK);
}
else
{
if (error != _T(""))
AfxMessageBox(_T("Certificate could not be generated.\nReason: ") + error);
else
AfxMessageBox(_T("Certificate could not be generated."));
}
}
void CGenerateCertificateDlg::OnBrowse()
{
UpdateData();
CFileDialog dlg(FALSE, 0, _T("certificate.crt"));
if (dlg.DoModal() == IDOK)
{
m_file = dlg.GetPathName();
UpdateData(FALSE);
}
}
|