raseapif.h 8.6 KB

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