📄 raseapif.h
字号:
/********************************************************************/
/** Copyright(c) 1989-1999 Microsoft Corporation. **/
/********************************************************************/
//***
//
// Filename: raseapif.h
//
// Description: Defines interface between a third party authentication module
// and the Remote Access Service PPP engine.
//
#ifndef _RASEAPIF_
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
#define _RASEAPIF_
#if _MSC_VER > 1000
#pragma once
#endif
#ifdef __cplusplus
extern "C" {
#endif
#if(WINVER >= 0x0500)
//
// Defines used for installtion of EAP DLL
//
// Custom EAP DLL (ex. Name=Sample.dll, Type=(decimal 40) regsitry installation)
//
// HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rasman\PPP\EAP\40)
// Path (REG_EXPAND_SZ) %SystemRoot%\system32\sample.dll
// ConfigUIPath (REG_EXPAND_SZ) %SystemRoot%\system32\sample.dll
// InteractiveUIPath (REG_EXPAND_SZ) %SystemRoot%\system32\sample.dll
// IdentityPath (REG_EXPAND_SZ) %SystemRoot%\system32\sample.dll
// FriendlyName (REG_SZ) Sample EAP Protocol
// RequireConfigUI (REG_DWORD) 1
// ConfigCLSID (REG_SZ) {0000031A-0000-0000-C000-000000000046}
// StandaloneSupported (REG_DWORD) 1
//
#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")
typedef enum _RAS_AUTH_ATTRIBUTE_TYPE_
{
raatMinimum = 0, // Undefined
raatUserName, // Value field is a Pointer
raatUserPassword, // Value field is a Pointer
raatMD5CHAPPassword, // Value field is a Pointer
raatNASIPAddress, // Value field is a 32 bit integral value
raatNASPort, // Value field is a 32 bit integral value
raatServiceType, // Value field is a 32 bit integral value
raatFramedProtocol, // Value field is a 32 bit integral value
raatFramedIPAddress, // Value field is a 32 bit integral value
raatFramedIPNetmask, // Value field is a 32 bit integral value
raatFramedRouting = 10, // Value field is a 32 bit integral value
raatFilterId, // Value field is a Pointer
raatFramedMTU, // Value field is a 32 bit integral value
raatFramedCompression, // Value field is a 32 bit integral value
raatLoginIPHost, // Value field is a 32 bit integral value
raatLoginService, // Value field is a 32 bit integral value
raatLoginTCPPort, // Value field is a 32 bit integral value
raatUnassigned17, // Undefined
raatReplyMessage, // Value field is a Pointer
raatCallbackNumber, // Value field is a Pointer
raatCallbackId =20, // Value field is a Pointer
raatUnassigned21, // Undefined
raatFramedRoute, // Value field is a Pointer
raatFramedIPXNetwork, // Value field is a 32 bit integral value
raatState, // Value field is a Pointer
raatClass, // Value field is a Pointer
raatVendorSpecific, // Value field is a Pointer
raatSessionTimeout, // Value field is a 32 bit integral value
raatIdleTimeout, // Value field is a 32 bit integral value
raatTerminationAction, // Value field is a 32 bit integral value
raatCalledStationId = 30, // Value field is a Pointer
raatCallingStationId, // Value field is a Pointer
raatNASIdentifier, // Value field is a Pointer
raatProxyState, // Value field is a Pointer
raatLoginLATService, // Value field is a Pointer
raatLoginLATNode, // Value field is a Pointer
raatLoginLATGroup, // Value field is a Pointer
raatFramedAppleTalkLink, // Value field is a 32 bit integral value
raatFramedAppleTalkNetwork, // Value field is a 32 bit integral value
raatFramedAppleTalkZone, // Value field is a Pointer
raatAcctStatusType = 40, // Value field is a 32 bit integral value
raatAcctDelayTime, // Value field is a 32 bit integral value
raatAcctInputOctets, // Value field is a 32 bit integral value
raatAcctOutputOctets, // Value field is a 32 bit integral value
raatAcctSessionId, // Value field is a Pointer
raatAcctAuthentic, // Value field is a 32 bit integral value
raatAcctSessionTime, // Value field is a 32 bit integral value
raatAcctInputPackets, // Value field is a 32 bit integral value
raatAcctOutputPackets, // Value field is a 32 bit integral value
raatAcctTerminateCause, // Value field is a 32 bit integral value
raatAcctMultiSessionId = 50, // Value field is a Pointer
raatAcctLinkCount, // Value field is a 32 bit integral value
raatAcctEventTimeStamp = 55, // Value field is a 32 bit integral value
raatMD5CHAPChallenge = 60, // Value field is a Pointer
raatNASPortType, // Value field is a 32 bit integral value
raatPortLimit, // Value field is a 32 bit integral value
raatLoginLATPort, // Value field is a Pointer
raatTunnelType, // Value field is a 32 bit integral value
raatTunnelMediumType, // Value field is a 32 bit integral value
raatTunnelClientEndpoint, // Value field is a Pointer
raatTunnelServerEndpoint, // Value field is a Pointer
raatARAPPassword = 70, // Value field is a Pointer
raatARAPFeatures, // Value field is a Pointer
raatARAPZoneAccess, // Value field is a 32 bit integral value
raatARAPSecurity, // Value field is a 32 bit integral value
raatARAPSecurityData, // Value field is a Pointer
raatPasswordRetry, // Value field is a 32 bit integral value
raatPrompt, // Value field is a 32 bit integral value
raatConnectInfo, // Value field is a Pointer
raatConfigurationToken, // Value field is a Pointer
raatEAPMessage, // Value field is a Pointer
raatSignature = 80, // Value field is a Pointer
raatARAPChallengeResponse = 84, // Value field is a Pointer
raatAcctInterimInterval = 85, // Value field is a 32 bit integral value
raatARAPGuestLogon = 8096, // Value field is a 32 bit integral value
raatReserved = 0xFFFFFFFF // Undefined
}RAS_AUTH_ATTRIBUTE_TYPE;
//
// VSA attribute ids for ARAP
//
#define raatARAPChallenge 33
#define raatARAPOldPassword 19
#define raatARAPNewPassword 20
#define raatARAPPasswordChangeReason 21
//
// Value is set to the 32 bit integral value or a pointer to data.
// 32 bit integral values should be in host format, not network format.
// Length for a 32 bit integral value can be 1, 2 or 4. The array of
// attributes must be terminated with an attribute of type raatMinimum.
//
typedef struct _RAS_AUTH_ATTRIBUTE
{
RAS_AUTH_ATTRIBUTE_TYPE raaType;
DWORD dwLength;
PVOID Value;
}RAS_AUTH_ATTRIBUTE, *PRAS_AUTH_ATTRIBUTE;
//
// EAP packet codes from EAP spec.
//
#define EAPCODE_Request 1
#define EAPCODE_Response 2
#define EAPCODE_Success 3
#define EAPCODE_Failure 4
#define MAXEAPCODE 4
//
// Values of the fFlags field in PPP_EAP_INPUT
// These have the same values as the RASEAPF_ flags in ras.h
//
#define RAS_EAP_FLAG_ROUTER 0x00000001 // This is a router
#define RAS_EAP_FLAG_NON_INTERACTIVE 0x00000002 // No UI should be displayed
#define RAS_EAP_FLAG_LOGON 0x00000004 // The user data was
// obtained from Winlogon
#define RAS_EAP_FLAG_PREVIEW 0x00000008 // User has checked
// "Prompt for information
// before dialing"
#define RAS_EAP_FLAG_FIRST_LINK 0x00000010 // This is the first link
typedef struct _PPP_EAP_PACKET
{
BYTE Code; // 1-Request, 2-Response, 3-Success, 4-Failure
BYTE Id; // Id of this packet
BYTE Length[2]; // Length of this packet
BYTE Data[1]; // Data - First byte is Type for Request/Response
}PPP_EAP_PACKET, *PPPP_EAP_PACKET;
#define PPP_EAP_PACKET_HDR_LEN ( sizeof( PPP_EAP_PACKET ) - 1 )
//
// Interface structure between the engine and APs. This is passed to the
// AP's via the RasCpBegin call.
//
typedef struct _PPP_EAP_INPUT
{
//
// Size of this structure
//
DWORD dwSizeInBytes;
//
// The following five fields are valid only in RasEapBegin call
//
DWORD fFlags; // See RAS_EAP_FLAG_*
BOOL fAuthenticator; // Act as authenticator or authenticatee
WCHAR * pwszIdentity; // Users's identity
WCHAR * pwszPassword; // Client's account password. Only valid when
// fAuthenticator is FALSE.
BYTE bInitialId; // Initial packet identifier. Must be used for
// the first EAP packet sent by the DLL and
// incremented by one for each subsequent
// request packet.
//
// During the RasEapBegin call on the authenticator side, pUserAttributes
// contains the set of attributes for the currently dialed in user, e.g.,
// the port used, NAS IP Address, etc.
//
// When the fAuthenticationComplete flag is TRUE, pUserAttributes contains
// attributes (if any) returned by the authentication provider.
//
// This memory is not owned by the EAP DLL and should be treated as
// read-only.
//
RAS_AUTH_ATTRIBUTE * pUserAttributes;
//
// The next two fields are used only if the EAP DLL is using the
// currently configured authentication provider ex: RADIUS or Windows NT
// domain authentication, and the fAuthenticator field above is set to
// TRUE.
//
//
// Indicates that the authenticator has completed authentication.
// Ignore this field if an authentication provider is not being used.
//
BOOL fAuthenticationComplete;
//
// Result of the authentication process by the authentication provider.
// NO_ERROR indicates success, otherwise it is a value from winerror.h,
// raserror.h or mprerror.h indicating failure reason.
//
DWORD dwAuthResultCode;
//
// Valid only on the authenticatee side. This may be used on the
// authenticatee side to impersonate the user being authenticated.
//
OPTIONAL HANDLE hTokenImpersonateUser;
//
// This variable should be examined only by the authenticatee side.
// The EAP specification states that the success packet may be lost and
// since it is a non-acknowledged packet, reception of an NCP packet should
// be interpreted as a success packet. This varable is set to TRUE in this
// case only on the authenticatee side
//
BOOL fSuccessPacketReceived;
//
// Will be set to TRUE only when the user dismissed the interactive
// UI that was invoked by the EAP dll
//
BOOL fDataReceivedFromInteractiveUI;
//
// Data received from the Interactive UI. Will be set to
// non-NULL when fDataReceivedFromInteractiveUI is set to TRUE and
// RasEapInvokeInteractiveUI returned non-NULL data. This buffer will be
// freed by the PPP engine on return from the RasEapMakeMessage call. A
// copy of this data should be made in the EAP Dll's memory space.
//
OPTIONAL PBYTE pDataFromInteractiveUI;
//
// Size in bytes of data pointed to by pInteractiveConnectionData. This may
// be 0 if there was no data passed back by RasEapInvokeInteractiveUI.
//
DWORD dwSizeOfDataFromInteractiveUI;
//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -