Home | History | Annotate | Download | only in include
      1 /**
      2  * This file is part of the mingw-w64 runtime package.
      3  * No warranty is given; refer to the file DISCLAIMER within this package.
      4  */
      5 
      6 #ifndef _RASEAPIF_
      7 #define _RASEAPIF_
      8 
      9 #include <winapifamily.h>
     10 
     11 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
     12 
     13 #ifdef __cplusplus
     14 extern "C" {
     15 #endif
     16 
     17 #define RAS_EAP_REGISTRY_LOCATION TEXT("System\\CurrentControlSet\\Services\\Rasman\\PPP\\EAP")
     18 
     19 #define RAS_EAP_VALUENAME_PATH TEXT("Path")
     20 #define RAS_EAP_VALUENAME_CONFIGUI TEXT("ConfigUIPath")
     21 #define RAS_EAP_VALUENAME_INTERACTIVEUI TEXT("InteractiveUIPath")
     22 #define RAS_EAP_VALUENAME_IDENTITY TEXT("IdentityPath")
     23 #define RAS_EAP_VALUENAME_FRIENDLY_NAME TEXT("FriendlyName")
     24 #define RAS_EAP_VALUENAME_DEFAULT_DATA TEXT("ConfigData")
     25 #define RAS_EAP_VALUENAME_REQUIRE_CONFIGUI TEXT("RequireConfigUI")
     26 #define RAS_EAP_VALUENAME_ENCRYPTION TEXT("MPPEEncryptionSupported")
     27 #define RAS_EAP_VALUENAME_INVOKE_NAMEDLG TEXT("InvokeUsernameDialog")
     28 #define RAS_EAP_VALUENAME_INVOKE_PWDDLG TEXT("InvokePasswordDialog")
     29 #define RAS_EAP_VALUENAME_CONFIG_CLSID TEXT("ConfigCLSID")
     30 #define RAS_EAP_VALUENAME_STANDALONE_SUPPORTED TEXT("StandaloneSupported")
     31 #define RAS_EAP_VALUENAME_ROLES_SUPPORTED TEXT("RolesSupported")
     32 #define RAS_EAP_VALUENAME_PER_POLICY_CONFIG TEXT("PerPolicyConfig")
     33 #define RAS_EAP_VALUENAME_ISTUNNEL_METHOD TEXT("IsTunnelMethod")
     34 #define RAS_EAP_VALUENAME_FILTER_INNERMETHODS TEXT("FilterInnerMethods")
     35 
     36 #define RAS_EAP_ROLE_AUTHENTICATOR 0x00000001
     37 #define RAS_EAP_ROLE_AUTHENTICATEE 0x00000002
     38 
     39 #define RAS_EAP_ROLE_EXCLUDE_IN_EAP 0x00000004
     40 #define RAS_EAP_ROLE_EXCLUDE_IN_PEAP 0x00000008
     41 #define RAS_EAP_ROLE_EXCLUDE_IN_VPN 0x00000010
     42 
     43   typedef enum _RAS_AUTH_ATTRIBUTE_TYPE_ {
     44     raatMinimum = 0,
     45     raatUserName,
     46     raatUserPassword,
     47     raatMD5CHAPPassword,
     48     raatNASIPAddress,
     49     raatNASPort,
     50     raatServiceType,
     51     raatFramedProtocol,
     52     raatFramedIPAddress,
     53     raatFramedIPNetmask,
     54     raatFramedRouting = 10,
     55     raatFilterId,
     56     raatFramedMTU,
     57     raatFramedCompression,
     58     raatLoginIPHost,
     59     raatLoginService,
     60     raatLoginTCPPort,
     61     raatUnassigned17,
     62     raatReplyMessage,
     63     raatCallbackNumber,
     64     raatCallbackId =20,
     65     raatUnassigned21,
     66     raatFramedRoute,
     67     raatFramedIPXNetwork,
     68     raatState,
     69     raatClass,
     70     raatVendorSpecific,
     71     raatSessionTimeout,
     72     raatIdleTimeout,
     73     raatTerminationAction,
     74     raatCalledStationId = 30,
     75     raatCallingStationId,
     76     raatNASIdentifier,
     77     raatProxyState,
     78     raatLoginLATService,
     79     raatLoginLATNode,
     80     raatLoginLATGroup,
     81     raatFramedAppleTalkLink,
     82     raatFramedAppleTalkNetwork,
     83     raatFramedAppleTalkZone,
     84     raatAcctStatusType = 40,
     85     raatAcctDelayTime,
     86     raatAcctInputOctets,
     87     raatAcctOutputOctets,
     88     raatAcctSessionId,
     89     raatAcctAuthentic,
     90     raatAcctSessionTime,
     91     raatAcctInputPackets,
     92     raatAcctOutputPackets,
     93     raatAcctTerminateCause,
     94     raatAcctMultiSessionId = 50,
     95     raatAcctLinkCount,
     96     raatAcctEventTimeStamp = 55,
     97     raatMD5CHAPChallenge = 60,
     98     raatNASPortType,
     99     raatPortLimit,
    100     raatLoginLATPort,
    101     raatTunnelType,
    102     raatTunnelMediumType,
    103     raatTunnelClientEndpoint,
    104     raatTunnelServerEndpoint,
    105     raatARAPPassword = 70,
    106     raatARAPFeatures,
    107     raatARAPZoneAccess,
    108     raatARAPSecurity,
    109     raatARAPSecurityData,
    110     raatPasswordRetry,
    111     raatPrompt,
    112     raatConnectInfo,
    113     raatConfigurationToken,
    114     raatEAPMessage,
    115     raatSignature = 80,
    116     raatARAPChallengeResponse = 84,
    117     raatAcctInterimInterval = 85,
    118     raatNASIPv6Address = 95,
    119     raatFramedInterfaceId,
    120     raatFramedIPv6Prefix,
    121     raatLoginIPv6Host,
    122     raatFramedIPv6Route,
    123     raatFramedIPv6Pool,
    124     raatARAPGuestLogon = 8096,
    125     raatCertificateOID,
    126     raatEAPConfiguration,
    127     raatPEAPEmbeddedEAPTypeId = 8099,
    128     raatInnerEAPTypeId = 8099,
    129     raatPEAPFastRoamedSession = 8100,
    130     raatFastRoamedSession = 8100,
    131     raatEAPTLV = 8102,
    132     raatCredentialsChanged,
    133     raatPeerId = 9000,
    134     raatServerId,
    135     raatMethodId,
    136     raatEMSK,
    137     raatSessionId,
    138     raatReserved = 0xffffffff
    139   } RAS_AUTH_ATTRIBUTE_TYPE;
    140 
    141 #define raatARAPChallenge 33
    142 #define raatARAPOldPassword 19
    143 #define raatARAPNewPassword 20
    144 #define raatARAPPasswordChangeReason 21
    145 
    146   typedef struct _RAS_AUTH_ATTRIBUTE {
    147     RAS_AUTH_ATTRIBUTE_TYPE raaType;
    148     DWORD dwLength;
    149     PVOID Value;
    150   } RAS_AUTH_ATTRIBUTE,*PRAS_AUTH_ATTRIBUTE;
    151 
    152 #define EAPCODE_Request 1
    153 #define EAPCODE_Response 2
    154 #define EAPCODE_Success 3
    155 #define EAPCODE_Failure 4
    156 
    157 #define MAXEAPCODE 4
    158 
    159 #define RAS_EAP_FLAG_ROUTER 0x00000001
    160 #define RAS_EAP_FLAG_NON_INTERACTIVE 0x00000002
    161 #define RAS_EAP_FLAG_LOGON 0x00000004
    162 #define RAS_EAP_FLAG_PREVIEW 0x00000008
    163 #define RAS_EAP_FLAG_FIRST_LINK 0x00000010
    164 #define RAS_EAP_FLAG_MACHINE_AUTH 0x00000020
    165 #define RAS_EAP_FLAG_GUEST_ACCESS 0x00000040
    166 #define RAS_EAP_FLAG_8021X_AUTH 0x00000080
    167 #define RAS_EAP_FLAG_HOSTED_IN_PEAP 0x00000100
    168 #define RAS_EAP_FLAG_RESUME_FROM_HIBERNATE 0x00000200
    169 #define RAS_EAP_FLAG_PEAP_UPFRONT 0x00000400
    170 #define RAS_EAP_FLAG_ALTERNATIVE_USER_DB 0x00000800
    171 #define RAS_EAP_FLAG_PEAP_FORCE_FULL_AUTH 0x00001000
    172 #define RAS_EAP_FLAG_PRE_LOGON 0x00020000
    173 #define RAS_EAP_FLAG_CONFG_READONLY 0x00080000
    174 #define RAS_EAP_FLAG_RESERVED 0x00100000
    175 #define RAS_EAP_FLAG_SAVE_CREDMAN 0x00200000
    176 
    177   typedef struct _PPP_EAP_PACKET {
    178     BYTE Code;
    179     BYTE Id;
    180     BYTE Length[2];
    181     BYTE Data[1];
    182   } PPP_EAP_PACKET,*PPPP_EAP_PACKET;
    183 
    184 #define PPP_EAP_PACKET_HDR_LEN (sizeof(PPP_EAP_PACKET) - 1)
    185 
    186   typedef struct _PPP_EAP_INPUT {
    187     DWORD dwSizeInBytes;
    188     DWORD fFlags;
    189     WINBOOL fAuthenticator;
    190     WCHAR *pwszIdentity;
    191     WCHAR *pwszPassword;
    192     BYTE bInitialId;
    193     RAS_AUTH_ATTRIBUTE *pUserAttributes;
    194     WINBOOL fAuthenticationComplete;
    195     DWORD dwAuthResultCode;
    196     HANDLE hTokenImpersonateUser;
    197     WINBOOL fSuccessPacketReceived;
    198     WINBOOL fDataReceivedFromInteractiveUI;
    199     PBYTE pDataFromInteractiveUI;
    200     DWORD dwSizeOfDataFromInteractiveUI;
    201     PBYTE pConnectionData;
    202     DWORD dwSizeOfConnectionData;
    203     PBYTE pUserData;
    204     DWORD dwSizeOfUserData;
    205     HANDLE hReserved;
    206   } PPP_EAP_INPUT,*PPPP_EAP_INPUT;
    207 
    208   typedef enum _PPP_EAP_ACTION {
    209     EAPACTION_NoAction,
    210     EAPACTION_Authenticate,
    211     EAPACTION_Done,
    212     EAPACTION_SendAndDone,
    213     EAPACTION_Send,
    214     EAPACTION_SendWithTimeout,
    215     EAPACTION_SendWithTimeoutInteractive,
    216     EAPACTION_IndicateTLV,
    217     EAPACTION_IndicateIdentity
    218   } PPP_EAP_ACTION;
    219 
    220   typedef struct _PPP_EAP_OUTPUT {
    221     DWORD dwSizeInBytes;
    222     PPP_EAP_ACTION Action;
    223     DWORD dwAuthResultCode;
    224     RAS_AUTH_ATTRIBUTE *pUserAttributes;
    225     WINBOOL fInvokeInteractiveUI;
    226     PBYTE pUIContextData;
    227     DWORD dwSizeOfUIContextData;
    228     WINBOOL fSaveConnectionData;
    229     PBYTE pConnectionData;
    230     DWORD dwSizeOfConnectionData;
    231     WINBOOL fSaveUserData;
    232     PBYTE pUserData;
    233     DWORD dwSizeOfUserData;
    234   } PPP_EAP_OUTPUT,*PPPP_EAP_OUTPUT;
    235 
    236   typedef struct _PPP_EAP_INFO {
    237     DWORD dwSizeInBytes;
    238     DWORD dwEapTypeId;
    239     DWORD (WINAPI *RasEapInitialize)(WINBOOL fInitialize);
    240     DWORD (WINAPI *RasEapBegin)(VOID **ppWorkBuffer, PPP_EAP_INPUT *pPppEapInput);
    241     DWORD (WINAPI *RasEapEnd)(VOID *pWorkBuffer);
    242     DWORD (WINAPI *RasEapMakeMessage)(VOID *pWorkBuf, PPP_EAP_PACKET *pReceivePacket, PPP_EAP_PACKET *pSendPacket, DWORD cbSendPacket, PPP_EAP_OUTPUT *pEapOutput, PPP_EAP_INPUT *pEapInput);
    243   } PPP_EAP_INFO,*PPPP_EAP_INFO;
    244 
    245   typedef struct _LEGACY_IDENTITY_UI_PARAMS {
    246     DWORD eapType;
    247     DWORD dwFlags;
    248     DWORD dwSizeofConnectionData;
    249     BYTE *pConnectionData;
    250     DWORD dwSizeofUserData;
    251     BYTE *pUserData;
    252     DWORD dwSizeofUserDataOut;
    253     BYTE *pUserDataOut;
    254     LPWSTR pwszIdentity;
    255     DWORD dwError;
    256   } LEGACY_IDENTITY_UI_PARAMS;
    257 
    258   typedef struct _LEGACY_INTERACTIVE_UI_PARAMS {
    259     DWORD eapType;
    260     DWORD dwSizeofContextData;
    261     BYTE *pContextData;
    262     DWORD dwSizeofInteractiveUIData;
    263     BYTE *pInteractiveUIData;
    264     DWORD dwError;
    265   } LEGACY_INTERACTIVE_UI_PARAMS;
    266 
    267   DWORD WINAPI RasEapGetInfo(DWORD dwEapTypeId, PPP_EAP_INFO *pEapInfo);
    268   DWORD WINAPI RasEapFreeMemory(BYTE *pMemory);
    269   DWORD WINAPI RasEapInvokeInteractiveUI(DWORD dwEapTypeId, HWND hwndParent, BYTE *pUIContextData, DWORD dwSizeOfUIContextData, BYTE **ppDataFromInteractiveUI, DWORD *pdwSizeOfDataFromInteractiveUI);
    270   DWORD WINAPI RasEapInvokeConfigUI(DWORD dwEapTypeId, HWND hwndParent, DWORD dwFlags, BYTE *pConnectionDataIn, DWORD dwSizeOfConnectionDataIn, BYTE **ppConnectionDataOut, DWORD *pdwSizeOfConnectionDataOut);
    271   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 **ppwszIdentityOut);
    272 
    273 #ifdef __cplusplus
    274 }
    275 #endif
    276 
    277 #endif
    278 #endif
    279