#ifndef _RASEAPIF_ #define _RASEAPIF_ #ifdef __cplusplus extern "C" { #endif #if(WINVER >= 0x0500) #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_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 #define raatARAPChallenge 33 #define raatARAPOldPassword 19 #define raatARAPNewPassword 20 #define raatARAPPasswordChangeReason 21 #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 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, raatARAPGuestLogon = 8096, raatCertificateOID, raatEAPConfiguration, raatPEAPEmbeddedEAPTypeId, raatPEAPFastRoamedSession, raatEAPTLV = 8102, raatReserved = 0xFFFFFFFF }RAS_AUTH_ATTRIBUTE_TYPE; typedef struct _RAS_AUTH_ATTRIBUTE { RAS_AUTH_ATTRIBUTE_TYPE raaType; DWORD dwLength; PVOID Value; }RAS_AUTH_ATTRIBUTE, *PRAS_AUTH_ATTRIBUTE; 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; BOOL fAuthenticator; WCHAR* pwszIdentity; WCHAR* pwszPassword; BYTE bInitialId; RAS_AUTH_ATTRIBUTE* pUserAttributes; BOOL fAuthenticationComplete; DWORD dwAuthResultCode; OPTIONAL HANDLE hTokenImpersonateUser; BOOL fSuccessPacketReceived; BOOL fDataReceivedFromInteractiveUI; OPTIONAL PBYTE pDataFromInteractiveUI; DWORD dwSizeOfDataFromInteractiveUI; OPTIONAL PBYTE pConnectionData; DWORD dwSizeOfConnectionData; OPTIONAL 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; OPTIONAL RAS_AUTH_ATTRIBUTE* pUserAttributes; BOOL fInvokeInteractiveUI; OPTIONAL PBYTE pUIContextData; DWORD dwSizeOfUIContextData; BOOL fSaveConnectionData; OPTIONAL PBYTE pConnectionData; DWORD dwSizeOfConnectionData; BOOL fSaveUserData; OPTIONAL PBYTE pUserData; DWORD dwSizeOfUserData; }PPP_EAP_OUTPUT, *PPPP_EAP_OUTPUT; typedef struct _PPP_EAP_INFO { DWORD dwSizeInBytes; DWORD dwEapTypeId; DWORD (APIENTRY *RasEapInitialize)(IN BOOL fInitialize ); DWORD (APIENTRY *RasEapBegin)(OUT VOID** ppWorkBuffer, IN PPP_EAP_INPUT* pPppEapInput); DWORD (APIENTRY *RasEapEnd)(IN VOID* pWorkBuffer); DWORD (APIENTRY *RasEapMakeMessage)(IN VOID* pWorkBuf, IN PPP_EAP_PACKET* pReceivePacket, OUT PPP_EAP_PACKET* pSendPacket, IN DWORD cbSendPacket, OUT PPP_EAP_OUTPUT* pEapOutput, IN PPP_EAP_INPUT* pEapInput); }PPP_EAP_INFO, *PPPP_EAP_INFO; DWORD APIENTRY RasEapGetInfo(IN DWORD dwEapTypeId, OUT PPP_EAP_INFO* pEapInfo); DWORD APIENTRY RasEapFreeMemory(IN BYTE* pMemory); DWORD APIENTRY RasEapInvokeInteractiveUI(IN DWORD dwEapTypeId, IN HWND hwndParent, IN BYTE* pUIContextData, IN DWORD dwSizeOfUIContextData, OUT BYTE** ppDataFromInteractiveUI, OUT DWORD* pdwSizeOfDataFromInteractiveUI); DWORD APIENTRY RasEapInvokeConfigUI(IN DWORD dwEapTypeId, IN HWND hwndParent, IN DWORD dwFlags, IN BYTE* pConnectionDataIn, IN DWORD dwSizeOfConnectionDataIn, OUT BYTE** ppConnectionDataOut, OUT DWORD* pdwSizeOfConnectionDataOut); DWORD APIENTRY RasEapGetIdentity(IN DWORD dwEapTypeId, IN HWND hwndParent, IN DWORD dwFlags, IN const WCHAR* pwszPhonebook, IN const WCHAR* pwszEntry, IN BYTE* pConnectionDataIn, IN DWORD dwSizeOfConnectionDataIn, IN BYTE* pUserDataIn, IN DWORD dwSizeOfUserDataIn, OUT BYTE** ppUserDataOut, OUT DWORD* pdwSizeOfUserDataOut, OUT WCHAR** ppwszIdentity ); #endif /* WINVER >= 0x0500 */ #ifdef __cplusplus } #endif #endif /* _RASEAPIF_ */