1/**
2 * This file is part of the mingw-w64 runtime package.
3 * No warranty is given; refer to the file DISCLAIMER within this package.
4 */
5
6#ifndef _RASEAPIF_
7#define _RASEAPIF_
8
9#include <winapifamily.h>
10
11#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
17#define RAS_EAP_REGISTRY_LOCATION TEXT("System\\CurrentControlSet\\Services\\Rasman\\PPP\\EAP")
18
19#define RAS_EAP_VALUENAME_PATH TEXT("Path")
20#define RAS_EAP_VALUENAME_CONFIGUI TEXT("ConfigUIPath")
21#define RAS_EAP_VALUENAME_INTERACTIVEUI TEXT("InteractiveUIPath")
22#define RAS_EAP_VALUENAME_IDENTITY TEXT("IdentityPath")
23#define RAS_EAP_VALUENAME_FRIENDLY_NAME TEXT("FriendlyName")
24#define RAS_EAP_VALUENAME_DEFAULT_DATA TEXT("ConfigData")
25#define RAS_EAP_VALUENAME_REQUIRE_CONFIGUI TEXT("RequireConfigUI")
26#define RAS_EAP_VALUENAME_ENCRYPTION TEXT("MPPEEncryptionSupported")
27#define RAS_EAP_VALUENAME_INVOKE_NAMEDLG TEXT("InvokeUsernameDialog")
28#define RAS_EAP_VALUENAME_INVOKE_PWDDLG TEXT("InvokePasswordDialog")
29#define RAS_EAP_VALUENAME_CONFIG_CLSID TEXT("ConfigCLSID")
30#define RAS_EAP_VALUENAME_STANDALONE_SUPPORTED TEXT("StandaloneSupported")
31#define RAS_EAP_VALUENAME_ROLES_SUPPORTED TEXT("RolesSupported")
32#define RAS_EAP_VALUENAME_PER_POLICY_CONFIG TEXT("PerPolicyConfig")
33#define RAS_EAP_VALUENAME_ISTUNNEL_METHOD TEXT("IsTunnelMethod")
34#define RAS_EAP_VALUENAME_FILTER_INNERMETHODS TEXT("FilterInnerMethods")
35
36#define RAS_EAP_ROLE_AUTHENTICATOR 0x00000001
37#define RAS_EAP_ROLE_AUTHENTICATEE 0x00000002
38
39#define RAS_EAP_ROLE_EXCLUDE_IN_EAP 0x00000004
40#define RAS_EAP_ROLE_EXCLUDE_IN_PEAP 0x00000008
41#define RAS_EAP_ROLE_EXCLUDE_IN_VPN 0x00000010
42
43  typedef enum _RAS_AUTH_ATTRIBUTE_TYPE_ {
44    raatMinimum = 0,
45    raatUserName,
46    raatUserPassword,
47    raatMD5CHAPPassword,
48    raatNASIPAddress,
49    raatNASPort,
50    raatServiceType,
51    raatFramedProtocol,
52    raatFramedIPAddress,
53    raatFramedIPNetmask,
54    raatFramedRouting = 10,
55    raatFilterId,
56    raatFramedMTU,
57    raatFramedCompression,
58    raatLoginIPHost,
59    raatLoginService,
60    raatLoginTCPPort,
61    raatUnassigned17,
62    raatReplyMessage,
63    raatCallbackNumber,
64    raatCallbackId =20,
65    raatUnassigned21,
66    raatFramedRoute,
67    raatFramedIPXNetwork,
68    raatState,
69    raatClass,
70    raatVendorSpecific,
71    raatSessionTimeout,
72    raatIdleTimeout,
73    raatTerminationAction,
74    raatCalledStationId = 30,
75    raatCallingStationId,
76    raatNASIdentifier,
77    raatProxyState,
78    raatLoginLATService,
79    raatLoginLATNode,
80    raatLoginLATGroup,
81    raatFramedAppleTalkLink,
82    raatFramedAppleTalkNetwork,
83    raatFramedAppleTalkZone,
84    raatAcctStatusType = 40,
85    raatAcctDelayTime,
86    raatAcctInputOctets,
87    raatAcctOutputOctets,
88    raatAcctSessionId,
89    raatAcctAuthentic,
90    raatAcctSessionTime,
91    raatAcctInputPackets,
92    raatAcctOutputPackets,
93    raatAcctTerminateCause,
94    raatAcctMultiSessionId = 50,
95    raatAcctLinkCount,
96    raatAcctEventTimeStamp = 55,
97    raatMD5CHAPChallenge = 60,
98    raatNASPortType,
99    raatPortLimit,
100    raatLoginLATPort,
101    raatTunnelType,
102    raatTunnelMediumType,
103    raatTunnelClientEndpoint,
104    raatTunnelServerEndpoint,
105    raatARAPPassword = 70,
106    raatARAPFeatures,
107    raatARAPZoneAccess,
108    raatARAPSecurity,
109    raatARAPSecurityData,
110    raatPasswordRetry,
111    raatPrompt,
112    raatConnectInfo,
113    raatConfigurationToken,
114    raatEAPMessage,
115    raatSignature = 80,
116    raatARAPChallengeResponse = 84,
117    raatAcctInterimInterval = 85,
118    raatNASIPv6Address = 95,
119    raatFramedInterfaceId,
120    raatFramedIPv6Prefix,
121    raatLoginIPv6Host,
122    raatFramedIPv6Route,
123    raatFramedIPv6Pool,
124    raatARAPGuestLogon = 8096,
125    raatCertificateOID,
126    raatEAPConfiguration,
127    raatPEAPEmbeddedEAPTypeId = 8099,
128    raatInnerEAPTypeId = 8099,
129    raatPEAPFastRoamedSession = 8100,
130    raatFastRoamedSession = 8100,
131    raatEAPTLV = 8102,
132    raatCredentialsChanged,
133    raatPeerId = 9000,
134    raatServerId,
135    raatMethodId,
136    raatEMSK,
137    raatSessionId,
138    raatReserved = 0xffffffff
139  } RAS_AUTH_ATTRIBUTE_TYPE;
140
141#define raatARAPChallenge 33
142#define raatARAPOldPassword 19
143#define raatARAPNewPassword 20
144#define raatARAPPasswordChangeReason 21
145
146  typedef struct _RAS_AUTH_ATTRIBUTE {
147    RAS_AUTH_ATTRIBUTE_TYPE raaType;
148    DWORD dwLength;
149    PVOID Value;
150  } RAS_AUTH_ATTRIBUTE,*PRAS_AUTH_ATTRIBUTE;
151
152#define EAPCODE_Request 1
153#define EAPCODE_Response 2
154#define EAPCODE_Success 3
155#define EAPCODE_Failure 4
156
157#define MAXEAPCODE 4
158
159#define RAS_EAP_FLAG_ROUTER 0x00000001
160#define RAS_EAP_FLAG_NON_INTERACTIVE 0x00000002
161#define RAS_EAP_FLAG_LOGON 0x00000004
162#define RAS_EAP_FLAG_PREVIEW 0x00000008
163#define RAS_EAP_FLAG_FIRST_LINK 0x00000010
164#define RAS_EAP_FLAG_MACHINE_AUTH 0x00000020
165#define RAS_EAP_FLAG_GUEST_ACCESS 0x00000040
166#define RAS_EAP_FLAG_8021X_AUTH 0x00000080
167#define RAS_EAP_FLAG_HOSTED_IN_PEAP 0x00000100
168#define RAS_EAP_FLAG_RESUME_FROM_HIBERNATE 0x00000200
169#define RAS_EAP_FLAG_PEAP_UPFRONT 0x00000400
170#define RAS_EAP_FLAG_ALTERNATIVE_USER_DB 0x00000800
171#define RAS_EAP_FLAG_PEAP_FORCE_FULL_AUTH 0x00001000
172#define RAS_EAP_FLAG_PRE_LOGON 0x00020000
173#define RAS_EAP_FLAG_CONFG_READONLY 0x00080000
174#define RAS_EAP_FLAG_RESERVED 0x00100000
175#define RAS_EAP_FLAG_SAVE_CREDMAN 0x00200000
176
177  typedef struct _PPP_EAP_PACKET {
178    BYTE Code;
179    BYTE Id;
180    BYTE Length[2];
181    BYTE Data[1];
182  } PPP_EAP_PACKET,*PPPP_EAP_PACKET;
183
184#define PPP_EAP_PACKET_HDR_LEN (sizeof(PPP_EAP_PACKET) - 1)
185
186  typedef struct _PPP_EAP_INPUT {
187    DWORD dwSizeInBytes;
188    DWORD fFlags;
189    WINBOOL fAuthenticator;
190    WCHAR *pwszIdentity;
191    WCHAR *pwszPassword;
192    BYTE bInitialId;
193    RAS_AUTH_ATTRIBUTE *pUserAttributes;
194    WINBOOL fAuthenticationComplete;
195    DWORD dwAuthResultCode;
196    HANDLE hTokenImpersonateUser;
197    WINBOOL fSuccessPacketReceived;
198    WINBOOL fDataReceivedFromInteractiveUI;
199    PBYTE pDataFromInteractiveUI;
200    DWORD dwSizeOfDataFromInteractiveUI;
201    PBYTE pConnectionData;
202    DWORD dwSizeOfConnectionData;
203    PBYTE pUserData;
204    DWORD dwSizeOfUserData;
205    HANDLE hReserved;
206  } PPP_EAP_INPUT,*PPPP_EAP_INPUT;
207
208  typedef enum _PPP_EAP_ACTION {
209    EAPACTION_NoAction,
210    EAPACTION_Authenticate,
211    EAPACTION_Done,
212    EAPACTION_SendAndDone,
213    EAPACTION_Send,
214    EAPACTION_SendWithTimeout,
215    EAPACTION_SendWithTimeoutInteractive,
216    EAPACTION_IndicateTLV,
217    EAPACTION_IndicateIdentity
218  } PPP_EAP_ACTION;
219
220  typedef struct _PPP_EAP_OUTPUT {
221    DWORD dwSizeInBytes;
222    PPP_EAP_ACTION Action;
223    DWORD dwAuthResultCode;
224    RAS_AUTH_ATTRIBUTE *pUserAttributes;
225    WINBOOL fInvokeInteractiveUI;
226    PBYTE pUIContextData;
227    DWORD dwSizeOfUIContextData;
228    WINBOOL fSaveConnectionData;
229    PBYTE pConnectionData;
230    DWORD dwSizeOfConnectionData;
231    WINBOOL fSaveUserData;
232    PBYTE pUserData;
233    DWORD dwSizeOfUserData;
234  } PPP_EAP_OUTPUT,*PPPP_EAP_OUTPUT;
235
236  typedef struct _PPP_EAP_INFO {
237    DWORD dwSizeInBytes;
238    DWORD dwEapTypeId;
239    DWORD (WINAPI *RasEapInitialize)(WINBOOL fInitialize);
240    DWORD (WINAPI *RasEapBegin)(VOID **ppWorkBuffer, PPP_EAP_INPUT *pPppEapInput);
241    DWORD (WINAPI *RasEapEnd)(VOID *pWorkBuffer);
242    DWORD (WINAPI *RasEapMakeMessage)(VOID *pWorkBuf, PPP_EAP_PACKET *pReceivePacket, PPP_EAP_PACKET *pSendPacket, DWORD cbSendPacket, PPP_EAP_OUTPUT *pEapOutput, PPP_EAP_INPUT *pEapInput);
243  } PPP_EAP_INFO,*PPPP_EAP_INFO;
244
245  typedef struct _LEGACY_IDENTITY_UI_PARAMS {
246    DWORD eapType;
247    DWORD dwFlags;
248    DWORD dwSizeofConnectionData;
249    BYTE *pConnectionData;
250    DWORD dwSizeofUserData;
251    BYTE *pUserData;
252    DWORD dwSizeofUserDataOut;
253    BYTE *pUserDataOut;
254    LPWSTR pwszIdentity;
255    DWORD dwError;
256  } LEGACY_IDENTITY_UI_PARAMS;
257
258  typedef struct _LEGACY_INTERACTIVE_UI_PARAMS {
259    DWORD eapType;
260    DWORD dwSizeofContextData;
261    BYTE *pContextData;
262    DWORD dwSizeofInteractiveUIData;
263    BYTE *pInteractiveUIData;
264    DWORD dwError;
265  } LEGACY_INTERACTIVE_UI_PARAMS;
266
267  DWORD WINAPI RasEapGetInfo(DWORD dwEapTypeId, PPP_EAP_INFO *pEapInfo);
268  DWORD WINAPI RasEapFreeMemory(BYTE *pMemory);
269  DWORD WINAPI RasEapInvokeInteractiveUI(DWORD dwEapTypeId, HWND hwndParent, BYTE *pUIContextData, DWORD dwSizeOfUIContextData, BYTE **ppDataFromInteractiveUI, DWORD *pdwSizeOfDataFromInteractiveUI);
270  DWORD WINAPI RasEapInvokeConfigUI(DWORD dwEapTypeId, HWND hwndParent, DWORD dwFlags, BYTE *pConnectionDataIn, DWORD dwSizeOfConnectionDataIn, BYTE **ppConnectionDataOut, DWORD *pdwSizeOfConnectionDataOut);
271  DWORD WINAPI RasEapGetIdentity(DWORD dwEapTypeId, HWND hwndParent, DWORD dwFlags, const WCHAR *pwszPhonebook, const WCHAR *pwszEntry, BYTE *pConnectionDataIn, DWORD dwSizeOfConnectionDataIn, BYTE *pUserDataIn, DWORD dwSizeOfUserDataIn, BYTE **ppUserDataOut, DWORD *pdwSizeOfUserDataOut, WCHAR **ppwszIdentityOut);
272
273#ifdef __cplusplus
274}
275#endif
276
277#endif
278#endif
279