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 _RASEAPIF_ 7 #define _RASEAPIF_ 8 9 #ifdef __cplusplus 10 extern "C" { 11 #endif 12 13 #define RAS_EAP_REGISTRY_LOCATION TEXT("System\\CurrentControlSet\\Services\\Rasman\\PPP\\EAP") 14 15 #define RAS_EAP_VALUENAME_PATH TEXT("Path") 16 #define RAS_EAP_VALUENAME_CONFIGUI TEXT("ConfigUIPath") 17 #define RAS_EAP_VALUENAME_INTERACTIVEUI TEXT("InteractiveUIPath") 18 #define RAS_EAP_VALUENAME_IDENTITY TEXT("IdentityPath") 19 #define RAS_EAP_VALUENAME_FRIENDLY_NAME TEXT("FriendlyName") 20 #define RAS_EAP_VALUENAME_DEFAULT_DATA TEXT("ConfigData") 21 #define RAS_EAP_VALUENAME_REQUIRE_CONFIGUI TEXT("RequireConfigUI") 22 #define RAS_EAP_VALUENAME_ENCRYPTION TEXT("MPPEEncryptionSupported") 23 #define RAS_EAP_VALUENAME_INVOKE_NAMEDLG TEXT("InvokeUsernameDialog") 24 #define RAS_EAP_VALUENAME_INVOKE_PWDDLG TEXT("InvokePasswordDialog") 25 #define RAS_EAP_VALUENAME_CONFIG_CLSID TEXT("ConfigCLSID") 26 #define RAS_EAP_VALUENAME_STANDALONE_SUPPORTED TEXT("StandaloneSupported") 27 #define RAS_EAP_VALUENAME_ROLES_SUPPORTED TEXT("RolesSupported") 28 #define RAS_EAP_VALUENAME_PER_POLICY_CONFIG TEXT("PerPolicyConfig") 29 30 #define RAS_EAP_ROLE_AUTHENTICATOR 0x00000001 31 #define RAS_EAP_ROLE_AUTHENTICATEE 0x00000002 32 33 #define RAS_EAP_ROLE_EXCLUDE_IN_EAP 0x00000004 34 #define RAS_EAP_ROLE_EXCLUDE_IN_PEAP 0x00000008 35 #define RAS_EAP_ROLE_EXCLUDE_IN_VPN 0x00000010 36 37 typedef enum _RAS_AUTH_ATTRIBUTE_TYPE_ { 38 raatMinimum = 0,raatUserName,raatUserPassword,raatMD5CHAPPassword,raatNASIPAddress,raatNASPort,raatServiceType,raatFramedProtocol, 39 raatFramedIPAddress,raatFramedIPNetmask,raatFramedRouting = 10,raatFilterId,raatFramedMTU,raatFramedCompression,raatLoginIPHost, 40 raatLoginService,raatLoginTCPPort,raatUnassigned17,raatReplyMessage,raatCallbackNumber,raatCallbackId =20,raatUnassigned21, 41 raatFramedRoute,raatFramedIPXNetwork,raatState,raatClass,raatVendorSpecific,raatSessionTimeout,raatIdleTimeout,raatTerminationAction, 42 raatCalledStationId = 30,raatCallingStationId,raatNASIdentifier,raatProxyState,raatLoginLATService,raatLoginLATNode,raatLoginLATGroup, 43 raatFramedAppleTalkLink,raatFramedAppleTalkNetwork,raatFramedAppleTalkZone,raatAcctStatusType = 40,raatAcctDelayTime,raatAcctInputOctets, 44 raatAcctOutputOctets,raatAcctSessionId,raatAcctAuthentic,raatAcctSessionTime,raatAcctInputPackets,raatAcctOutputPackets,raatAcctTerminateCause, 45 raatAcctMultiSessionId = 50,raatAcctLinkCount,raatAcctEventTimeStamp = 55,raatMD5CHAPChallenge = 60,raatNASPortType,raatPortLimit,raatLoginLATPort, 46 raatTunnelType,raatTunnelMediumType,raatTunnelClientEndpoint,raatTunnelServerEndpoint,raatARAPPassword = 70,raatARAPFeatures,raatARAPZoneAccess, 47 raatARAPSecurity,raatARAPSecurityData,raatPasswordRetry,raatPrompt,raatConnectInfo,raatConfigurationToken,raatEAPMessage,raatSignature = 80, 48 raatARAPChallengeResponse = 84,raatAcctInterimInterval = 85,raatARAPGuestLogon = 8096,raatCertificateOID,raatEAPConfiguration, 49 raatPEAPEmbeddedEAPTypeId,raatPEAPFastRoamedSession,raatEAPTLV = 8102,raatReserved = 0xFFFFFFFF 50 } RAS_AUTH_ATTRIBUTE_TYPE; 51 52 #define raatARAPChallenge 33 53 #define raatARAPOldPassword 19 54 #define raatARAPNewPassword 20 55 #define raatARAPPasswordChangeReason 21 56 57 typedef struct _RAS_AUTH_ATTRIBUTE { 58 RAS_AUTH_ATTRIBUTE_TYPE raaType; 59 DWORD dwLength; 60 PVOID Value; 61 } RAS_AUTH_ATTRIBUTE,*PRAS_AUTH_ATTRIBUTE; 62 63 #define EAPCODE_Request 1 64 #define EAPCODE_Response 2 65 #define EAPCODE_Success 3 66 #define EAPCODE_Failure 4 67 68 #define MAXEAPCODE 4 69 70 #define RAS_EAP_FLAG_ROUTER 0x00000001 71 #define RAS_EAP_FLAG_NON_INTERACTIVE 0x00000002 72 #define RAS_EAP_FLAG_LOGON 0x00000004 73 #define RAS_EAP_FLAG_PREVIEW 0x00000008 74 #define RAS_EAP_FLAG_FIRST_LINK 0x00000010 75 #define RAS_EAP_FLAG_MACHINE_AUTH 0x00000020 76 #define RAS_EAP_FLAG_GUEST_ACCESS 0x00000040 77 #define RAS_EAP_FLAG_8021X_AUTH 0x00000080 78 #define RAS_EAP_FLAG_HOSTED_IN_PEAP 0x00000100 79 #define RAS_EAP_FLAG_RESUME_FROM_HIBERNATE 0x00000200 80 #define RAS_EAP_FLAG_PEAP_UPFRONT 0x00000400 81 #define RAS_EAP_FLAG_ALTERNATIVE_USER_DB 0x00000800 82 83 typedef struct _PPP_EAP_PACKET { 84 BYTE Code; 85 BYTE Id; 86 BYTE Length[2]; 87 BYTE Data[1]; 88 } PPP_EAP_PACKET,*PPPP_EAP_PACKET; 89 90 #define PPP_EAP_PACKET_HDR_LEN (sizeof(PPP_EAP_PACKET) - 1) 91 92 typedef struct _PPP_EAP_INPUT { 93 DWORD dwSizeInBytes; 94 DWORD fFlags; 95 WINBOOL fAuthenticator; 96 WCHAR *pwszIdentity; 97 WCHAR *pwszPassword; 98 BYTE bInitialId; 99 RAS_AUTH_ATTRIBUTE *pUserAttributes; 100 WINBOOL fAuthenticationComplete; 101 DWORD dwAuthResultCode; 102 HANDLE hTokenImpersonateUser; 103 WINBOOL fSuccessPacketReceived; 104 WINBOOL fDataReceivedFromInteractiveUI; 105 PBYTE pDataFromInteractiveUI; 106 DWORD dwSizeOfDataFromInteractiveUI; 107 PBYTE pConnectionData; 108 DWORD dwSizeOfConnectionData; 109 PBYTE pUserData; 110 DWORD dwSizeOfUserData; 111 HANDLE hReserved; 112 } PPP_EAP_INPUT,*PPPP_EAP_INPUT; 113 114 typedef enum _PPP_EAP_ACTION { 115 EAPACTION_NoAction,EAPACTION_Authenticate,EAPACTION_Done,EAPACTION_SendAndDone,EAPACTION_Send,EAPACTION_SendWithTimeout, 116 EAPACTION_SendWithTimeoutInteractive,EAPACTION_IndicateTLV,EAPACTION_IndicateIdentity 117 } PPP_EAP_ACTION; 118 119 typedef struct _PPP_EAP_OUTPUT { 120 DWORD dwSizeInBytes; 121 PPP_EAP_ACTION Action; 122 DWORD dwAuthResultCode; 123 RAS_AUTH_ATTRIBUTE *pUserAttributes; 124 WINBOOL fInvokeInteractiveUI; 125 PBYTE pUIContextData; 126 DWORD dwSizeOfUIContextData; 127 WINBOOL fSaveConnectionData; 128 PBYTE pConnectionData; 129 DWORD dwSizeOfConnectionData; 130 WINBOOL fSaveUserData; 131 PBYTE pUserData; 132 DWORD dwSizeOfUserData; 133 } PPP_EAP_OUTPUT,*PPPP_EAP_OUTPUT; 134 135 typedef struct _PPP_EAP_INFO { 136 DWORD dwSizeInBytes; 137 DWORD dwEapTypeId; 138 DWORD (WINAPI *RasEapInitialize)(WINBOOL fInitialize); 139 DWORD (WINAPI *RasEapBegin)(VOID **ppWorkBuffer,PPP_EAP_INPUT *pPppEapInput); 140 DWORD (WINAPI *RasEapEnd)(VOID *pWorkBuffer); 141 DWORD (WINAPI *RasEapMakeMessage)(VOID *pWorkBuf,PPP_EAP_PACKET *pReceivePacket,PPP_EAP_PACKET *pSendPacket,DWORD cbSendPacket,PPP_EAP_OUTPUT *pEapOutput,PPP_EAP_INPUT *pEapInput); 142 } PPP_EAP_INFO,*PPPP_EAP_INFO; 143 144 DWORD WINAPI RasEapGetInfo(DWORD dwEapTypeId,PPP_EAP_INFO *pEapInfo); 145 DWORD WINAPI RasEapFreeMemory(BYTE *pMemory); 146 DWORD WINAPI RasEapInvokeInteractiveUI(DWORD dwEapTypeId,HWND hwndParent,BYTE *pUIContextData,DWORD dwSizeOfUIContextData,BYTE **ppDataFromInteractiveUI,DWORD *pdwSizeOfDataFromInteractiveUI); 147 DWORD WINAPI RasEapInvokeConfigUI(DWORD dwEapTypeId,HWND hwndParent,DWORD dwFlags,BYTE *pConnectionDataIn,DWORD dwSizeOfConnectionDataIn,BYTE **ppConnectionDataOut,DWORD *pdwSizeOfConnectionDataOut); 148 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 **ppwszIdentity); 149 150 #ifdef __cplusplus 151 } 152 #endif 153 #endif 154