/** * This file is part of the mingw-w64 runtime package. * No warranty is given; refer to the file DISCLAIMER within this package. */ #include #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