|  | /** | 
|  | * 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 |