reactos/sdk/include/psdk/raseapif.h

273 lines
8.3 KiB
C

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