|  | /** | 
|  | * This file is part of the mingw-w64 runtime package. | 
|  | * No warranty is given; refer to the file DISCLAIMER within this package. | 
|  | */ | 
|  |  | 
|  | #ifndef _RASEAPIF_ | 
|  | #define _RASEAPIF_ | 
|  |  | 
|  | #include <winapifamily.h> | 
|  |  | 
|  | #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | extern "C" { | 
|  | #endif | 
|  |  | 
|  | #define RAS_EAP_REGISTRY_LOCATION TEXT("System\\CurrentControlSet\\Services\\Rasman\\PPP\\EAP") | 
|  |  | 
|  | #define RAS_EAP_VALUENAME_PATH TEXT("Path") | 
|  | #define RAS_EAP_VALUENAME_CONFIGUI TEXT("ConfigUIPath") | 
|  | #define RAS_EAP_VALUENAME_INTERACTIVEUI TEXT("InteractiveUIPath") | 
|  | #define RAS_EAP_VALUENAME_IDENTITY TEXT("IdentityPath") | 
|  | #define RAS_EAP_VALUENAME_FRIENDLY_NAME TEXT("FriendlyName") | 
|  | #define RAS_EAP_VALUENAME_DEFAULT_DATA TEXT("ConfigData") | 
|  | #define RAS_EAP_VALUENAME_REQUIRE_CONFIGUI TEXT("RequireConfigUI") | 
|  | #define RAS_EAP_VALUENAME_ENCRYPTION TEXT("MPPEEncryptionSupported") | 
|  | #define RAS_EAP_VALUENAME_INVOKE_NAMEDLG TEXT("InvokeUsernameDialog") | 
|  | #define RAS_EAP_VALUENAME_INVOKE_PWDDLG TEXT("InvokePasswordDialog") | 
|  | #define RAS_EAP_VALUENAME_CONFIG_CLSID TEXT("ConfigCLSID") | 
|  | #define RAS_EAP_VALUENAME_STANDALONE_SUPPORTED TEXT("StandaloneSupported") | 
|  | #define RAS_EAP_VALUENAME_ROLES_SUPPORTED TEXT("RolesSupported") | 
|  | #define RAS_EAP_VALUENAME_PER_POLICY_CONFIG TEXT("PerPolicyConfig") | 
|  | #define RAS_EAP_VALUENAME_ISTUNNEL_METHOD TEXT("IsTunnelMethod") | 
|  | #define RAS_EAP_VALUENAME_FILTER_INNERMETHODS TEXT("FilterInnerMethods") | 
|  |  | 
|  | #define RAS_EAP_ROLE_AUTHENTICATOR 0x00000001 | 
|  | #define RAS_EAP_ROLE_AUTHENTICATEE 0x00000002 | 
|  |  | 
|  | #define RAS_EAP_ROLE_EXCLUDE_IN_EAP 0x00000004 | 
|  | #define RAS_EAP_ROLE_EXCLUDE_IN_PEAP 0x00000008 | 
|  | #define RAS_EAP_ROLE_EXCLUDE_IN_VPN 0x00000010 | 
|  |  | 
|  | typedef enum _RAS_AUTH_ATTRIBUTE_TYPE_ { | 
|  | raatMinimum = 0, | 
|  | raatUserName, | 
|  | raatUserPassword, | 
|  | raatMD5CHAPPassword, | 
|  | raatNASIPAddress, | 
|  | raatNASPort, | 
|  | raatServiceType, | 
|  | raatFramedProtocol, | 
|  | raatFramedIPAddress, | 
|  | raatFramedIPNetmask, | 
|  | raatFramedRouting = 10, | 
|  | raatFilterId, | 
|  | raatFramedMTU, | 
|  | raatFramedCompression, | 
|  | raatLoginIPHost, | 
|  | raatLoginService, | 
|  | raatLoginTCPPort, | 
|  | raatUnassigned17, | 
|  | raatReplyMessage, | 
|  | raatCallbackNumber, | 
|  | raatCallbackId =20, | 
|  | raatUnassigned21, | 
|  | raatFramedRoute, | 
|  | raatFramedIPXNetwork, | 
|  | raatState, | 
|  | raatClass, | 
|  | raatVendorSpecific, | 
|  | raatSessionTimeout, | 
|  | raatIdleTimeout, | 
|  | raatTerminationAction, | 
|  | raatCalledStationId = 30, | 
|  | raatCallingStationId, | 
|  | raatNASIdentifier, | 
|  | raatProxyState, | 
|  | raatLoginLATService, | 
|  | raatLoginLATNode, | 
|  | raatLoginLATGroup, | 
|  | raatFramedAppleTalkLink, | 
|  | raatFramedAppleTalkNetwork, | 
|  | raatFramedAppleTalkZone, | 
|  | raatAcctStatusType = 40, | 
|  | raatAcctDelayTime, | 
|  | raatAcctInputOctets, | 
|  | raatAcctOutputOctets, | 
|  | raatAcctSessionId, | 
|  | raatAcctAuthentic, | 
|  | raatAcctSessionTime, | 
|  | raatAcctInputPackets, | 
|  | raatAcctOutputPackets, | 
|  | raatAcctTerminateCause, | 
|  | raatAcctMultiSessionId = 50, | 
|  | raatAcctLinkCount, | 
|  | raatAcctEventTimeStamp = 55, | 
|  | raatMD5CHAPChallenge = 60, | 
|  | raatNASPortType, | 
|  | raatPortLimit, | 
|  | raatLoginLATPort, | 
|  | raatTunnelType, | 
|  | raatTunnelMediumType, | 
|  | raatTunnelClientEndpoint, | 
|  | raatTunnelServerEndpoint, | 
|  | raatARAPPassword = 70, | 
|  | raatARAPFeatures, | 
|  | raatARAPZoneAccess, | 
|  | raatARAPSecurity, | 
|  | raatARAPSecurityData, | 
|  | raatPasswordRetry, | 
|  | raatPrompt, | 
|  | raatConnectInfo, | 
|  | raatConfigurationToken, | 
|  | raatEAPMessage, | 
|  | raatSignature = 80, | 
|  | raatARAPChallengeResponse = 84, | 
|  | raatAcctInterimInterval = 85, | 
|  | raatNASIPv6Address = 95, | 
|  | raatFramedInterfaceId, | 
|  | raatFramedIPv6Prefix, | 
|  | raatLoginIPv6Host, | 
|  | raatFramedIPv6Route, | 
|  | raatFramedIPv6Pool, | 
|  | raatARAPGuestLogon = 8096, | 
|  | raatCertificateOID, | 
|  | raatEAPConfiguration, | 
|  | raatPEAPEmbeddedEAPTypeId = 8099, | 
|  | raatInnerEAPTypeId = 8099, | 
|  | raatPEAPFastRoamedSession = 8100, | 
|  | raatFastRoamedSession = 8100, | 
|  | raatEAPTLV = 8102, | 
|  | raatCredentialsChanged, | 
|  | raatPeerId = 9000, | 
|  | raatServerId, | 
|  | raatMethodId, | 
|  | raatEMSK, | 
|  | raatSessionId, | 
|  | raatReserved = 0xffffffff | 
|  | } RAS_AUTH_ATTRIBUTE_TYPE; | 
|  |  | 
|  | #define raatARAPChallenge 33 | 
|  | #define raatARAPOldPassword 19 | 
|  | #define raatARAPNewPassword 20 | 
|  | #define raatARAPPasswordChangeReason 21 | 
|  |  | 
|  | typedef struct _RAS_AUTH_ATTRIBUTE { | 
|  | RAS_AUTH_ATTRIBUTE_TYPE raaType; | 
|  | DWORD dwLength; | 
|  | PVOID Value; | 
|  | } RAS_AUTH_ATTRIBUTE,*PRAS_AUTH_ATTRIBUTE; | 
|  |  | 
|  | #define EAPCODE_Request 1 | 
|  | #define EAPCODE_Response 2 | 
|  | #define EAPCODE_Success 3 | 
|  | #define EAPCODE_Failure 4 | 
|  |  | 
|  | #define MAXEAPCODE 4 | 
|  |  | 
|  | #define RAS_EAP_FLAG_ROUTER 0x00000001 | 
|  | #define RAS_EAP_FLAG_NON_INTERACTIVE 0x00000002 | 
|  | #define RAS_EAP_FLAG_LOGON 0x00000004 | 
|  | #define RAS_EAP_FLAG_PREVIEW 0x00000008 | 
|  | #define RAS_EAP_FLAG_FIRST_LINK 0x00000010 | 
|  | #define RAS_EAP_FLAG_MACHINE_AUTH 0x00000020 | 
|  | #define RAS_EAP_FLAG_GUEST_ACCESS 0x00000040 | 
|  | #define RAS_EAP_FLAG_8021X_AUTH 0x00000080 | 
|  | #define RAS_EAP_FLAG_HOSTED_IN_PEAP 0x00000100 | 
|  | #define RAS_EAP_FLAG_RESUME_FROM_HIBERNATE 0x00000200 | 
|  | #define RAS_EAP_FLAG_PEAP_UPFRONT 0x00000400 | 
|  | #define RAS_EAP_FLAG_ALTERNATIVE_USER_DB 0x00000800 | 
|  | #define RAS_EAP_FLAG_PEAP_FORCE_FULL_AUTH 0x00001000 | 
|  | #define RAS_EAP_FLAG_PRE_LOGON 0x00020000 | 
|  | #define RAS_EAP_FLAG_CONFG_READONLY 0x00080000 | 
|  | #define RAS_EAP_FLAG_RESERVED 0x00100000 | 
|  | #define RAS_EAP_FLAG_SAVE_CREDMAN 0x00200000 | 
|  |  | 
|  | typedef struct _PPP_EAP_PACKET { | 
|  | BYTE Code; | 
|  | BYTE Id; | 
|  | BYTE Length[2]; | 
|  | BYTE Data[1]; | 
|  | } PPP_EAP_PACKET,*PPPP_EAP_PACKET; | 
|  |  | 
|  | #define PPP_EAP_PACKET_HDR_LEN (sizeof(PPP_EAP_PACKET) - 1) | 
|  |  | 
|  | typedef struct _PPP_EAP_INPUT { | 
|  | DWORD dwSizeInBytes; | 
|  | DWORD fFlags; | 
|  | WINBOOL fAuthenticator; | 
|  | WCHAR *pwszIdentity; | 
|  | WCHAR *pwszPassword; | 
|  | BYTE bInitialId; | 
|  | RAS_AUTH_ATTRIBUTE *pUserAttributes; | 
|  | WINBOOL fAuthenticationComplete; | 
|  | DWORD dwAuthResultCode; | 
|  | HANDLE hTokenImpersonateUser; | 
|  | WINBOOL fSuccessPacketReceived; | 
|  | WINBOOL fDataReceivedFromInteractiveUI; | 
|  | PBYTE pDataFromInteractiveUI; | 
|  | DWORD dwSizeOfDataFromInteractiveUI; | 
|  | PBYTE pConnectionData; | 
|  | DWORD dwSizeOfConnectionData; | 
|  | PBYTE pUserData; | 
|  | DWORD dwSizeOfUserData; | 
|  | HANDLE hReserved; | 
|  | } PPP_EAP_INPUT,*PPPP_EAP_INPUT; | 
|  |  | 
|  | typedef enum _PPP_EAP_ACTION { | 
|  | EAPACTION_NoAction, | 
|  | EAPACTION_Authenticate, | 
|  | EAPACTION_Done, | 
|  | EAPACTION_SendAndDone, | 
|  | EAPACTION_Send, | 
|  | EAPACTION_SendWithTimeout, | 
|  | EAPACTION_SendWithTimeoutInteractive, | 
|  | EAPACTION_IndicateTLV, | 
|  | EAPACTION_IndicateIdentity | 
|  | } PPP_EAP_ACTION; | 
|  |  | 
|  | typedef struct _PPP_EAP_OUTPUT { | 
|  | DWORD dwSizeInBytes; | 
|  | PPP_EAP_ACTION Action; | 
|  | DWORD dwAuthResultCode; | 
|  | RAS_AUTH_ATTRIBUTE *pUserAttributes; | 
|  | WINBOOL fInvokeInteractiveUI; | 
|  | PBYTE pUIContextData; | 
|  | DWORD dwSizeOfUIContextData; | 
|  | WINBOOL fSaveConnectionData; | 
|  | PBYTE pConnectionData; | 
|  | DWORD dwSizeOfConnectionData; | 
|  | WINBOOL fSaveUserData; | 
|  | PBYTE pUserData; | 
|  | DWORD dwSizeOfUserData; | 
|  | } PPP_EAP_OUTPUT,*PPPP_EAP_OUTPUT; | 
|  |  | 
|  | typedef struct _PPP_EAP_INFO { | 
|  | DWORD dwSizeInBytes; | 
|  | DWORD dwEapTypeId; | 
|  | DWORD (WINAPI *RasEapInitialize)(WINBOOL fInitialize); | 
|  | DWORD (WINAPI *RasEapBegin)(VOID **ppWorkBuffer, PPP_EAP_INPUT *pPppEapInput); | 
|  | DWORD (WINAPI *RasEapEnd)(VOID *pWorkBuffer); | 
|  | DWORD (WINAPI *RasEapMakeMessage)(VOID *pWorkBuf, PPP_EAP_PACKET *pReceivePacket, PPP_EAP_PACKET *pSendPacket, DWORD cbSendPacket, PPP_EAP_OUTPUT *pEapOutput, PPP_EAP_INPUT *pEapInput); | 
|  | } PPP_EAP_INFO,*PPPP_EAP_INFO; | 
|  |  | 
|  | typedef struct _LEGACY_IDENTITY_UI_PARAMS { | 
|  | DWORD eapType; | 
|  | DWORD dwFlags; | 
|  | DWORD dwSizeofConnectionData; | 
|  | BYTE *pConnectionData; | 
|  | DWORD dwSizeofUserData; | 
|  | BYTE *pUserData; | 
|  | DWORD dwSizeofUserDataOut; | 
|  | BYTE *pUserDataOut; | 
|  | LPWSTR pwszIdentity; | 
|  | DWORD dwError; | 
|  | } LEGACY_IDENTITY_UI_PARAMS; | 
|  |  | 
|  | typedef struct _LEGACY_INTERACTIVE_UI_PARAMS { | 
|  | DWORD eapType; | 
|  | DWORD dwSizeofContextData; | 
|  | BYTE *pContextData; | 
|  | DWORD dwSizeofInteractiveUIData; | 
|  | BYTE *pInteractiveUIData; | 
|  | DWORD dwError; | 
|  | } LEGACY_INTERACTIVE_UI_PARAMS; | 
|  |  | 
|  | DWORD WINAPI RasEapGetInfo(DWORD dwEapTypeId, PPP_EAP_INFO *pEapInfo); | 
|  | DWORD WINAPI RasEapFreeMemory(BYTE *pMemory); | 
|  | DWORD WINAPI RasEapInvokeInteractiveUI(DWORD dwEapTypeId, HWND hwndParent, BYTE *pUIContextData, DWORD dwSizeOfUIContextData, BYTE **ppDataFromInteractiveUI, DWORD *pdwSizeOfDataFromInteractiveUI); | 
|  | DWORD WINAPI RasEapInvokeConfigUI(DWORD dwEapTypeId, HWND hwndParent, DWORD dwFlags, BYTE *pConnectionDataIn, DWORD dwSizeOfConnectionDataIn, BYTE **ppConnectionDataOut, DWORD *pdwSizeOfConnectionDataOut); | 
|  | 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); | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | } | 
|  | #endif | 
|  |  | 
|  | #endif | 
|  | #endif |