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