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