| /** | 
 |  * This file is part of the mingw-w64 runtime package. | 
 |  * No warranty is given; refer to the file DISCLAIMER within this package. | 
 |  */ | 
 |  | 
 | #include <winapifamily.h> | 
 |  | 
 | #ifndef _AUTHIF_H_ | 
 | #define _AUTHIF_H_ | 
 |  | 
 | #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) | 
 | typedef enum _RADIUS_ATTRIBUTE_TYPE { | 
 |   ratMinimum = 0, | 
 |   ratUserName = 1, | 
 |   ratUserPassword = 2, | 
 |   ratCHAPPassword = 3, | 
 |   ratNASIPAddress = 4, | 
 |   ratNASPort = 5, | 
 |   ratServiceType = 6, | 
 |   ratFramedProtocol = 7, | 
 |   ratFramedIPAddress = 8, | 
 |   ratFramedIPNetmask = 9, | 
 |   ratFramedRouting = 10, | 
 |   ratFilterId = 11, | 
 |   ratFramedMTU = 12, | 
 |   ratFramedCompression = 13, | 
 |   ratLoginIPHost = 14, | 
 |   ratLoginService = 15, | 
 |   ratLoginPort = 16, | 
 |   ratReplyMessage = 18, | 
 |   ratCallbackNumber = 19, | 
 |   ratCallbackId = 20, | 
 |   ratFramedRoute = 22, | 
 |   ratFramedIPXNetwork = 23, | 
 |   ratState = 24, | 
 |   ratClass = 25, | 
 |   ratVendorSpecific = 26, | 
 |   ratSessionTimeout = 27, | 
 |   ratIdleTimeout = 28, | 
 |   ratTerminationAction = 29, | 
 |   ratCalledStationId = 30, | 
 |   ratCallingStationId = 31, | 
 |   ratNASIdentifier = 32, | 
 |   ratProxyState = 33, | 
 |   ratLoginLATService = 34, | 
 |   ratLoginLATNode = 35, | 
 |   ratLoginLATGroup = 36, | 
 |   ratFramedAppleTalkLink = 37, | 
 |   ratFramedAppleTalkNetwork = 38, | 
 |   ratFramedAppleTalkZone = 39, | 
 |   ratAcctStatusType = 40, | 
 |   ratAcctDelayTime = 41, | 
 |   ratAcctInputOctets = 42, | 
 |   ratAcctOutputOctets = 43, | 
 |   ratAcctSessionId = 44, | 
 |   ratAcctAuthentic = 45, | 
 |   ratAcctSessionTime = 46, | 
 |   ratAcctInputPackets = 47, | 
 |   ratAcctOutputPackets = 48, | 
 |   ratAcctTerminationCause = 49, | 
 |   ratCHAPChallenge = 60, | 
 |   ratNASPortType = 61, | 
 |   ratPortLimit = 62, | 
 |   ratTunnelType = 64, | 
 |   ratMediumType = 65, | 
 |   ratTunnelPassword = 69, | 
 |   ratTunnelPrivateGroupID = 81, | 
 |   ratNASIPv6Address = 95, | 
 |   ratFramedInterfaceId, | 
 |   ratFramedIPv6Prefix, | 
 |   ratLoginIPv6Host, | 
 |   ratFramedIPv6Route, | 
 |   ratFramedIPv6Pool, | 
 |   ratCode = 262, | 
 |   ratIdentifier = 263, | 
 |   ratAuthenticator = 264, | 
 |   ratSrcIPAddress = 265, | 
 |   ratSrcPort = 266, | 
 |   ratProvider = 267, | 
 |   ratStrippedUserName = 268, | 
 |   ratFQUserName = 269, | 
 |   ratPolicyName = 270, | 
 |   ratUniqueId = 271, | 
 |   ratExtensionState = 272, | 
 |   ratEAPTLV = 273, | 
 |   ratRejectReasonCode = 274, | 
 |   ratCRPPolicyName = 275, | 
 |   ratProviderName = 276, | 
 |   ratClearTextPassword = 277, | 
 |   ratSrcIPv6Address = 278 | 
 | } RADIUS_ATTRIBUTE_TYPE; | 
 |  | 
 | typedef enum _RADIUS_CODE { | 
 |   rcUnknown = 0, | 
 |   rcAccessRequest = 1, | 
 |   rcAccessAccept = 2, | 
 |   rcAccessReject = 3, | 
 |   rcAccountingRequest = 4, | 
 |   rcAccountingResponse = 5, | 
 |   rcAccessChallenge = 11, | 
 |   rcDiscard = 256 | 
 | } RADIUS_CODE; | 
 |  | 
 | typedef enum _RADIUS_AUTHENTICATION_PROVIDER { | 
 |   rapUnknown, | 
 |   rapUsersFile, | 
 |   rapProxy, | 
 |   rapWindowsNT, | 
 |   rapMCIS, | 
 |   rapODBC, | 
 |   rapNone | 
 | } RADIUS_AUTHENTICATION_PROVIDER; | 
 | typedef enum _RADIUS_REJECT_REASON_CODE { | 
 |   rrrcUndefined = 0, | 
 |   rrrcAccountUnknown = 1, | 
 |   rrrcAccountDisabled = 2, | 
 |   rrrcAccountExpired = 3, | 
 |   rrrcAuthenticationFailure = 4 | 
 | } RADIUS_REJECT_REASON_CODE; | 
 |  | 
 | typedef enum _RADIUS_DATA_TYPE { | 
 |   rdtUnknown, | 
 |   rdtString, | 
 |   rdtAddress, | 
 |   rdtInteger, | 
 |   rdtTime, | 
 |   rdtIpv6Address | 
 | } RADIUS_DATA_TYPE; | 
 |  | 
 | typedef struct _RADIUS_ATTRIBUTE { | 
 |   DWORD dwAttrType; | 
 |   RADIUS_DATA_TYPE fDataType; | 
 |   DWORD cbDataLength; | 
 |   __C89_NAMELESS union { | 
 |     DWORD dwValue; | 
 |     CONST BYTE *lpValue; | 
 |   }; | 
 | } RADIUS_ATTRIBUTE,*PRADIUS_ATTRIBUTE; | 
 |  | 
 | typedef struct _RADIUS_VSA_FORMAT { | 
 |   BYTE VendorId[4]; | 
 |   BYTE VendorType; | 
 |   BYTE VendorLength; | 
 |   BYTE AttributeSpecific[1]; | 
 | } RADIUS_VSA_FORMAT; | 
 |  | 
 | typedef enum _RADIUS_ACTION { | 
 |   raContinue, | 
 |   raReject, | 
 |   raAccept | 
 | } RADIUS_ACTION,*PRADIUS_ACTION; | 
 |  | 
 | #define RADIUS_EXTENSION_INIT "RadiusExtensionInit" | 
 | #define RADIUS_EXTENSION_TERM "RadiusExtensionTerm" | 
 | #define RADIUS_EXTENSION_PROCESS "RadiusExtensionProcess" | 
 | #define RADIUS_EXTENSION_PROCESS_EX "RadiusExtensionProcessEx" | 
 | #define RADIUS_EXTENSION_FREE_ATTRIBUTES "RadiusExtensionFreeAttributes" | 
 | #define RADIUS_EXTENSION_PROCESS2 "RadiusExtensionProcess2" | 
 |  | 
 | typedef DWORD (WINAPI *PRADIUS_EXTENSION_INIT) (VOID); | 
 | typedef VOID (WINAPI *PRADIUS_EXTENSION_TERM) (VOID); | 
 | typedef DWORD (WINAPI *PRADIUS_EXTENSION_PROCESS) (const RADIUS_ATTRIBUTE *pAttrs, PRADIUS_ACTION pfAction); | 
 | typedef DWORD (WINAPI *PRADIUS_EXTENSION_PROCESS_EX) (const RADIUS_ATTRIBUTE *pInAttrs, PRADIUS_ATTRIBUTE *pOutAttrs, PRADIUS_ACTION pfAction); | 
 | typedef VOID (WINAPI *PRADIUS_EXTENSION_FREE_ATTRIBUTES) (PRADIUS_ATTRIBUTE pAttrs); | 
 |  | 
 | #define AUTHSRV_PARAMETERS_KEY_W L"System\\CurrentControlSet\\Services\\AuthSrv\\Parameters" | 
 | #define AUTHSRV_EXTENSIONS_VALUE_W L"ExtensionDLLs" | 
 | #define AUTHSRV_AUTHORIZATION_VALUE_W L"AuthorizationDLLs" | 
 |  | 
 | #define RADIUS_EXTENSION_VERSION (1) | 
 |  | 
 | typedef enum _RADIUS_EXTENSION_POINT { | 
 |   repAuthentication, | 
 |   repAuthorization | 
 | } RADIUS_EXTENSION_POINT; | 
 |  | 
 | typedef struct _RADIUS_ATTRIBUTE_ARRAY { | 
 |   DWORD cbSize; | 
 |   DWORD (WINAPI *Add) (struct _RADIUS_ATTRIBUTE_ARRAY *_This, const RADIUS_ATTRIBUTE *pAttr); | 
 |   const RADIUS_ATTRIBUTE *(WINAPI *AttributeAt) (const struct _RADIUS_ATTRIBUTE_ARRAY *_This, DWORD dwIndex); | 
 |   DWORD (WINAPI *GetSize) (const struct _RADIUS_ATTRIBUTE_ARRAY *_This); | 
 |   DWORD (WINAPI *InsertAt) (struct _RADIUS_ATTRIBUTE_ARRAY *_This, DWORD dwIndex, const RADIUS_ATTRIBUTE *pAttr); | 
 |   DWORD (WINAPI *RemoveAt) (struct _RADIUS_ATTRIBUTE_ARRAY *_This, DWORD dwIndex); | 
 |   DWORD (WINAPI *SetAt) (struct _RADIUS_ATTRIBUTE_ARRAY *_This, DWORD dwIndex, const RADIUS_ATTRIBUTE *pAttr); | 
 | } RADIUS_ATTRIBUTE_ARRAY,*PRADIUS_ATTRIBUTE_ARRAY; | 
 |  | 
 | typedef struct _RADIUS_EXTENSION_CONTROL_BLOCK { | 
 |   DWORD cbSize; | 
 |   DWORD dwVersion; | 
 |   RADIUS_EXTENSION_POINT repPoint; | 
 |   RADIUS_CODE rcRequestType; | 
 |   RADIUS_CODE rcResponseType; | 
 |   PRADIUS_ATTRIBUTE_ARRAY (WINAPI *GetRequest) (struct _RADIUS_EXTENSION_CONTROL_BLOCK *This); | 
 |   PRADIUS_ATTRIBUTE_ARRAY (WINAPI *GetResponse) (struct _RADIUS_EXTENSION_CONTROL_BLOCK *This, RADIUS_CODE rcResponseType); | 
 |   DWORD (WINAPI *SetResponseType) (struct _RADIUS_EXTENSION_CONTROL_BLOCK *This, RADIUS_CODE rcResponseType); | 
 | } RADIUS_EXTENSION_CONTROL_BLOCK,*PRADIUS_EXTENSION_CONTROL_BLOCK; | 
 |  | 
 | typedef DWORD (WINAPI *PRADIUS_EXTENSION_PROCESS_2) (PRADIUS_EXTENSION_CONTROL_BLOCK pECB); | 
 |  | 
 | #endif | 
 |  | 
 | #endif |