/*****************************************************************/ /** Microsoft Windows **/ /** Copyright (C) Microsoft Corp., 1993-5 **/ /*****************************************************************/ /* SEC32API.H This header file contains declarations for the internal versions of the 32-bit Access API, as exported by FILESEC.386. It also contains constant definitions used by securty components This file relies, in part, on NETVXD.H and VXDCALL.H. This file must be H2INC-able. FILE HISTORY: dannygl 09/25/93 Initial version dannygl 09/29/93 Add NetAccessSetInfo dannygl 10/04/93 Add security-related string constants dannygl 01/17/94 Replace Win32 services with IOCtls dannygl 02/10/94 Add NetAccess arg count constants dannygl 02/16/94 Update registry string constants dannygl 11/17/94 Add Logon2 API (supported by MSSP only) */ // Registry string constants // Security provider information (in HKEY_LOCAL_MACHINE) #define REGKEY_SP_CONFIG "Security\\Provider" #define REGVAL_SP_PLATFORM "Platform_Type" #define REGVAL_SP_CONTAINER "Container" #define REGVAL_SP_ABSERVER "Address_Server" #define REGVAL_SP_ONEOFFABSERVER "One_Off_Address_Server" #define REGVAL_SP_ABPROVIDER "Address_Book" #define REGVAL_SP_NO_SORT "NoSort" // Obsolescent definition -- will be deleted soon //#define REGVAL_SP_PTPROVIDER "Pass_Through" // Definitions for the IOControl interface that FILESEC uses for Win32 API // support #define FSIOC_API_Base 100 /*XLATOFF*/ typedef enum { FSIOC_AccessAddAPI = FSIOC_API_Base, FSIOC_AccessCheckAPI, FSIOC_AccessDelAPI, FSIOC_AccessEnumAPI, FSIOC_AccessGetInfoAPI, FSIOC_AccessGetUserPermsAPI, FSIOC_AccessSetInfoAPI } FSIOC_Ordinal; /*XLATON*/ // Important: We define this constant separately because we need it // to be H2INC'able. It must match the above enumerated type. #define FSIOC_API_Count 7 // Arg counts for Access functions // // Note: These constants are defined for readability purposes and should not // be modified independently. #define Argc_AccessAdd 3 #define Argc_AccessCheck 4 #define Argc_AccessDel 1 #define Argc_AccessEnum 7 #define Argc_AccessGetInfo 5 #define Argc_AccessGetUserPerms 3 #define Argc_AccessSetInfo 5 // Definitions used by the Security Provider VxDs to expose interfaces // to Win32 code via IOCtls #define SPIOC_API_Base 100 /*XLATOFF*/ typedef enum { SPIOC_PreLogonAPI = SPIOC_API_Base, SPIOC_LogonAPI, SPIOC_LogoffAPI, SPIOC_GetFlagsAPI, SPIOC_GetContainerAPI, SPIOC_NW_GetUserObjectId, // NWSP only SPIOC_Logon2API, // Currently MSSP only SPIOC_DiscoverDC // MSSP only } SPIOC_Ordinal; /*XLATON*/ // Important: We define this constant separately because we need it // to be H2INC'able. It must match the above enumerated type. #define SPIOC_API_Count 8 /*XLATOFF*/ typedef struct { unsigned char *pbChallenge; unsigned long *pcbChallenge; } AUTHPRELOGONINFO, *PAUTHPRELOGONINFO; typedef struct { const char *pszContainer; const char *pszUserName; const char *pszClientName; const unsigned char *pbResponse; unsigned long cbResponse; const unsigned char *pbChallenge; unsigned long cbChallenge; unsigned long fResponseType; unsigned long *pfResult; } AUTHLOGONINFO, *PAUTHLOGONINFO; typedef struct { const char *pszContainer; char *pszContainerValidated; const char *pszUserName; char *pszUserValidated; const char *pszClientName; const unsigned char *pbResponse; unsigned long cbResponse; const unsigned char *pbResponse2; unsigned long cbResponse2; const unsigned char *pbChallenge; unsigned long cbChallenge; unsigned long *pfFlags; unsigned long *pfResult; } AUTHLOGON2INFO, *PAUTHLOGON2INFO; typedef struct { const char *pszContainer; const char *pszUserName; const char *pszClientName; } AUTHLOGOFFINFO, *PAUTHLOGOFFINFO; typedef struct { unsigned long *pdwFlags; unsigned long *pdwSecurity; } AUTHGETFLAGS, *PAUTHGETFLAGS; typedef struct { char *pszContainer; unsigned long *pcbContainer; } AUTHGETCONTAINER, *PAUTHGETCONTAINER; typedef struct { char *pszUserName; unsigned long dwObjectId; } AUTHNWGETUSEROBJECTID, *PAUTHNWGETUSEROBJECTID; typedef struct { const char *pszDomain; char *pszDCs; // Concatenated strings, ended with an extra null unsigned long *pcbDCs; } AUTHDISCOVERDC, *PAUTHDISCOVERDC; /*XLATON*/