summaryrefslogtreecommitdiff
path: root/network/wlan/ihvsampleui/IHVSampleExtUI.h
blob: 474c56a3f1482e757e56f6653cc8a77a1a657ee9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
//
// Copyright (C) Microsoft Corporation 2005
// IHV UI Extension sample
//

#ifndef _IHVSAMPLEEXTUI_H_
#define _IHVSAMPLEEXTUI_H_

#include "precomp.h"

// object ref count
extern long g_objRefCount;

//lock count on server
extern long g_serverLock;

#define IHV_KEY_LENGTH 64

#define MAX_IHV_CIPHERS 6
#define MAX_IHV_AUTHS 6

// IHV Auth types
typedef enum _IHV_AUTH_TYPE {
    IHVAuthV1, 
    IHVAuthV2,
    IHVAuthV3,
    IHVAuthInvalid
} IHV_AUTH_TYPE, *PIHV_AUTH_TYPE;

// IHV cipher types
typedef enum _IHV_CIPHER_TYPE {
    None,
	IHVCipher1,
	IHVCipher2,
	IHVCipher3,
	IHVCipherInvalid
} IHV_CIPHER_TYPE, *PIHV_CIPHER_TYPE;

// structure holding valid ciphers for a given auth
typedef struct _IHV_AUTH_CIPHERS {
    IHV_AUTH_TYPE IHVAuth;
	DWORD dwCipherCount;
    IHV_CIPHER_TYPE IHVCiphers[MAX_IHV_CIPHERS];
} IHV_AUTH_CIPHERS, *PIHV_AUTH_CIPHERS;

// structure for all auths and corresponding ciphers
typedef struct _IHV_AUTH_CIPHER_CAPABILITY {
     DWORD dwAuthCount;
	 IHV_AUTH_CIPHERS IhvAuthCiphers[MAX_IHV_AUTHS];
} IHV_AUTH_CIPHER_CAPABILITY, *PIHV_AUTH_CIPHER_CAPABILITY;

typedef struct _IHV_SECURITY_CONFIG {
    IHV_AUTH_TYPE Auth;
	IHV_CIPHER_TYPE Cipher;
} IHV_SECURITY_CONFIG, *PIHV_SECURITY_CONFIG;

extern IHV_AUTH_CIPHER_CAPABILITY g_IHVOneXExtCapability; 

extern LPWSTR g_IHVAuthFriendlyName[];
extern LPWSTR g_IHVCipherFriendlyName[];


#define PROP_COUNT_CONNECTION   1

#define PROP_COUNT_SECURITY     2
#define PROP_COUNT_SEC_CIPHERS  2
typedef enum _IHV_SECURITY_TYPE {
    IHVSecurityV1, 
    IHVSecurityV2,
    IHVSecurityInvalid
} IHV_SECURITY_TYPE, *PIHV_SECURITY_TYPE;
static LPWSTR wstrSecurityTypes[] = { L"IHV Security v1", L"IHV Security v2" };

#define PROP_COUNT_KEYEXTENSION 3
static LPWSTR wstrAuthArray[] = { L"IHVAuth Open-with-1X", L"IHVAuth v1", L"IHVAuth v2" };




#define IHV_CIPHER_COUNT 3
static LPWSTR wstrCipherArray[] = { L"None", L"IHVCipher v1", L"IHVCipher v2" };
static LPWSTR wstr1XCipherArray[] = { L"IHVCipher WEP"};
static BSTR bstrCipherArray[IHV_CIPHER_COUNT] = {0};

typedef struct _IHV_CIPHERS_FOR_AUTH_INFO
{
    DOT11_EXT_UI_PROPERTY_DISPLAY_INFO displayInfo[IHV_CIPHER_COUNT];
} IHV_CIPHERS_FOR_AUTH_INFO;
static DOT11_EXT_UI_PROPERTY_DISPLAY_INFO cipherOne = {1, DOT11_EXT_UI_DISPLAY_INFO_CIPHER, 0};
static DOT11_EXT_UI_PROPERTY_DISPLAY_INFO cipherTwo = {2, DOT11_EXT_UI_DISPLAY_INFO_CIPHER, 0};
static DOT11_EXT_UI_PROPERTY_DISPLAY_INFO cipherThree = {3, DOT11_EXT_UI_DISPLAY_INFO_CIPHER, 0};
static DOT11_EXT_UI_PROPERTY_DISPLAY_INFO ciphersInfoArray[MAX_IHV_AUTHS][MAX_IHV_CIPHERS] = {0}; 


