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