119 lines
4.7 KiB
C
119 lines
4.7 KiB
C
|
extern "C" {
|
||
|
#include "ntddndis.h"
|
||
|
#include "wzcsapi.h"
|
||
|
}
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////
|
||
|
// CWZCConfigPage related stuff
|
||
|
//
|
||
|
// flags used for CWZCConfigProps::m_dwFlags
|
||
|
#define WZCDLG_PROPS_RWALL 0x000000ff // enable all settings for writing
|
||
|
#define WZCDLG_PROPS_RWSSID 0x00000001 // enable SSID for writing
|
||
|
#define WZCDLG_PROPS_RWINFR 0x00000002 // enable Infrastructure Mode for writing
|
||
|
#define WZCDLG_PROPS_RWAUTH 0x00000004 // enable Authentication Mode for writing
|
||
|
#define WZCDLG_PROPS_RWWEP 0x00000010 // enable the WEP entry for selecting
|
||
|
#define WZCDLG_PROPS_ONEX_CHECK 0x00000100 // correlate the 802.1X state with the existence of the key
|
||
|
|
||
|
#define WZCDLG_PROPS_DEFOK 0x00002000 // "OK" = defpushbutton (otherwise, "Cancel"=defpushbutton)
|
||
|
|
||
|
// utility macro to convert a hexa digit into its value
|
||
|
#define HEX(c) ((c)<='9'?(c)-'0':(c)<='F'?(c)-'A'+0xA:(c)-'a'+0xA)
|
||
|
|
||
|
// defines used for the valid WEP Key indices
|
||
|
#define WZC_WEPKIDX_NDIGITS 16 // more than we ever need
|
||
|
#define WZC_WEPKIDX_MIN 1
|
||
|
#define WZC_WEPKIDX_MAX 4
|
||
|
|
||
|
// defines legal lengths for the WEP Key material
|
||
|
#define WZC_WEPKMAT_40_ASC 5
|
||
|
#define WZC_WEPKMAT_40_HEX 10
|
||
|
#define WZC_WEPKMAT_104_ASC 13
|
||
|
#define WZC_WEPKMAT_104_HEX 26
|
||
|
#define WZC_WEPKMAT_128_ASC 16
|
||
|
#define WZC_WEPKMAT_128_HEX 32
|
||
|
|
||
|
class CEapolConfig;
|
||
|
class CWZCConfig;
|
||
|
|
||
|
class CWZCConfigPage:
|
||
|
public CPropSheetPage
|
||
|
{
|
||
|
protected:
|
||
|
BEGIN_MSG_MAP(CWZCConfigPage)
|
||
|
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
|
||
|
MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu)
|
||
|
MESSAGE_HANDLER(WM_HELP, OnHelp)
|
||
|
NOTIFY_CODE_HANDLER(PSN_APPLY, OnOK)
|
||
|
COMMAND_ID_HANDLER(IDC_SHAREDMODE, OnUsePW)
|
||
|
COMMAND_ID_HANDLER(IDC_USEPW, OnUsePW)
|
||
|
COMMAND_ID_HANDLER(IDC_USEHARDWAREPW, OnUseHWPassword)
|
||
|
COMMAND_ID_HANDLER(IDC_WZC_EDIT_KMat, OnWepKMatCmd)
|
||
|
COMMAND_ID_HANDLER(IDC_ADHOC, OnCheckEapolAllowed)
|
||
|
END_MSG_MAP()
|
||
|
|
||
|
BOOL m_bKMatTouched; // indicator whether the wep key material has been touched
|
||
|
|
||
|
// handle to the dialog
|
||
|
HWND m_hwndDlg;
|
||
|
// Handles to all the UI controls managed
|
||
|
// by this class (all related to Wireless
|
||
|
// Zero Configuration)
|
||
|
HWND m_hwndEdSSID; // "Service Set Identifier:" edit
|
||
|
HWND m_hwndChkAdhoc; // "Adhoc" vs "Infra" checkbox
|
||
|
HWND m_hwndChkShared; // "Use shared auth mode" checkbox
|
||
|
HWND m_hwndUsePW; // "Use Password" checkbox
|
||
|
// wep key related controls
|
||
|
HWND m_hwndUseHardwarePW; // "Use password from network hardware" check box
|
||
|
HWND m_hwndLblKMat; // "Key material" label
|
||
|
HWND m_hwndLblKMat2; // "Confirm Key material" label
|
||
|
HWND m_hwndEdKMat; // "Key material" edit
|
||
|
HWND m_hwndEdKMat2; // "Confirm Key material" edit
|
||
|
HWND m_hwndLblKIdx; // "Key index" label
|
||
|
HWND m_hwndEdKIdx; // "Key index" edit
|
||
|
|
||
|
// Internal members
|
||
|
DWORD m_dwFlags;
|
||
|
|
||
|
// Pointer to the EAPOL configuration for this network
|
||
|
CEapolConfig *m_pEapolConfig;
|
||
|
|
||
|
// automatically enable/disable state for all the WepK related controls
|
||
|
DWORD EnableWepKControls();
|
||
|
|
||
|
// initializes WEP controls
|
||
|
DWORD InitWepKControls();
|
||
|
|
||
|
// checks the validity of the WEP Key material
|
||
|
DWORD CheckWepKMaterial(LPSTR *ppszKMat, DWORD *pdwKeyFlags);
|
||
|
|
||
|
// parses & copies the WEP Key material from the parameter into the m_wzcConfig object
|
||
|
DWORD CopyWepKMaterial(LPSTR szKMat);
|
||
|
|
||
|
// sets the EAPOL Locked bit
|
||
|
DWORD SetEapolAllowedState();
|
||
|
|
||
|
public:
|
||
|
// wzc configuration settings
|
||
|
WZC_WLAN_CONFIG m_wzcConfig;
|
||
|
// class constructor
|
||
|
CWZCConfigPage(DWORD dwFlags = 0);
|
||
|
// initialize the wzc config data
|
||
|
DWORD UploadWzcConfig(CWZCConfig *pwzcConfig);
|
||
|
// copy a reference to the EAPOL configuration object
|
||
|
DWORD UploadEapolConfig(CEapolConfig *pEapolConfig);
|
||
|
// Sets the dialog flags
|
||
|
DWORD SetFlags(DWORD dwMask, DWORD dwNewFlags);
|
||
|
// Dialog related members
|
||
|
LRESULT OnInitDialog (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||
|
LRESULT OnOK(UINT idCtrl, LPNMHDR pnmh, BOOL& bHandled);
|
||
|
LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||
|
LRESULT OnHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||
|
LRESULT OnSetFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||
|
LRESULT OnUsePW(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
|
||
|
LRESULT OnUseHWPassword(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
|
||
|
LRESULT OnWepKMatCmd(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
|
||
|
LRESULT OnCheckEapolAllowed(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
|
||
|
};
|