//////// structures for balloon /////////

struct IHV_UI_REQUEST
{
    char title[80];
    char help[80];

    IHV_UI_REQUEST()
    {
        memset(this, 0, sizeof(IHV_UI_REQUEST));
    }
};

struct IHV_UI_RESPONSE
{
    char key[100];
    int num[150];

    IHV_UI_RESPONSE()
    {
        memset(this, 0, sizeof(IHV_UI_RESPONSE));
    }
};


class CDot11SampleExtUI: public IDot11SampleExtUI, public IWizardExtension, public IObjectWithSite
{
public:
    CDot11SampleExtUI();

    ~CDot11SampleExtUI();
    
    // IUnknown Implementation
    BEGIN_INTERFACE_TABLE()
        IMPLEMENTS_INTERFACE(IDot11ExtUI)
        IMPLEMENTS_INTERFACE(IDot11SampleExtUI)
        IMPLEMENTS_INTERFACE(IWizardExtension)
        IMPLEMENTS_INTERFACE(IObjectWithSite)
    END_INTERFACE_TABLE();

    // Used to get the IHV friendly name
    STDMETHODIMP
    GetDot11ExtUIFriendlyName(BSTR* bstrFriendlyName);

    // Used to display an IHV specific connection page
    STDMETHODIMP
    GetDot11ExtUIProperties(
        DOT11_EXT_UI_PROPERTY_TYPE ExtType,
        ULONG *pcExtensions,
        IDot11ExtUIProperty **ppDot11ExtUIProperty
        );

    STDMETHODIMP
    GetDot11ExtUIBalloonText(
	    BSTR pIHVUIRequest, // the UI request structure from IHV
	    BSTR* pwszBalloonText // the balloon text to be displayed
	    );

    HRESULT
    CreateConnectionProperties(
        ULONG *pcExtensions,
        IDot11ExtUIProperty **ppDot11ExtUIProperty
        );
    
    HRESULT
    CreateSecurityProperties(
        ULONG *pcExtensions,
        IDot11ExtUIProperty **ppDot11ExtUIProperty
        );

    HRESULT
    CreateKeyProperties(
        ULONG *pcExtensions,
        IDot11ExtUIProperty **ppDot11ExtUIProperty
        );

    // IObjectWithSite
    STDMETHOD (SetSite) (
        IUnknown* pUnkSite
        );

    STDMETHOD (GetSite) (
        REFIID riid, 
        void** ppvSite
        );

    //IWizardExtension
    STDMETHOD (AddPages) (
        HPROPSHEETPAGE* aPages, 
        UINT cPages, 
        UINT *pnPagesAdded
        );

    STDMETHOD (GetFirstPage) (
        HPROPSHEETPAGE *phpage
        );

    STDMETHOD (GetLastPage) (
        HPROPSHEETPAGE *phpage
        );

private:
    HRESULT FinalConstruct();
    void FinalRelease();
    static BOOL CALLBACK GetKeyDlgProc (
        HWND hwndDlg,  
        UINT uMsg,
        WPARAM wParam,
        LPARAM lParam 
        );

        
    static BOOL CALLBACK HelpDlgProc (
        HWND hwndDlg,  
        UINT uMsg,
        WPARAM wParam,
        LPARAM lParam 
        );

    static BOOL CALLBACK LastPageDlgProc (
        HWND hwndDlg,  
        UINT uMsg,
        WPARAM wParam,
        LPARAM lParam 
        );

    HRESULT GetClsidPropertyName (
        _In_ const CLSID* pCLSID, 
        _In_opt_ PCWSTR pwszPropertyName,
        _Out_writes_(maxResultLen) PWSTR pResultStr,
        _In_ UINT  maxResultLen);

private:
    IHV_UI_REQUEST*         m_pUIRequest;
    IHV_UI_RESPONSE         m_UIResponse;
    
    IUnknown*				m_pUnkSite;
    
    HPROPSHEETPAGE			m_hFirstPagePsp;
    HPROPSHEETPAGE			m_hLastPagePsp;
};


#endif _IHVSAMPLEEXTUI_H_