1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5  */
6 #ifndef _INC_EAPMETHODPEERAPIS
7 #define _INC_EAPMETHODPEERAPIS
8 #if (_WIN32_WINNT >= 0x0600)
9 #include <eaptypes.h>
10 #include <eapmethodtypes.h>
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
16 DWORD WINAPI EapPeerQueryCredentialInputFields(
17   HANDLE hUserImpersonationToken,
18   EAP_METHOD_TYPE eapMethodType,
19   DWORD dwFlags,
20   DWORD dwEapConnDataSize,
21   BYTE *pbEapConnData,
22   EAP_CONFIG_INPUT_FIELD_ARRAY *pEapConfigInputFieldsArray,
23   EAP_ERROR **ppEapError
24 );
25 
26 DWORD WINAPI EapPeerBeginSession(
27   DWORD dwFlags,
28   const EapAttributes *pAttributeArray,
29   HANDLE hTokenImpersonateUser,
30   DWORD dwSizeofConnectionData,
31   BYTE *pConnectionData,
32   DWORD dwSizeofUserData,
33   BYTE *pUserData,
34   DWORD dwMaxSendPacketSize,
35   EAP_SESSION_HANDLE *pSessionHandle,
36   EAP_ERROR **ppEapError
37 );
38 
39 DWORD WINAPI EapPeerQueryUserBlobFromCredentialInputFields(
40   HANDLE hUserImpersonationToken,
41   EAP_METHOD_TYPE eapMethodType,
42   DWORD dwFlags,
43   DWORD dwEapConnDataSize,
44   BYTE *pbEapConnData,
45   const EAP_CONFIG_INPUT_FIELD_ARRAY *pEapConfigInputFieldArray,
46   DWORD *pdwUsersBlobSize,
47   BYTE **ppUserBlob,
48   EAP_ERROR **ppEapError
49 );
50 
51 DWORD WINAPI EapPeerGetIdentity(
52   DWORD dwflags,
53   DWORD dwSizeofConnectionData,
54   const BYTE *pConnectionData,
55   DWORD dwSizeOfUserData,
56   const BYTE *pUserData,
57   HANDLE hTokenImpersonateUser,
58   WINBOOL *pfInvokeUI,
59   DWORD *pdwSizeOfUserDataOut,
60   BYTE **ppUserDataOut,
61   LPWSTR *ppwszIdentity,
62   EAP_ERROR **ppEapError
63 );
64 
65 DWORD WINAPI EapPeerInitialize(
66   EAP_ERROR **ppEapError
67 );
68 
69 DWORD WINAPI EapPeerGetInfo(
70   EAP_TYPE *pEapType,
71   EAP_PEER_METHOD_ROUTINES *pEapInfo,
72   EAP_ERROR **ppEapError
73 );
74 
75 DWORD WINAPI EapPeerSetCredentials(
76   EAP_SESSION_HANDLE sessionHandle,
77   LPWSTR pwszIdentity,
78   LPWSTR pwszPassword,
79   EAP_ERROR **ppEapError
80 );
81 
82 DWORD WINAPI EapPeerInvokeIdentityUI(
83   EAP_METHOD_TYPE *pEapType,
84   DWORD dwflags,
85   HWND hwndParent,
86   DWORD dwSizeOfConnectionData,
87   const BYTE *pConnectionData,
88   DWORD dwSizeOfUserData,
89   const BYTE *pUserData,
90   DWORD *pdwSizeOfUserDataOut,
91   BYTE **ppUserDataOut,
92   LPWSTR *ppwszIdentity,
93   EAP_ERROR **ppEapError
94 );
95 
96 DWORD WINAPI EapPeerProcessRequestPacket(
97   EAP_SESSION_HANDLE sessionHandle,
98   DWORD cbReceivedPacket,
99   EapPacket *pReceivedPacket,
100   EapPeerMethodOutput *pEapOutput,
101   EAP_ERROR **ppEapError
102 );
103 
104 DWORD WINAPI EapPeerGetResponsePacket(
105   EAP_SESSION_HANDLE sessionHandle,
106   DWORD *pcbSendPacket,
107   EapPacket *pSendPacket,
108   EAP_ERROR **ppEapError
109 );
110 
111 DWORD WINAPI EapPeerGetResult(
112   EAP_SESSION_HANDLE sessionHandle,
113   EapPeerMethodResultReason reason,
114   EapPeerMethodResult *ppResult,
115   EAP_ERROR **ppEapError
116 );
117 
118 typedef struct tagEapPeerMethodResult {
119   WINBOOL        fIsSuccess;
120   DWORD          dwFailureReasonCode;
121   WINBOOL        fSaveConnectionData;
122   DWORD          dwSizeOfConnectionData;
123   BYTE *         pConnectionData;
124   WINBOOL        fSaveUserData;
125   DWORD          dwSizeofUserData;
126   BYTE *         pUserData;
127   EAP_ATTRIBUTES *pAttribArray;
128   EAP_ERROR *    pEapError;
129 } EapPeerMethodResult;
130 
131 DWORD WINAPI EapPeerGetUIContext(
132   EAP_SESSION_HANDLE sessionHandle,
133   DWORD *pdwSizeOfUIContextData,
134   BYTE **ppUIContextData,
135   EAP_ERROR **ppEapError
136 );
137 
138 DWORD WINAPI EapPeerSetUIContext(
139   EAP_SESSION_HANDLE sessionHandle,
140   DWORD dwSizeOfUIContextData,
141   const BYTE *pUIContextData,
142   EapPeerMethodOutput *pEapOutput,
143   EAP_ERROR **ppEapError
144 );
145 
146 DWORD WINAPI EapPeerGetResponseAttributes(
147   EAP_SESSION_HANDLE sessionHandle,
148   EapAttributes *pAttribs,
149   EAP_ERROR **ppEapError
150 );
151 
152 DWORD WINAPI EapPeerSetResponseAttributes(
153   EAP_SESSION_HANDLE sessionHandle,
154   EapAttributes *pAttribs,
155   EapPeerMethodOutput *pEapOutput,
156   EAP_ERROR **ppEapError
157 );
158 
159 DWORD WINAPI EapPeerEndSession(
160   EAP_SESSION_HANDLE sessionHandle,
161   EAP_ERROR **ppEapError
162 );
163 
164 DWORD WINAPI EapPeerShutdown(
165   EAP_ERROR **ppEapError
166 );
167 
168 DWORD WINAPI EapPeerInvokeConfigUI(
169   EAP_METHOD_TYPE *pEapType,
170   HWND hwndParent,
171   DWORD dwFlags,
172   DWORD dwSizeOfConnectionDataIn,
173   BYTE *pConnectionDataIn,
174   DWORD *dwSizeOfConnectionDataOut,
175   BYTE **ppConnectionDataOut,
176   EAP_ERROR **ppEapError
177 );
178 
179 DWORD WINAPI EapPeerInvokeInteractiveUI(
180   EAP_METHOD_TYPE *pEapType,
181   HWND hwndParent,
182   DWORD dwSizeofUIContextData,
183   BYTE *pUIContextData,
184   DWORD *pdwSizeOfDataFromInteractiveUI,
185   BYTE **ppDataFromInteractiveUI,
186   EAP_ERROR **ppEapError
187 );
188 
189 DWORD WINAPI EapPeerQueryInteractiveUIInputFields(
190   DWORD dwVersion,
191   DWORD dwFlags,
192   DWORD dwSizeofUIContextData,
193   const BYTE *pUIContextData,
194   EAP_INTERACTIVE_UI_DATA *pEapInteractiveUIData,
195   EAP_ERROR **ppEapError,
196   LPVOID *pvReserved
197 );
198 
199 DWORD WINAPI EapPeerQueryUIBlobFromInteractiveUIInputFields(
200   DWORD dwVersion,
201   DWORD dwFlags,
202   DWORD dwSizeofUIContextData,
203   const BYTE *pUIContextData,
204   const EAP_INTERACTIVE_UI_DATA *pEapInteractiveUIData,
205   DWORD *pdwSizeOfDataFromInteractiveUI,
206   BYTE **ppDataFromInteractiveUI,
207   EAP_ERROR **ppEapError,
208   LPVOID *ppvReserved
209 );
210 
211 DWORD WINAPI EapPeerConfigBlob2Xml(
212   DWORD dwFlags,
213   EAP_METHOD_TYPE eapMethodType,
214   const BYTE *pConfigIn,
215   DWORD dwSizeOfConfigIn,
216   IXMLDOMDocument2 **ppConfigDoc,
217   EAP_ERROR **pEapError
218 );
219 
220 DWORD WINAPI EapPeerConfigXml2Blob(
221   DWORD dwFlags,
222   EAP_METHOD_TYPE eapMethodType,
223   IXMLDOMDocument2 *pConfigDoc,
224   BYTE **ppConfigOut,
225   DWORD *pdwSizeOfConfigOut,
226   EAP_ERROR **ppEapError
227 );
228 
229 DWORD WINAPI EapPeerCredentialsXml2Blob(
230   DWORD dwFlags,
231   EAP_METHOD_TYPE eapMethodType,
232   IXMLDOMDocument2 *pCredentialsDoc,
233   const BYTE *pConfigIn,
234   DWORD dwSizeOfConfigIn,
235   BYTE **ppCredentialsOut,
236   DWORD *pdwSizeofCredentialsOut,
237   EAP_ERROR **ppEapError
238 );
239 
240 VOID WINAPI EapPeerFreeMemory(
241   void *pUIContextData
242 );
243 
244 #ifdef __cplusplus
245 }
246 #endif
247 
248 #endif /*(_WIN32_WINNT >= 0x0600)*/
249 #endif /*_INC_EAPMETHODPEERAPIS*/
250