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_EAPMETHODAUTHENTICATORAPIS
7 #define _INC_EAPMETHODAUTHENTICATORAPIS
8 #if (_WIN32_WINNT >= 0x0600)
9 #include <eaptypes.h>
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13 
14 typedef struct _EAP_AUTHENTICATOR_METHOD_ROUTINES {
15   DWORD           dwSizeInBytes;
16   EAP_METHOD_TYPE *pEapType;
17   DWORD (APIENTRY *EapMethodAuthenticatorInitialize)(
18       EAP_METHOD_TYPE pEapType,
19       EAP_ERROR ppEapError);
20   DWORD (APIENTRY *EapMethodAuthenticatorBeginSession)(
21       DWORD dwFlags,
22       LPCWSTR pwszIdentity,
23       EapAttributes pAttributeArray,
24       DWORD dwSizeOfConnectionData,
25       BYTE pConnectionData,
26       DWORD dwMaxSendPacketSize,
27       EAP_SESSION_HANDLE pSessionHandle,
28       EAP_ERROR ppEapError);
29   DWORD (APIENTRY *EapMethodAuthenticatorUpdateInnerMethodParams)(
30       EAP_SESSION_HANDLE sessionHandle,
31       DWORD dwFlags,
32       WCHAR pwszIdentity,
33       EapAttributes pAttributeArray,
34       EAP_ERROR ppEapError);
35   DWORD (APIENTRY *EapMethodAuthenticatorReceivePacket)(
36       EAP_SESSION_HANDLE sessionHandle,
37       DWORD cbReceivePacket,
38       EapPacket pReceivePacket,
39       EAP_METHOD_AUTHENTICATOR_RESPONSE_ACTION pEapOutput,
40       EAP_ERROR ppEapError);
41   DWORD (APIENTRY *EapMethodAuthenticatorSendPacket)(
42       EAP_SESSION_HANDLE sessionHandle,
43       BYTE bPacketId,
44       DWORD pcbSendPacket,
45       EapPacket pSendPacket,
46       EAP_AUTHENTICATOR_SEND_TIMEOUT pTimeout,
47       EAP_ERROR ppEapError);
48   DWORD (APIENTRY *EapMethodAuthenticatorGetAttributes)(
49       EAP_SESSION_HANDLE sessionHandle,
50       EapAttributes pAttribs,
51       EAP_ERROR ppEapError);
52   DWORD (APIENTRY *EapMethodAuthenticatorSetAttributes)(
53       EAP_SESSION_HANDLE sessionHandle,
54       EapAttributes pAttribs,
55       EAP_METHOD_AUTHENTICATOR_RESPONSE_ACTION pEapOutput,
56       EAP_ERROR ppEapError);
57   DWORD (APIENTRY *EapMethodAuthenticatorGetResult)(
58       EAP_SESSION_HANDLE sessionHandle,
59       EAP_METHOD_AUTHENTICATOR_RESULT pResult,
60       EAP_ERROR ppEapError);
61   DWORD (APIENTRY *EapMethodAuthenticatorEndSession)(
62       EAP_SESSION_HANDLE sessionHandle,
63       EAP_ERROR ppEapError);
64   DWORD (APIENTRY *EapMethodAuthenticatorShutdown)(
65       EAP_METHOD_TYPE pEapType,
66       EAP_ERROR ppEapError);
67 } EAP_AUTHENTICATOR_METHOD_ROUTINES;
68 
69 VOID WINAPI EapMethodAuthenticatorFreeMemory(
70   void *pUIContextData
71 );
72 
73 DWORD WINAPI EapMethodAuthenticatorInitialize(
74   EAP_METHOD_TYPE *pEapType,
75   EAP_ERROR **ppEapError
76 );
77 
78 VOID WINAPI EapPeerFreeErrorMemory(
79   EAP_ERROR *ppEapError
80 );
81 
82 DWORD WINAPI EapMethodAuthenticatorGetResult(
83   EAP_SESSION_HANDLE sessionHandle,
84   EAP_METHOD_AUTHENTICATOR_RESULT *pResult,
85   EAP_ERROR **ppEapError
86 );
87 
88 DWORD WINAPI EapMethodAuthenticatorBeginSession(
89   DWORD dwFlags,
90   LPCWSTR pwszIdentity,
91   const EapAttributes *pAttributeArray,
92   DWORD dwSizeOfConnectionData,
93   const BYTE *pConnectionData,
94   DWORD dwMaxSendPacketSize,
95   EAP_SESSION_HANDLE *pSessionHandle,
96   EAP_ERROR **ppEapError
97 );
98 
99 DWORD WINAPI EapMethodAuthenticatorFreeErrorMemory(
100   EAP_ERROR *ppEapError
101 );
102 
103 DWORD EapMethodAuthenticatorEndSession(
104   EAP_SESSION_HANDLE sessionHandle,
105   EAP_ERROR **ppEapError
106 );
107 
108 DWORD EapMethodAuthenticatorGetAttributes(
109   EAP_SESSION_HANDLE sessionHandle,
110   EapAttributes *pAttribs,
111   EAP_ERROR **ppEapError
112 );
113 
114 DWORD EapMethodAuthenticatorGetInfo(
115   EAP_METHOD_TYPE *pEapType,
116   EAP_AUTHENTICATOR_METHOD_ROUTINES *pEapInfo,
117   EAP_ERROR **ppEapError
118 );
119 
120 DWORD EapMethodAuthenticatorGetResult(
121   EAP_SESSION_HANDLE sessionHandle,
122   EAP_METHOD_AUTHENTICATOR_RESULT *pResult,
123   EAP_ERROR **ppEapError
124 );
125 
126 DWORD WINAPI EapMethodAuthenticatorInvokeConfigUI(
127   EAP_METHOD_TYPE *pEapMethodType,
128   HWND hwndParent,
129   DWORD dwFlags,
130   LPCWSTR pwszMachineName,
131   DWORD dwSizeOfConfigIn,
132   BYTE *pConfigIn,
133   DWORD *pdwSizeOfConfigOut,
134   BYTE **ppConfigOut,
135   EAP_ERROR **pEapError
136 );
137 
138 DWORD WINAPI EapMethodAuthenticatorReceivePacket(
139   EAP_SESSION_HANDLE sessionHandle,
140   DWORD cbReceivePacket,
141   const EapPacket *pReceivePacket,
142   EAP_METHOD_AUTHENTICATOR_RESPONSE_ACTION *pEapOutput,
143   EAP_ERROR **ppEapError
144 );
145 
146 DWORD WINAPI EapMethodAuthenticatorSendPacket(
147   EAP_SESSION_HANDLE sessionHandle,
148   BYTE bPacketId,
149   DWORD *pcbSendPacket,
150   EapPacket *pSendPacket,
151   EAP_AUTHENTICATOR_SEND_TIMEOUT *pTimeout,
152   EAP_ERROR **ppEapError
153 );
154 
155 DWORD WINAPI EapMethodAuthenticatorSetAttributes(
156   EAP_SESSION_HANDLE sessionHandle,
157   const EapAttributes *pAttribs,
158   EAP_METHOD_AUTHENTICATOR_RESPONSE_ACTION *pEapOutput,
159   EAP_ERROR **ppEapError
160 );
161 
162 DWORD WINAPI EapMethodAuthenticatorShutdown(
163   EAP_METHOD_TYPE *peapType,
164   EAP_ERROR **ppEapError
165 );
166 
167 DWORD WINAPI EapMethodAuthenticatorUpdateInnerMethodParams(
168   EAP_SESSION_HANDLE sessionHandle,
169   DWORD dwFlags,
170   const WCHAR *pwszIdentity,
171   const EapAttributes *pAttributeArray,
172   EAP_ERROR **ppEapError
173 );
174 
175 #ifdef __cplusplus
176 }
177 #endif
178 #endif /*(_WIN32_WINNT >= 0x0600)*/
179 #endif /*_INC_EAPMETHODAUTHENTICATORAPIS*/
180