Home | History | Annotate | Download | only in include
      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