authif.h 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  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. #include <winapifamily.h>
  6. #ifndef _AUTHIF_H_
  7. #define _AUTHIF_H_
  8. #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
  9. typedef enum _RADIUS_ATTRIBUTE_TYPE {
  10. ratMinimum = 0,
  11. ratUserName = 1,
  12. ratUserPassword = 2,
  13. ratCHAPPassword = 3,
  14. ratNASIPAddress = 4,
  15. ratNASPort = 5,
  16. ratServiceType = 6,
  17. ratFramedProtocol = 7,
  18. ratFramedIPAddress = 8,
  19. ratFramedIPNetmask = 9,
  20. ratFramedRouting = 10,
  21. ratFilterId = 11,
  22. ratFramedMTU = 12,
  23. ratFramedCompression = 13,
  24. ratLoginIPHost = 14,
  25. ratLoginService = 15,
  26. ratLoginPort = 16,
  27. ratReplyMessage = 18,
  28. ratCallbackNumber = 19,
  29. ratCallbackId = 20,
  30. ratFramedRoute = 22,
  31. ratFramedIPXNetwork = 23,
  32. ratState = 24,
  33. ratClass = 25,
  34. ratVendorSpecific = 26,
  35. ratSessionTimeout = 27,
  36. ratIdleTimeout = 28,
  37. ratTerminationAction = 29,
  38. ratCalledStationId = 30,
  39. ratCallingStationId = 31,
  40. ratNASIdentifier = 32,
  41. ratProxyState = 33,
  42. ratLoginLATService = 34,
  43. ratLoginLATNode = 35,
  44. ratLoginLATGroup = 36,
  45. ratFramedAppleTalkLink = 37,
  46. ratFramedAppleTalkNetwork = 38,
  47. ratFramedAppleTalkZone = 39,
  48. ratAcctStatusType = 40,
  49. ratAcctDelayTime = 41,
  50. ratAcctInputOctets = 42,
  51. ratAcctOutputOctets = 43,
  52. ratAcctSessionId = 44,
  53. ratAcctAuthentic = 45,
  54. ratAcctSessionTime = 46,
  55. ratAcctInputPackets = 47,
  56. ratAcctOutputPackets = 48,
  57. ratAcctTerminationCause = 49,
  58. ratCHAPChallenge = 60,
  59. ratNASPortType = 61,
  60. ratPortLimit = 62,
  61. ratTunnelType = 64,
  62. ratMediumType = 65,
  63. ratTunnelPassword = 69,
  64. ratTunnelPrivateGroupID = 81,
  65. ratNASIPv6Address = 95,
  66. ratFramedInterfaceId,
  67. ratFramedIPv6Prefix,
  68. ratLoginIPv6Host,
  69. ratFramedIPv6Route,
  70. ratFramedIPv6Pool,
  71. ratCode = 262,
  72. ratIdentifier = 263,
  73. ratAuthenticator = 264,
  74. ratSrcIPAddress = 265,
  75. ratSrcPort = 266,
  76. ratProvider = 267,
  77. ratStrippedUserName = 268,
  78. ratFQUserName = 269,
  79. ratPolicyName = 270,
  80. ratUniqueId = 271,
  81. ratExtensionState = 272,
  82. ratEAPTLV = 273,
  83. ratRejectReasonCode = 274,
  84. ratCRPPolicyName = 275,
  85. ratProviderName = 276,
  86. ratClearTextPassword = 277,
  87. ratSrcIPv6Address = 278
  88. } RADIUS_ATTRIBUTE_TYPE;
  89. typedef enum _RADIUS_CODE {
  90. rcUnknown = 0,
  91. rcAccessRequest = 1,
  92. rcAccessAccept = 2,
  93. rcAccessReject = 3,
  94. rcAccountingRequest = 4,
  95. rcAccountingResponse = 5,
  96. rcAccessChallenge = 11,
  97. rcDiscard = 256
  98. } RADIUS_CODE;
  99. typedef enum _RADIUS_AUTHENTICATION_PROVIDER {
  100. rapUnknown,
  101. rapUsersFile,
  102. rapProxy,
  103. rapWindowsNT,
  104. rapMCIS,
  105. rapODBC,
  106. rapNone
  107. } RADIUS_AUTHENTICATION_PROVIDER;
  108. typedef enum _RADIUS_REJECT_REASON_CODE {
  109. rrrcUndefined = 0,
  110. rrrcAccountUnknown = 1,
  111. rrrcAccountDisabled = 2,
  112. rrrcAccountExpired = 3,
  113. rrrcAuthenticationFailure = 4
  114. } RADIUS_REJECT_REASON_CODE;
  115. typedef enum _RADIUS_DATA_TYPE {
  116. rdtUnknown,
  117. rdtString,
  118. rdtAddress,
  119. rdtInteger,
  120. rdtTime,
  121. rdtIpv6Address
  122. } RADIUS_DATA_TYPE;
  123. typedef struct _RADIUS_ATTRIBUTE {
  124. DWORD dwAttrType;
  125. RADIUS_DATA_TYPE fDataType;
  126. DWORD cbDataLength;
  127. __C89_NAMELESS union {
  128. DWORD dwValue;
  129. CONST BYTE *lpValue;
  130. };
  131. } RADIUS_ATTRIBUTE,*PRADIUS_ATTRIBUTE;
  132. typedef struct _RADIUS_VSA_FORMAT {
  133. BYTE VendorId[4];
  134. BYTE VendorType;
  135. BYTE VendorLength;
  136. BYTE AttributeSpecific[1];
  137. } RADIUS_VSA_FORMAT;
  138. typedef enum _RADIUS_ACTION {
  139. raContinue,
  140. raReject,
  141. raAccept
  142. } RADIUS_ACTION,*PRADIUS_ACTION;
  143. #define RADIUS_EXTENSION_INIT "RadiusExtensionInit"
  144. #define RADIUS_EXTENSION_TERM "RadiusExtensionTerm"
  145. #define RADIUS_EXTENSION_PROCESS "RadiusExtensionProcess"
  146. #define RADIUS_EXTENSION_PROCESS_EX "RadiusExtensionProcessEx"
  147. #define RADIUS_EXTENSION_FREE_ATTRIBUTES "RadiusExtensionFreeAttributes"
  148. #define RADIUS_EXTENSION_PROCESS2 "RadiusExtensionProcess2"
  149. typedef DWORD (WINAPI *PRADIUS_EXTENSION_INIT) (VOID);
  150. typedef VOID (WINAPI *PRADIUS_EXTENSION_TERM) (VOID);
  151. typedef DWORD (WINAPI *PRADIUS_EXTENSION_PROCESS) (const RADIUS_ATTRIBUTE *pAttrs, PRADIUS_ACTION pfAction);
  152. typedef DWORD (WINAPI *PRADIUS_EXTENSION_PROCESS_EX) (const RADIUS_ATTRIBUTE *pInAttrs, PRADIUS_ATTRIBUTE *pOutAttrs, PRADIUS_ACTION pfAction);
  153. typedef VOID (WINAPI *PRADIUS_EXTENSION_FREE_ATTRIBUTES) (PRADIUS_ATTRIBUTE pAttrs);
  154. #define AUTHSRV_PARAMETERS_KEY_W L"System\\CurrentControlSet\\Services\\AuthSrv\\Parameters"
  155. #define AUTHSRV_EXTENSIONS_VALUE_W L"ExtensionDLLs"
  156. #define AUTHSRV_AUTHORIZATION_VALUE_W L"AuthorizationDLLs"
  157. #define RADIUS_EXTENSION_VERSION (1)
  158. typedef enum _RADIUS_EXTENSION_POINT {
  159. repAuthentication,
  160. repAuthorization
  161. } RADIUS_EXTENSION_POINT;
  162. typedef struct _RADIUS_ATTRIBUTE_ARRAY {
  163. DWORD cbSize;
  164. DWORD (WINAPI *Add) (struct _RADIUS_ATTRIBUTE_ARRAY *_This, const RADIUS_ATTRIBUTE *pAttr);
  165. const RADIUS_ATTRIBUTE *(WINAPI *AttributeAt) (const struct _RADIUS_ATTRIBUTE_ARRAY *_This, DWORD dwIndex);
  166. DWORD (WINAPI *GetSize) (const struct _RADIUS_ATTRIBUTE_ARRAY *_This);
  167. DWORD (WINAPI *InsertAt) (struct _RADIUS_ATTRIBUTE_ARRAY *_This, DWORD dwIndex, const RADIUS_ATTRIBUTE *pAttr);
  168. DWORD (WINAPI *RemoveAt) (struct _RADIUS_ATTRIBUTE_ARRAY *_This, DWORD dwIndex);
  169. DWORD (WINAPI *SetAt) (struct _RADIUS_ATTRIBUTE_ARRAY *_This, DWORD dwIndex, const RADIUS_ATTRIBUTE *pAttr);
  170. } RADIUS_ATTRIBUTE_ARRAY,*PRADIUS_ATTRIBUTE_ARRAY;
  171. typedef struct _RADIUS_EXTENSION_CONTROL_BLOCK {
  172. DWORD cbSize;
  173. DWORD dwVersion;
  174. RADIUS_EXTENSION_POINT repPoint;
  175. RADIUS_CODE rcRequestType;
  176. RADIUS_CODE rcResponseType;
  177. PRADIUS_ATTRIBUTE_ARRAY (WINAPI *GetRequest) (struct _RADIUS_EXTENSION_CONTROL_BLOCK *This);
  178. PRADIUS_ATTRIBUTE_ARRAY (WINAPI *GetResponse) (struct _RADIUS_EXTENSION_CONTROL_BLOCK *This, RADIUS_CODE rcResponseType);
  179. DWORD (WINAPI *SetResponseType) (struct _RADIUS_EXTENSION_CONTROL_BLOCK *This, RADIUS_CODE rcResponseType);
  180. } RADIUS_EXTENSION_CONTROL_BLOCK,*PRADIUS_EXTENSION_CONTROL_BLOCK;
  181. typedef DWORD (WINAPI *PRADIUS_EXTENSION_PROCESS_2) (PRADIUS_EXTENSION_CONTROL_BLOCK pECB);
  182. #endif
  183. #endif