Home | History | Annotate | Download | only in include
      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