/** * 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 #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