From 65bb926f51a5cac83b63e98e81121ece36d57454 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sun, 8 Oct 2000 16:55:29 +0000 Subject: * include/ntsecapi.h: New file. * include/subauth.h: Ditto. * include/ipexport.h: Fix global header define not to contain trailing underscore. Change layout according to standard. * include/iphlpapi.h: Ditto. * include/ipifcons.h: Ditto. * include/iptypes.h: Ditto. * include/ntdef.h: Ditto. Define conditional datatypes dependent of inclusion of ntdecapi.h and subauth.h. * lib/secur32.def: New stub for secur32.dll. --- winsup/w32api/include/ipexport.h | 14 +- winsup/w32api/include/iphlpapi.h | 11 +- winsup/w32api/include/ipifcons.h | 10 +- winsup/w32api/include/iprtrmib.h | 35 +-- winsup/w32api/include/iptypes.h | 20 +- winsup/w32api/include/ntdef.h | 21 +- winsup/w32api/include/ntsecapi.h | 602 +++++++++++++++++++++++++++++++++++++++ winsup/w32api/include/subauth.h | 207 ++++++++++++++ 8 files changed, 836 insertions(+), 84 deletions(-) create mode 100644 winsup/w32api/include/ntsecapi.h create mode 100644 winsup/w32api/include/subauth.h (limited to 'winsup/w32api/include') diff --git a/winsup/w32api/include/ipexport.h b/winsup/w32api/include/ipexport.h index 1b11c5170..bcff27268 100644 --- a/winsup/w32api/include/ipexport.h +++ b/winsup/w32api/include/ipexport.h @@ -1,30 +1,22 @@ -#ifndef _IPEXPORT_H_ -#define _IPEXPORT_H_ - +#ifndef _IPEXPORT_H +#define _IPEXPORT_H #ifdef __cplusplus extern "C" { #endif - #ifndef ANY_SIZE #define ANY_SIZE 1 #endif - #define MAX_ADAPTER_NAME 128 - typedef unsigned long IPAddr, IPMask, IP_STATUS; - typedef struct { ULONG Index; WCHAR Name[MAX_ADAPTER_NAME]; } IP_ADAPTER_INDEX_MAP, *PIP_ADAPTER_INDEX_MAP; - typedef struct { LONG NumAdapters; IP_ADAPTER_INDEX_MAP Adapter[ANY_SIZE]; } IP_INTERFACE_INFO, *PIP_INTERFACE_INFO; - #ifdef __cplusplus } #endif - -#endif /* _IPEXPORT_H_ */ +#endif /* _IPEXPORT_H */ diff --git a/winsup/w32api/include/iphlpapi.h b/winsup/w32api/include/iphlpapi.h index 493224947..e71da0aab 100644 --- a/winsup/w32api/include/iphlpapi.h +++ b/winsup/w32api/include/iphlpapi.h @@ -1,14 +1,11 @@ -#ifndef _IPHLPAPI_H_ -#define _IPHLPAPI_H_ - +#ifndef _IPHLPAPI_H +#define _IPHLPAPI_H #include #include #include - #ifdef __cplusplus extern "C" { #endif - DWORD WINAPI CreateIpForwardEntry(PMIB_IPFORWARDROW); DWORD WINAPI CreateIpNetEntry(PMIB_IPNETROW); DWORD WINAPI DeleteIpForwardEntry(PMIB_IPFORWARDROW); @@ -40,9 +37,7 @@ DWORD WINAPI SetIpNetEntry(PMIB_IPNETROW); DWORD WINAPI SetIpStatistics(PMIB_IPSTATS); DWORD WINAPI SetIpTTL(UINT); DWORD WINAPI SetTcpEntry(PMIB_TCPROW); - #ifdef __cplusplus } #endif - -#endif /* _IPHLPAPI_H_ */ +#endif /* _IPHLPAPI_H */ diff --git a/winsup/w32api/include/ipifcons.h b/winsup/w32api/include/ipifcons.h index d0b2c9a1a..16ef16880 100644 --- a/winsup/w32api/include/ipifcons.h +++ b/winsup/w32api/include/ipifcons.h @@ -1,17 +1,14 @@ -#ifndef _IPIFCONS_H_ -#define _IPIFCONS_H_ - +#ifndef _IPIFCONS_H +#define _IPIFCONS_H #define MIB_IF_ADMIN_STATUS_UP 1 #define MIB_IF_ADMIN_STATUS_DOWN 2 #define MIB_IF_ADMIN_STATUS_TESTING 3 - #define MIB_IF_OPER_STATUS_NON_OPERATIONAL 0 #define MIB_IF_OPER_STATUS_UNREACHABLE 1 #define MIB_IF_OPER_STATUS_DISCONNECTED 2 #define MIB_IF_OPER_STATUS_CONNECTING 3 #define MIB_IF_OPER_STATUS_CONNECTED 4 #define MIB_IF_OPER_STATUS_OPERATIONAL 5 - #define MIB_IF_TYPE_OTHER 1 #define MIB_IF_TYPE_ETHERNET 6 #define MIB_IF_TYPE_TOKENRING 9 @@ -19,5 +16,4 @@ #define MIB_IF_TYPE_PPP 23 #define MIB_IF_TYPE_LOOPBACK 24 #define MIB_IF_TYPE_SLIP 28 - -#endif /* _IPIFCONS_H_ */ +#endif /* _IPIFCONS_H */ diff --git a/winsup/w32api/include/iprtrmib.h b/winsup/w32api/include/iprtrmib.h index 10ea65fb3..cb30ef836 100644 --- a/winsup/w32api/include/iprtrmib.h +++ b/winsup/w32api/include/iprtrmib.h @@ -1,33 +1,25 @@ -#ifndef _IPRTRMIB_H_ -#define _IPRTRMIB_H_ - +#ifndef _IPRTRMIB_H +#define _IPRTRMIB_H #include - #ifdef __cplusplus extern "C" { #endif - #ifndef ANY_SIZE #define ANY_SIZE 1 #endif - #define MAXLEN_PHYSADDR 8 #define MAXLEN_IFDESCR 256 - #ifndef MAX_INTERFACE_NAME_LEN #define MAX_INTERFACE_NAME_LEN 256 #endif - #define MIB_IPNET_TYPE_OTHER 1 #define MIB_IPNET_TYPE_INVALID 2 #define MIB_IPNET_TYPE_DYNAMIC 3 #define MIB_IPNET_TYPE_STATIC 4 - #define MIB_TCP_RTO_OTHER 1 #define MIB_TCP_RTO_CONSTANT 2 #define MIB_TCP_RTO_RSRE 3 #define MIB_TCP_RTO_VANJ 4 - #define MIB_TCP_STATE_CLOSED 1 #define MIB_TCP_STATE_LISTEN 2 #define MIB_TCP_STATE_SYN_SENT 3 @@ -40,11 +32,9 @@ extern "C" { #define MIB_TCP_STATE_LAST_ACK 10 #define MIB_TCP_STATE_TIME_WAIT 11 #define MIB_TCP_STATE_DELETE_TCB 12 - #define MIB_USE_CURRENT_TTL ((DWORD) -1) #define MIB_USE_CURRENT_FORWARDING ((DWORD) -1) #define MIB_TCP_MAXCONN_DYNAMIC ((DWORD) -1) - typedef struct { DWORD dwAddr; DWORD dwIndex; @@ -54,12 +44,10 @@ typedef struct { unsigned short unused1; unsigned short unused2; } MIB_IPADDRROW, *PMIB_IPADDRROW; - typedef struct { DWORD dwNumEntries; MIB_IPADDRROW table[ANY_SIZE]; } MIB_IPADDRTABLE, *PMIB_IPADDRTABLE; - typedef struct { DWORD dwForwardDest; DWORD dwForwardMask; @@ -76,12 +64,10 @@ typedef struct { DWORD dwForwardMetric4; DWORD dwForwardMetric5; } MIB_IPFORWARDROW, *PMIB_IPFORWARDROW; - typedef struct { DWORD dwNumEntries; MIB_IPFORWARDROW table[ANY_SIZE]; } MIB_IPFORWARDTABLE, *PMIB_IPFORWARDTABLE; - typedef struct { DWORD dwIndex; DWORD dwPhysAddrLen; @@ -89,12 +75,10 @@ typedef struct { DWORD dwAddr; DWORD dwType; } MIB_IPNETROW, *PMIB_IPNETROW; - typedef struct { DWORD dwNumEntries; MIB_IPNETROW table[ANY_SIZE]; } MIB_IPNETTABLE, *PMIB_IPNETTABLE; - typedef struct { DWORD dwMsgs; DWORD dwErrors; @@ -110,16 +94,13 @@ typedef struct { DWORD dwAddrMasks; DWORD dwAddrMaskReps; } MIBICMPSTATS, *PMIBICMPSTATS; - typedef struct { MIBICMPSTATS icmpInStats; MIBICMPSTATS icmpOutStats; } MIBICMPINFO, *PMIBICMPINFO; - typedef struct { MIBICMPINFO stats; } MIB_ICMP, *PMIB_ICMP; - typedef struct { WCHAR wszName[MAX_INTERFACE_NAME_LEN]; DWORD dwIndex; @@ -146,12 +127,10 @@ typedef struct { DWORD dwDescrLen; BYTE bDescr[MAXLEN_IFDESCR]; } MIB_IFROW, *PMIB_IFROW; - typedef struct { DWORD dwNumEntries; MIB_IFROW table[ANY_SIZE]; } MIB_IFTABLE, *PMIB_IFTABLE; - typedef struct { DWORD dwForwarding; DWORD dwDefaultTTL; @@ -177,7 +156,6 @@ typedef struct { DWORD dwNumAddr; DWORD dwNumRoutes; } MIB_IPSTATS, *PMIB_IPSTATS; - typedef struct { DWORD dwRtoAlgorithm; DWORD dwRtoMin; @@ -195,7 +173,6 @@ typedef struct { DWORD dwOutRsts; DWORD dwNumConns; } MIB_TCPSTATS, *PMIB_TCPSTATS; - typedef struct { DWORD dwState; DWORD dwLocalAddr; @@ -203,12 +180,10 @@ typedef struct { DWORD dwRemoteAddr; DWORD dwRemotePort; } MIB_TCPROW, *PMIB_TCPROW; - typedef struct { DWORD dwNumEntries; MIB_TCPROW table[ANY_SIZE]; } MIB_TCPTABLE, *PMIB_TCPTABLE; - typedef struct { DWORD dwInDatagrams; DWORD dwNoPorts; @@ -216,19 +191,15 @@ typedef struct { DWORD dwOutDatagrams; DWORD dwNumAddrs; } MIB_UDPSTATS, *PMIB_UDPSTATS; - typedef struct { DWORD dwLocalAddr; DWORD dwLocalPort; } MIB_UDPROW, *PMIB_UDPROW; - typedef struct { DWORD dwNumEntries; MIB_UDPROW table[ANY_SIZE]; } MIB_UDPTABLE, *PMIB_UDPTABLE; - #ifdef __cplusplus } #endif - -#endif /* _IPRTRMIB_H_ */ +#endif /* _IPRTRMIB_H */ diff --git a/winsup/w32api/include/iptypes.h b/winsup/w32api/include/iptypes.h index 94fbb771d..83c5dd4e8 100644 --- a/winsup/w32api/include/iptypes.h +++ b/winsup/w32api/include/iptypes.h @@ -1,43 +1,34 @@ -#ifndef _IPTYPES_H_ -#define _IPTYPES_H_ - +#ifndef _IPTYPES_H +#define _IPTYPES_H #ifdef __cplusplus extern "C" { #endif - #define DEFAULT_MINIMUM_ENTITIES 32 - #define MAX_ADAPTER_ADDRESS_LENGTH 8 #define MAX_ADAPTER_DESCRIPTION_LENGTH 128 #define MAX_ADAPTER_NAME_LENGTH 256 #define MAX_DOMAIN_NAME_LEN 128 #define MAX_HOSTNAME_LEN 128 #define MAX_SCOPE_ID_LEN 256 - #define BROADCAST_NODETYPE 1 #define PEER_TO_PEER_NODETYPE 2 #define MIXED_NODETYPE 4 #define HYBRID_NODETYPE 8 - #define IF_OTHER_ADAPTERTYPE 0 #define IF_ETHERNET_ADAPTERTYPE 1 #define IF_TOKEN_RING_ADAPTERTYPE 2 #define IF_FDDI_ADAPTERTYPE 3 #define IF_PPP_ADAPTERTYPE 4 #define IF_LOOPBACK_ADAPTERTYPE 5 - typedef struct { char String[4 * 4]; -} IP_ADDRESS_STRING, *PIP_ADDRESS_STRING, - IP_MASK_STRING, *PIP_MASK_STRING; - +} IP_ADDRESS_STRING, *PIP_ADDRESS_STRING, IP_MASK_STRING, *PIP_MASK_STRING; typedef struct __IP_ADDR_STRING { struct __IP_ADDR_STRING* Next; IP_ADDRESS_STRING IpAddress; IP_MASK_STRING IpMask; DWORD Context; } IP_ADDR_STRING, *PIP_ADDR_STRING; - typedef struct __IP_ADAPTER_INFO { struct __IP_ADAPTER_INFO* Next; DWORD ComboIndex; @@ -58,7 +49,6 @@ typedef struct __IP_ADAPTER_INFO { time_t LeaseObtained; time_t LeaseExpires; } IP_ADAPTER_INFO, *PIP_ADAPTER_INFO; - typedef struct { char HostName[MAX_HOSTNAME_LEN + 4] ; char DomainName[MAX_DOMAIN_NAME_LEN + 4]; @@ -70,9 +60,7 @@ typedef struct { UINT EnableProxy; UINT EnableDns; } FIXED_INFO, *PFIXED_INFO; - #ifdef __cplusplus } #endif - -#endif /* _IPTYPES_H_ */ +#endif /* _IPTYPES_H */ diff --git a/winsup/w32api/include/ntdef.h b/winsup/w32api/include/ntdef.h index 71e84da16..a192a78d7 100644 --- a/winsup/w32api/include/ntdef.h +++ b/winsup/w32api/include/ntdef.h @@ -1,8 +1,6 @@ -#ifndef _NTDEF_H_ -#define _NTDEF_H_ - +#ifndef _NTDEF_H +#define _NTDEF_H #define NTAPI __stdcall - #define OBJ_INHERIT 2L #define OBJ_PERMANENT 16L #define OBJ_EXCLUSIVE 32L @@ -10,7 +8,6 @@ #define OBJ_OPENIF 128L #define OBJ_OPENLINK 256L #define OBJ_VALID_ATTRIBUTES 498L - #define InitializeObjectAttributes(p,n,a,r,s) { \ (p)->Length = sizeof( OBJECT_ATTRIBUTES ); \ (p)->RootDirectory = r; \ @@ -19,17 +16,22 @@ (p)->SecurityDescriptor = s; \ (p)->SecurityQualityOfService = NULL; \ } - #define STATUS_SUCCESS ((NTSTATUS)0) #define NT_SUCCESS(x) ((x)>=0) - +#if !defined(_NTSECAPI_H) && !defined(_SUBAUTH_H) typedef LONG NTSTATUS, *PNTSTATUS; -typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS; typedef struct _UNICODE_STRING { USHORT Length; USHORT MaximumLength; PWSTR Buffer; } UNICODE_STRING, *PUNICODE_STRING; +typedef struct __STRING { + USHORT Length; + USHORT MaximumLength; + PCHAR Buffer; +} STRING, *PSTRING; +#endif +typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS; typedef enum _SECTION_INHERIT { ViewShare = 1, ViewUnmap = 2 @@ -42,5 +44,4 @@ typedef struct _OBJECT_ATTRIBUTES { PVOID SecurityDescriptor; PVOID SecurityQualityOfService; } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES; - -#endif /* _NTDEF_H_ */ +#endif /* _NTDEF_H */ diff --git a/winsup/w32api/include/ntsecapi.h b/winsup/w32api/include/ntsecapi.h new file mode 100644 index 000000000..7a4f7a989 --- /dev/null +++ b/winsup/w32api/include/ntsecapi.h @@ -0,0 +1,602 @@ +#ifndef _NTSECAPI_H +#define _NTSECAPI_H +#ifdef __cplusplus +extern "C" { +#endif +#define LOGON_GUEST 1 +#define LOGON_NOENCRYPTION 2 +#define LOGON_CACHED_ACCOUNT 4 +#define LOGON_USED_LM_PASSWORD 8 +#define LOGON_EXTRA_SIDS 32 +#define LOGON_SUBAUTH_SESSION_KEY 64 +#define LOGON_SERVER_TRUST_ACCOUNT 128 +#define LOGON_NTLMV2_ENABLED 256 +#define LOGON_RESOURCE_GROUPS 512 +#define LOGON_PROFILE_PATH_RETURNED 1024 +#define LOGON_GRACE_LOGON 16777216 +#define LSA_MODE_PASSWORD_PROTECTED 1 +#define LSA_MODE_INDIVIDUAL_ACCOUNTS 2 +#define LSA_MODE_MANDATORY_ACCESS 3 +#define LSA_MODE_LOG_FULL 4 +#define LSA_SUCCESS(Error) ((LONG)(Error) >= 0) +#define MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT 32 +#define MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT 2048 +#define MSV1_0_CHALLENGE_LENGTH 8 +#define MSV1_0_CLEARTEXT_PASSWORD_ALLOWED 2 +#define MSV1_0_CRED_LM_PRESENT 1 +#define MSV1_0_CRED_NT_PRESENT 2 +#define MSV1_0_CRED_VERSION 0 +#define MSV1_0_DONT_TRY_GUEST_ACCOUNT 16 +#define MSV1_0_LANMAN_SESSION_KEY_LENGTH 8 +#define MSV1_0_MAX_NTLM3_LIFE 1800 +#define MSV1_0_MAX_AVL_SIZE 64000 +#define MSV1_0_MNS_LOGON 16777216 +#define MSV1_0_NTLM3_RESPONSE_LENGTH 16 +#define MSV1_0_NTLM3_OWF_LENGTH 16 +#define MSV1_0_NTLM3_INPUT_LENGTH (sizeof(MSV1_0_NTLM3_RESPONSE) - MSV1_0_NTLM3_RESPONSE_LENGTH) +#define MSV1_0_OWF_PASSWORD_LENGTH 16 +#define MSV1_0_PACKAGE_NAME "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0" +#define MSV1_0_PACKAGE_NAMEW L"MICROSOFT_AUTHENTICATION_PACKAGE_V1_0" +#define MSV1_0_PACKAGE_NAMEW_LENGTH sizeof(MSV1_0_PACKAGE_NAMEW) - sizeof(WCHAR) +#define MSV1_0_RETURN_USER_PARAMETERS 8 +#define MSV1_0_RETURN_PASSWORD_EXPIRY 64 +#define MSV1_0_RETURN_PROFILE_PATH 512 +#define MSV1_0_SUBAUTHENTICATION_DLL_EX 1048576 +#define MSV1_0_SUBAUTHENTICATION_DLL 0xff000000 +#define MSV1_0_SUBAUTHENTICATION_DLL_SHIFT 24 +#define MSV1_0_SUBAUTHENTICATION_DLL_RAS 2 +#define MSV1_0_SUBAUTHENTICATION_DLL_IIS 132 +#define MSV1_0_SUBAUTHENTICATION_FLAGS 0xff000000 +#define MSV1_0_SUBAUTHENTICATION_KEY "System\\CurrentControlSet\\Control\\Lsa\\MSV1_0" +#define MSV1_0_SUBAUTHENTICATION_VALUE "Auth" +#define MSV1_0_TRY_GUEST_ACCOUNT_ONLY 256 +#define MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY 1024 +#define MSV1_0_UPDATE_LOGON_STATISTICS 4 +#define MSV1_0_USE_CLIENT_CHALLENGE 128 +#define MSV1_0_USER_SESSION_KEY_LENGTH 16 +#define POLICY_VIEW_LOCAL_INFORMATION 1 +#define POLICY_VIEW_AUDIT_INFORMATION 2 +#define POLICY_GET_PRIVATE_INFORMATION 4 +#define POLICY_TRUST_ADMIN 8 +#define POLICY_CREATE_ACCOUNT 16 +#define POLICY_CREATE_SECRET 32 +#define POLICY_CREATE_PRIVILEGE 64 +#define POLICY_SET_DEFAULT_QUOTA_LIMITS 128 +#define POLICY_SET_AUDIT_REQUIREMENTS 256 +#define POLICY_AUDIT_LOG_ADMIN 512 +#define POLICY_SERVER_ADMIN 1024 +#define POLICY_LOOKUP_NAMES 2048 +#define POLICY_READ (STANDARD_RIGHTS_READ|6) +#define POLICY_WRITE (STANDARD_RIGHTS_WRITE|2040) +#define POLICY_EXECUTE (STANDARD_RIGHTS_EXECUTE|2049) +#define POLICY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|4095) +#define POLICY_AUDIT_EVENT_UNCHANGED 0 +#define POLICY_AUDIT_EVENT_SUCCESS 1 +#define POLICY_AUDIT_EVENT_FAILURE 2 +#define POLICY_AUDIT_EVENT_NONE 4 +#define POLICY_AUDIT_EVENT_MASK 7 +#define POLICY_LOCATION_LOCAL 1 +#define POLICY_LOCATION_DS 2 +#define POLICY_MACHINE_POLICY_LOCAL 0 +#define POLICY_MACHINE_POLICY_DEFAULTED 1 +#define POLICY_MACHINE_POLICY_EXPLICIT 2 +#define POLICY_MACHINE_POLICY_UNKNOWN 0xFFFFFFFF +#define POLICY_QOS_SCHANEL_REQUIRED 1 +#define POLICY_QOS_OUTBOUND_INTEGRITY 2 +#define POLICY_QOS_OUTBOUND_CONFIDENTIALITY 4 +#define POLICY_QOS_INBOUND_INTEGREITY 8 +#define POLICY_QOS_INBOUND_CONFIDENTIALITY 16 +#define POLICY_QOS_ALLOW_LOCAL_ROOT_CERT_STORE 32 +#define POLICY_QOS_RAS_SERVER_ALLOWED 64 +#define POLICY_QOS_DHCP_SERVER_ALLOWD 128 +#define POLICY_KERBEROS_FORWARDABLE 1 +#define POLICY_KERBEROS_PROXYABLE 2 +#define POLICY_KERBEROS_RENEWABLE 4 +#define POLICY_KERBEROS_POSTDATEABLE 8 +#define SAM_PASSWORD_CHANGE_NOTIFY_ROUTINE "PasswordChangeNotify" +#define SAM_INIT_NOTIFICATION_ROUTINE "InitializeChangeNotify" +#define SAM_PASSWORD_FILTER_ROUTINE "PasswordFilter" +#define SE_INTERACTIVE_LOGON_NAME TEXT("SeInteractiveLogonRight") +#define SE_NETWORK_LOGON_NAME TEXT("SeNetworkLogonRight") +#define SE_BATCH_LOGON_NAME TEXT("SeBatchLogonRight") +#define SE_SERVICE_LOGON_NAME TEXT("SeServiceLogonRight") +#define TRUST_ATTRIBUTE_NON_TRANSITIVE 1 +#define TRUST_ATTRIBUTE_UPLEVEL_ONLY 2 +#define TRUST_ATTRIBUTE_TREE_PARENT 4194304 +#define TRUST_ATTRIBUTES_VALID -16580609 +#define TRUST_AUTH_TYPE_NONE 0 +#define TRUST_AUTH_TYPE_NT4OWF 1 +#define TRUST_AUTH_TYPE_CLEAR 2 +#define TRUST_DIRECTION_DISABLED 0 +#define TRUST_DIRECTION_INBOUND 1 +#define TRUST_DIRECTION_OUTBOUND 2 +#define TRUST_DIRECTION_BIDIRECTIONAL 3 +#define TRUST_TYPE_DOWNLEVEL 1 +#define TRUST_TYPE_UPLEVEL 2 +#define TRUST_TYPE_MIT 3 +#define TRUST_TYPE_DCE 4 +#if !defined(_NTDEF_H) && !defined(_SUBAUTH_H) +typedef LONG NTSTATUS, *PNTSTATUS; +typedef struct _UNICODE_STRING { + USHORT Length; + USHORT MaximumLength; + PWSTR Buffer; +} UNICODE_STRING, *PUNICODE_STRING; +typedef struct _STRING { + USHORT Length; + USHORT MaximumLength; + PCHAR Buffer; +} STRING, *PSTRING; +#endif +typedef UNICODE_STRING LSA_UNICODE_STRING, *PLSAUNICODE_STRING; +typedef STRING LSA_STRING, *PLSA_STRING; +typedef enum _MSV1_0_LOGON_SUBMIT_TYPE { + MsV1_0InteractiveLogon = 2, + MsV1_0Lm20Logon, + MsV1_0NetworkLogon, + MsV1_0SubAuthLogon, + MsV1_0WorkstationUnlockLogon = 7 +} MSV1_0_LOGON_SUBMIT_TYPE, *PMSV1_0_LOGON_SUBMIT_TYPE; +typedef enum _MSV1_0_PROFILE_BUFFER_TYPE { + MsV1_0InteractiveProfile = 2, + MsV1_0Lm20LogonProfile, + MsV1_0SmartCardProfile +} MSV1_0_PROFILE_BUFFER_TYPE, *PMSV1_0_PROFILE_BUFFER_TYPE; +typedef enum { + MsvAvEOL, + MsvAvNbComputerName, + MsvAvNbDomainName, + MsvAvDnsComputerName, + MsvAvDnsDomainName +} MSV1_0_AVID; +typedef enum _MSV1_0_PROTOCOL_MESSAGE_TYPE { + MsV1_0Lm20ChallengeRequest = 0, + MsV1_0Lm20GetChallengeResponse, + MsV1_0EnumerateUsers, + MsV1_0GetUserInfo, + MsV1_0ReLogonUsers, + MsV1_0ChangePassword, + MsV1_0ChangeCachedPassword, + MsV1_0GenericPassthrough, + MsV1_0CacheLogon, + MsV1_0SubAuth, + MsV1_0DeriveCredential, + MsV1_0CacheLookup +} MSV1_0_PROTOCOL_MESSAGE_TYPE, *PMSV1_0_PROTOCOL_MESSAGE_TYPE; +typedef enum _POLICY_LSA_SERVER_ROLE { + PolicyServerRoleBackup = 2, + PolicyServerRolePrimary +} POLICY_LSA_SERVER_ROLE, *PPOLICY_LSA_SERVER_ROLE; +typedef enum _POLICY_SERVER_ENABLE_STATE { + PolicyServerEnabled = 2, + PolicyServerDisabled +} POLICY_SERVER_ENABLE_STATE, *PPOLICY_SERVER_ENABLE_STATE; +typedef enum _POLICY_INFORMATION_CLASS { + PolicyAuditLogInformation = 1, + PolicyAuditEventsInformation, + PolicyPrimaryDomainInformation, + PolicyPdAccountInformation, + PolicyAccountDomainInformation, + PolicyLsaServerRoleInformation, + PolicyReplicaSourceInformation, + PolicyDefaultQuotaInformation, + PolicyModificationInformation, + PolicyAuditFullSetInformation, + PolicyAuditFullQueryInformation, + PolicyDnsDomainInformation, + PolicyEfsInformation +} POLICY_INFORMATION_CLASS, *PPOLICY_INFORMATION_CLASS; +typedef enum _POLICY_AUDIT_EVENT_TYPE { + AuditCategorySystem, + AuditCategoryLogon, + AuditCategoryObjectAccess, + AuditCategoryPrivilegeUse, + AuditCategoryDetailedTracking, + AuditCategoryPolicyChange, + AuditCategoryAccountManagement, + AuditCategoryDirectoryServiceAccess, + AuditCategoryAccountLogon +} POLICY_AUDIT_EVENT_TYPE, *PPOLICY_AUDIT_EVENT_TYPE; +typedef enum _POLICY_LOCAL_INFORMATION_CLASS { + PolicyLocalAuditEventsInformation = 1, + PolicyLocalPdAccountInformation, + PolicyLocalAccountDomainInformation, + PolicyLocalLsaServerRoleInformation, + PolicyLocalReplicaSourceInformation, + PolicyLocalModificationInformation, + PolicyLocalAuditFullSetInformation, + PolicyLocalAuditFullQueryInformation, + PolicyLocalDnsDomainInformation, + PolicyLocalIPSecReferenceInformation, + PolicyLocalMachinePasswordInformation, + PolicyLocalQualityOfServiceInformation, + PolicyLocalPolicyLocationInformation +} POLICY_LOCAL_INFORMATION_CLASS, *PPOLICY_LOCAL_INFORMATION_CLASS; +typedef enum _POLICY_DOMAIN_INFORMATION_CLASS { + PolicyDomainIPSecReferenceInformation = 1, + PolicyDomainQualityOfServiceInformation, + PolicyDomainEfsInformation, + PolicyDomainPublicKeyInformation, + PolicyDomainPasswordPolicyInformation, + PolicyDomainLockoutInformation, + PolicyDomainKerberosTicketInformation +} POLICY_DOMAIN_INFORMATION_CLASS, *PPOLICY_DOMAIN_INFORMATION_CLASS; +typedef enum _SECURITY_LOGON_TYPE { + Interactive = 2, + Network, + Batch, + Service, + Proxy, + Unlock +} SECURITY_LOGON_TYPE, *PSECURITY_LOGON_TYPE; +typedef enum _TRUSTED_INFORMATION_CLASS { + TrustedDomainNameInformation = 1, + TrustedControllersInformation, + TrustedPosixOffsetInformation, + TrustedPasswordInformation, + TrustedDomainInformationBasic, + TrustedDomainInformationEx, + TrustedDomainAuthInformation, + TrustedDomainFullInformation +} TRUSTED_INFORMATION_CLASS, *PTRUSTED_INFORMATION_CLASS; +typedef struct _DOMAIN_PASSWORD_INFORMATION { + USHORT MinPasswordLength; + USHORT PasswordHistoryLength; + ULONG PasswordProperties; + LARGE_INTEGER MaxPasswordAge; + LARGE_INTEGER MinPasswordAge; +} DOMAIN_PASSWORD_INFORMATION, *PDOMAIN_PASSWORD_INFORMATION; +typedef ULONG LSA_ENUMERATION_HANDLE, *PLSA_ENUMERATION_HANDLE; +typedef struct _LSA_ENUMERATION_INFORMATION { + PSID Sid; +} LSA_ENUMERATION_INFORMATION, *PLSA_ENUMERATION_INFORMATION; +typedef ULONG LSA_OPERATIONAL_MODE, *PLSA_OPERATIONAL_MODE; +typedef struct _LSA_OBJECT_ATTRIBUTES { + ULONG Length; + HANDLE RootDirectory; + PLSA_UNICODE_STRING ObjectName; + ULONG Attributes; + PVOID SecurityDescriptor; + PVOID SecurityQualityOfService; +} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES; +typedef OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES, *PLSA_OBJECT_ATTRIBUTES; +typedef struct _LSA_TRUST_INFORMATION { + LSA_UNICODE_STRING Name; + PSID Sid; +} LSA_TRUST_INFORMATION, *PLSA_TRUST_INFORMATION; +typedef struct _LSA_REFERENCED_DOMAIN_LIST { + ULONG Entries; + PLSA_TRUST_INFORMATION Domains; +} LSA_REFERENCED_DOMAIN_LIST, *PLSA_REFERENCED_DOMAIN_LIST; +typedef struct _LSA_TRANSLATED_SID { + SID_NAME_USE Use; + ULONG RelativeId; + LONG DomainIndex; +} LSA_TRANSLATED_SID, *PLSA_TRANSLATED_SID; +typedef struct _LSA_TRANSLATED_NAME { + SID_NAME_USE Use; + LSA_UNICODE_STRING Name; + LONG DomainIndex; +} LSA_TRANSLATED_NAME, *PLSA_TRANSLATED_NAME; +typedef struct _MSV1_0_INTERACTIVE_LOGON { + MSV1_0_LOGON_SUBMIT_TYPE MessageType; + UNICODE_STRING LogonDomainName; + UNICODE_STRING UserName; + UNICODE_STRING Password; +} MSV1_0_INTERACTIVE_LOGON, *PMSV1_0_INTERACTIVE_LOGON; +typedef struct _MSV1_0_INTERACTIVE_PROFILE { + MSV1_0_PROFILE_BUFFER_TYPE MessageType; + USHORT LogonCount; + USHORT BadPasswordCount; + LARGE_INTEGER LogonTime; + LARGE_INTEGER LogoffTime; + LARGE_INTEGER KickOffTime; + LARGE_INTEGER PasswordLastSet; + LARGE_INTEGER PasswordCanChange; + LARGE_INTEGER PasswordMustChange; + UNICODE_STRING LogonScript; + UNICODE_STRING HomeDirectory; + UNICODE_STRING FullName; + UNICODE_STRING ProfilePath; + UNICODE_STRING HomeDirectoryDrive; + UNICODE_STRING LogonServer; + ULONG UserFlags; +} MSV1_0_INTERACTIVE_PROFILE, *PMSV1_0_INTERACTIVE_PROFILE; +typedef struct _MSV1_0_LM20_LOGON { + MSV1_0_LOGON_SUBMIT_TYPE MessageType; + UNICODE_STRING LogonDomainName; + UNICODE_STRING UserName; + UNICODE_STRING Workstation; + UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH]; + STRING CaseSensitiveChallengeResponse; + STRING CaseInsensitiveChallengeResponse; + ULONG ParameterControl; +} MSV1_0_LM20_LOGON, * PMSV1_0_LM20_LOGON; +typedef struct _MSV1_0_SUBAUTH_LOGON{ /* W2K only */ + MSV1_0_LOGON_SUBMIT_TYPE MessageType; + UNICODE_STRING LogonDomainName; + UNICODE_STRING UserName; + UNICODE_STRING Workstation; + UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH]; + STRING AuthenticationInfo1; + STRING AuthenticationInfo2; + ULONG ParameterControl; + ULONG SubAuthPackageId; +} MSV1_0_SUBAUTH_LOGON, * PMSV1_0_SUBAUTH_LOGON; +typedef struct _MSV1_0_LM20_LOGON_PROFILE { + MSV1_0_PROFILE_BUFFER_TYPE MessageType; + LARGE_INTEGER KickOffTime; + LARGE_INTEGER LogoffTime; + ULONG UserFlags; + UCHAR UserSessionKey[MSV1_0_USER_SESSION_KEY_LENGTH]; + UNICODE_STRING LogonDomainName; + UCHAR LanmanSessionKey[MSV1_0_LANMAN_SESSION_KEY_LENGTH]; + UNICODE_STRING LogonServer; + UNICODE_STRING UserParameters; +} MSV1_0_LM20_LOGON_PROFILE, * PMSV1_0_LM20_LOGON_PROFILE; +typedef struct _MSV1_0_SUPPLEMENTAL_CREDENTIAL { + ULONG Version; + ULONG Flags; + UCHAR LmPassword[MSV1_0_OWF_PASSWORD_LENGTH]; + UCHAR NtPassword[MSV1_0_OWF_PASSWORD_LENGTH]; +} MSV1_0_SUPPLEMENTAL_CREDENTIAL, *PMSV1_0_SUPPLEMENTAL_CREDENTIAL; +typedef struct _MSV1_0_NTLM3_RESPONSE { + UCHAR Response[MSV1_0_NTLM3_RESPONSE_LENGTH]; + UCHAR RespType; + UCHAR HiRespType; + USHORT Flags; + ULONG MsgWord; + ULONGLONG TimeStamp; + UCHAR ChallengeFromClient[MSV1_0_CHALLENGE_LENGTH]; + ULONG AvPairsOff; + UCHAR Buffer[1]; +} MSV1_0_NTLM3_RESPONSE, *PMSV1_0_NTLM3_RESPONSE; +typedef struct _MSV1_0_AV_PAIR { + USHORT AvId; + USHORT AvLen; +} MSV1_0_AV_PAIR, *PMSV1_0_AV_PAIR; +typedef struct _MSV1_0_CHANGEPASSWORD_REQUEST { + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + UNICODE_STRING DomainName; + UNICODE_STRING AccountName; + UNICODE_STRING OldPassword; + UNICODE_STRING NewPassword; + BOOLEAN Impersonating; +} MSV1_0_CHANGEPASSWORD_REQUEST, *PMSV1_0_CHANGEPASSWORD_REQUEST; +typedef struct _MSV1_0_CHANGEPASSWORD_RESPONSE { + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + BOOLEAN PasswordInfoValid; + DOMAIN_PASSWORD_INFORMATION DomainPasswordInfo; +} MSV1_0_CHANGEPASSWORD_RESPONSE, *PMSV1_0_CHANGEPASSWORD_RESPONSE; +typedef struct _MSV1_0_SUBAUTH_REQUEST{ + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + ULONG SubAuthPackageId; + ULONG SubAuthInfoLength; + PUCHAR SubAuthSubmitBuffer; +} MSV1_0_SUBAUTH_REQUEST, *PMSV1_0_SUBAUTH_REQUEST; +typedef struct _MSV1_0_SUBAUTH_RESPONSE{ + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + ULONG SubAuthInfoLength; + PUCHAR SubAuthReturnBuffer; +} MSV1_0_SUBAUTH_RESPONSE, *PMSV1_0_SUBAUTH_RESPONSE; +#define MSV1_0_DERIVECRED_TYPE_SHA1 0 +typedef struct _MSV1_0_DERIVECRED_REQUEST { + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + LUID LogonId; + ULONG DeriveCredType; + ULONG DeriveCredInfoLength; + UCHAR DeriveCredSubmitBuffer[1]; +} MSV1_0_DERIVECRED_REQUEST, *PMSV1_0_DERIVECRED_REQUEST; +typedef struct _MSV1_0_DERIVECRED_RESPONSE { + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + ULONG DeriveCredInfoLength; + UCHAR DeriveCredReturnBuffer[1]; +} MSV1_0_DERIVECRED_RESPONSE, *PMSV1_0_DERIVECRED_RESPONSE; +typedef ULONG POLICY_AUDIT_EVENT_OPTIONS, *PPOLICY_AUDIT_EVENT_OPTIONS; +typedef struct _POLICY_PRIVILEGE_DEFINITION { + LSA_UNICODE_STRING Name; + LUID LocalValue; +} POLICY_PRIVILEGE_DEFINITION, *PPOLICY_PRIVILEGE_DEFINITION; +typedef struct _POLICY_AUDIT_LOG_INFO { + ULONG AuditLogPercentFull; + ULONG MaximumLogSize; + LARGE_INTEGER AuditRetentionPeriod; + BOOLEAN AuditLogFullShutdownInProgress; + LARGE_INTEGER TimeToShutdown; + ULONG NextAuditRecordId; +} POLICY_AUDIT_LOG_INFO, *PPOLICY_AUDIT_LOG_INFO; +typedef struct _POLICY_AUDIT_EVENTS_INFO { + BOOLEAN AuditingMode; + PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions; + ULONG MaximumAuditEventCount; +} POLICY_AUDIT_EVENTS_INFO, *PPOLICY_AUDIT_EVENTS_INFO; +typedef struct _POLICY_ACCOUNT_DOMAIN_INFO { + LSA_UNICODE_STRING DomainName; + PSID DomainSid; +} POLICY_ACCOUNT_DOMAIN_INFO, *PPOLICY_ACCOUNT_DOMAIN_INFO; +typedef struct _POLICY_PRIMARY_DOMAIN_INFO { + LSA_UNICODE_STRING Name; + PSID Sid; +} POLICY_PRIMARY_DOMAIN_INFO, *PPOLICY_PRIMARY_DOMAIN_INFO; +typedef struct _POLICY_DNS_DOMAIN_INFO { + LSA_UNICODE_STRING Name; + LSA_UNICODE_STRING DnsDomainName; + LSA_UNICODE_STRING DnsTreeName; + GUID DomainGuid; + PSID Sid; +} POLICY_DNS_DOMAIN_INFO, *PPOLICY_DNS_DOMAIN_INFO; +typedef struct _POLICY_PD_ACCOUNT_INFO { + LSA_UNICODE_STRING Name; +} POLICY_PD_ACCOUNT_INFO, *PPOLICY_PD_ACCOUNT_INFO; +typedef struct _POLICY_LSA_SERVER_ROLE_INFO { + POLICY_LSA_SERVER_ROLE LsaServerRole; +} POLICY_LSA_SERVER_ROLE_INFO, *PPOLICY_LSA_SERVER_ROLE_INFO; +typedef struct _POLICY_REPLICA_SOURCE_INFO { + LSA_UNICODE_STRING ReplicaSource; + LSA_UNICODE_STRING ReplicaAccountName; +} POLICY_REPLICA_SOURCE_INFO, *PPOLICY_REPLICA_SOURCE_INFO; +typedef struct _POLICY_DEFAULT_QUOTA_INFO { + QUOTA_LIMITS QuotaLimits; +} POLICY_DEFAULT_QUOTA_INFO, *PPOLICY_DEFAULT_QUOTA_INFO; +typedef struct _POLICY_MODIFICATION_INFO { + LARGE_INTEGER ModifiedId; + LARGE_INTEGER DatabaseCreationTime; +} POLICY_MODIFICATION_INFO, *PPOLICY_MODIFICATION_INFO; +typedef struct _POLICY_AUDIT_FULL_SET_INFO { + BOOLEAN ShutDownOnFull; +} POLICY_AUDIT_FULL_SET_INFO, *PPOLICY_AUDIT_FULL_SET_INFO; +typedef struct _POLICY_AUDIT_FULL_QUERY_INFO { + BOOLEAN ShutDownOnFull; + BOOLEAN LogIsFull; +} POLICY_AUDIT_FULL_QUERY_INFO, *PPOLICY_AUDIT_FULL_QUERY_INFO; +typedef struct _POLICY_EFS_INFO { + ULONG InfoLength; + PUCHAR EfsBlob; +} POLICY_EFS_INFO, *PPOLICY_EFS_INFO; +typedef struct _POLICY_LOCAL_IPSEC_REFERENCE_INFO { + LSA_UNICODE_STRING ObjectPath; +} POLICY_LOCAL_IPSEC_REFERENCE_INFO, *PPOLICY_LOCAL_IPSEC_REFERENCE_INFO; +typedef struct _POLICY_LOCAL_MACHINE_PASSWORD_INFO { + LARGE_INTEGER PasswordChangeInterval; +} POLICY_LOCAL_MACHINE_PASSWORD_INFO, *PPOLICY_LOCAL_MACHINE_PASSWORD_INFO; +typedef struct _POLICY_LOCAL_POLICY_LOCATION_INFO { + ULONG PolicyLocation; +} POLICY_LOCAL_POLICY_LOCATION_INFO, *PPOLICY_LOCAL_POLICY_LOCATION_INFO; +typedef struct _POLICY_LOCAL_QUALITY_OF_SERVICE_INFO { + ULONG QualityOfService; +} POLICY_LOCAL_QUALITY_OF_SERVICE_INFO, *PPOLICY_LOCAL_QUALITY_OF_SERVICE_INFO; +typedef struct _POLICY_LOCAL_QUALITY_OF_SERVICE_INFO POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO; +typedef struct _POLICY_LOCAL_QUALITY_OF_SERVICE_INFO *PPOLICY_DOMAIN_QUALITY_OF_SERVICE_INFO; +typedef struct _POLICY_DOMAIN_PUBLIC_KEY_INFO { + ULONG InfoLength; + PUCHAR PublicKeyInfo; +} POLICY_DOMAIN_PUBLIC_KEY_INFO, *PPOLICY_DOMAIN_PUBLIC_KEY_INFO; +typedef struct _POLICY_DOMAIN_LOCKOUT_INFO { + LARGE_INTEGER LockoutDuration; + LARGE_INTEGER LockoutObservationWindow; + USHORT LockoutThreshold; +} POLICY_DOMAIN_LOCKOUT_INFO, *PPOLICY_DOMAIN_LOCKOUT_INFO; +typedef struct _POLICY_DOMAIN_PASSWORD_INFO { + USHORT MinPasswordLength; + USHORT PasswordHistoryLength; + ULONG PasswordProperties; + LARGE_INTEGER MaxPasswordAge; + LARGE_INTEGER MinPasswordAge; +} POLICY_DOMAIN_PASSWORD_INFO, *PPOLICY_DOMAIN_PASSWORD_INFO; +typedef struct _POLICY_DOMAIN_KERBEROS_TICKET_INFO { + ULONG AuthenticationOptions; + LARGE_INTEGER MinTicketAge; + LARGE_INTEGER MaxTicketAge; + LARGE_INTEGER MaxRenewAge; + LARGE_INTEGER ProxyLifetime; + LARGE_INTEGER ForceLogoff; +} POLICY_DOMAIN_KERBEROS_TICKET_INFO, *PPOLICY_DOMAIN_KERBEROS_TICKET_INFO; +typedef PVOID LSA_HANDLE, *PLSA_HANDLE; +typedef struct _TRUSTED_DOMAIN_NAME_INFO { + LSA_UNICODE_STRING Name; +} TRUSTED_DOMAIN_NAME_INFO, *PTRUSTED_DOMAIN_NAME_INFO; +typedef struct _TRUSTED_CONTROLLERS_INFO { + ULONG Entries; + PLSA_UNICODE_STRING Names; +} TRUSTED_CONTROLLERS_INFO, *PTRUSTED_CONTROLLERS_INFO; +typedef struct _TRUSTED_POSIX_OFFSET_INFO { + ULONG Offset; +} TRUSTED_POSIX_OFFSET_INFO, *PTRUSTED_POSIX_OFFSET_INFO; +typedef struct _TRUSTED_PASSWORD_INFO { + LSA_UNICODE_STRING Password; + LSA_UNICODE_STRING OldPassword; +} TRUSTED_PASSWORD_INFO, *PTRUSTED_PASSWORD_INFO; +typedef LSA_TRUST_INFORMATION TRUSTED_DOMAIN_INFORMATION_BASIC; +typedef PLSA_TRUST_INFORMATION *PTRUSTED_DOMAIN_INFORMATION_BASIC; +typedef struct _TRUSTED_DOMAIN_INFORMATION_EX { + LSA_UNICODE_STRING Name; + LSA_UNICODE_STRING FlatName; + PSID Sid; + ULONG TrustDirection; + ULONG TrustType; + ULONG TrustAttributes; +} TRUSTED_DOMAIN_INFORMATION_EX, *PTRUSTED_DOMAIN_INFORMATION_EX; +typedef struct _LSA_AUTH_INFORMATION { + LARGE_INTEGER LastUpdateTime; + ULONG AuthType; + ULONG AuthInfoLength; + PUCHAR AuthInfo; +} LSA_AUTH_INFORMATION, *PLSA_AUTH_INFORMATION; +typedef struct _TRUSTED_DOMAIN_AUTH_INFORMATION { + ULONG IncomingAuthInfos; + PLSA_AUTH_INFORMATION IncomingAuthenticationInformation; + PLSA_AUTH_INFORMATION IncomingPreviousAuthenticationInformation; + ULONG OutgoingAuthInfos; + PLSA_AUTH_INFORMATION OutgoingAuthenticationInformation; + PLSA_AUTH_INFORMATION OutgoingPreviousAuthenticationInformation; +} TRUSTED_DOMAIN_AUTH_INFORMATION, *PTRUSTED_DOMAIN_AUTH_INFORMATION; +typedef struct _TRUSTED_DOMAIN_FULL_INFORMATION { + TRUSTED_DOMAIN_INFORMATION_EX Information; + TRUSTED_POSIX_OFFSET_INFO PosixOffset; + TRUSTED_DOMAIN_AUTH_INFORMATION AuthInformation; +} TRUSTED_DOMAIN_FULL_INFORMATION, *PTRUSTED_DOMAIN_FULL_INFORMATION; +NTSTATUS NTAPI LsaAddAccountRights(LSA_HANDLE,PSID,PLSA_UNICODE_STRING,ULONG); +NTSTATUS NTAPI LsaCallAuthenticationPackage(HANDLE,ULONG,PVOID,ULONG,PVOID*, + PULONG,PNTSTATUS); +NTSTATUS NTAPI LsaClose(LSA_HANDLE); +NTSTATUS NTAPI LsaConnectUntrusted(PHANDLE); +NTSTATUS NTAPI LsaCreateTrustedDomainEx(LSA_HANDLE, + PTRUSTED_DOMAIN_INFORMATION_EX, + PTRUSTED_DOMAIN_AUTH_INFORMATION,ACCESS_MASK, + PLSA_HANDLE); +NTSTATUS NTAPI LsaDeleteTrustedDomain(LSA_HANDLE,PSID); +NTSTATUS NTAPI LsaDeregisterLogonProcess(HANDLE); +NTSTATUS NTAPI LsaEnumerateAccountRights(LSA_HANDLE,PSID,PLSA_UNICODE_STRING*,PULONG); +NTSTATUS NTAPI LsaEnumerateAccountsWithUserRight(LSA_HANDLE,PLSA_UNICODE_STRING, + PVOID*,PULONG); +NTSTATUS NTAPI LsaEnumerateTrustedDomains(LSA_HANDLE,PLSA_ENUMERATION_HANDLE, + PVOID*,ULONG,PULONG); +NTSTATUS NTAPI LsaEnumerateTrustedDomainsEx(LSA_HANDLE,PLSA_ENUMERATION_HANDLE, + TRUSTED_INFORMATION_CLASS,PVOID*,ULONG,PULONG); +NTSTATUS NTAPI LsaFreeMemory(PVOID); +NTSTATUS NTAPI LsaFreeReturnBuffer(PVOID); +NTSTATUS NTAPI LsaLogonUser(HANDLE,PLSA_STRING,SECURITY_LOGON_TYPE,ULONG,PVOID, + ULONG,PTOKEN_GROUPS,PTOKEN_SOURCE,PVOID*,PULONG, + PLUID,PHANDLE,PQUOTA_LIMITS,PNTSTATUS); +NTSTATUS NTAPI LsaLookupAuthenticationPackage(HANDLE,PLSA_STRING,PULONG); +NTSTATUS NTAPI LsaLookupNames(LSA_HANDLE,ULONG,PLSA_UNICODE_STRING, + PLSA_REFERENCED_DOMAIN_LIST*,PLSA_TRANSLATED_SID*); +NTSTATUS NTAPI LsaLookupSids(LSA_HANDLE,ULONG,PSID*, + PLSA_REFERENCED_DOMAIN_LIST*,PLSA_TRANSLATED_NAME*); +ULONG NTAPI LsaNtStatusToWinError(NTSTATUS); +NTSTATUS NTAPI LsaOpenPolicy(PLSA_UNICODE_STRING,PLSA_OBJECT_ATTRIBUTES, + ACCESS_MASK,PLSA_HANDLE); +NTSTATUS NTAPI LsaQueryDomainInformationPolicy(LSA_HANDLE, + POLICY_DOMAIN_INFORMATION_CLASS,PVOID*); +NTSTATUS NTAPI LsaQueryInformationPolicy(LSA_HANDLE,POLICY_INFORMATION_CLASS,PVOID*); +NTSTATUS NTAPI LsaQueryLocalInformationPolicy(LSA_HANDLE, + POLICY_LOCAL_INFORMATION_CLASS,PVOID*); +NTSTATUS NTAPI LsaQueryTrustedDomainInfo(LSA_HANDLE,PSID, + TRUSTED_INFORMATION_CLASS,PVOID*); +NTSTATUS NTAPI LsaQueryTrustedDomainInfoByName(LSA_HANDLE,PLSA_UNICODE_STRING, + TRUSTED_INFORMATION_CLASS,PVOID*); +NTSTATUS NTAPI LsaRegisterLogonProcess(PLSA_STRING,PHANDLE,PLSA_OPERATIONAL_MODE); +NTSTATUS NTAPI LsaRemoveAccountRights(LSA_HANDLE,PSID,BOOLEAN, + PLSA_UNICODE_STRING,ULONG); +NTSTATUS NTAPI LsaRetrievePrivateData(LSA_HANDLE,PLSA_UNICODE_STRING, + PLSA_UNICODE_STRING*); +NTSTATUS NTAPI LsaSetDomainInformationPolicy(LSA_HANDLE, + POLICY_DOMAIN_INFORMATION_CLASS,PVOID); +NTSTATUS NTAPI LsaSetInformationPolicy(LSA_HANDLE,POLICY_INFORMATION_CLASS, PVOID); +NTSTATUS NTAPI LsaSetLocalInformationPolicy(LSA_HANDLE, + POLICY_LOCAL_INFORMATION_CLASS,PVOID); +NTSTATUS NTAPI LsaSetTrustedDomainInformation(LSA_HANDLE,PSID, + TRUSTED_INFORMATION_CLASS,PVOID); +NTSTATUS NTAPI LsaSetTrustedDomainInfoByName(LSA_HANDLE,PLSA_UNICODE_STRING, + TRUSTED_INFORMATION_CLASS,PVOID); +NTSTATUS NTAPI LsaStorePrivateData(LSA_HANDLE,PLSA_UNICODE_STRING, + PLSA_UNICODE_STRING); +typedef NTSTATUS (*PSAM_PASSWORD_NOTIFICATION_ROUTINE)(PUNICODE_STRING, + ULONG,PUNICODE_STRING); +typedef BOOLEAN (*PSAM_INIT_NOTIFICATION_ROUTINE)(); +typedef BOOLEAN (*PSAM_PASSWORD_FILTER_ROUTINE)(PUNICODE_STRING,PUNICODE_STRING, + PUNICODE_STRING,BOOLEAN); +#ifdef __cplusplus +} +#endif +#endif /* _NTSECAPI_H */ diff --git a/winsup/w32api/include/subauth.h b/winsup/w32api/include/subauth.h new file mode 100644 index 000000000..67f25c319 --- /dev/null +++ b/winsup/w32api/include/subauth.h @@ -0,0 +1,207 @@ +#ifndef _SUBAUTH_H +#define _SUBAUTH_H +#ifdef __cplusplus +extern "C" { +#endif +#ifndef NT_SUCCESS +#define NT_SUCCESS(Status) ((Status) >= 0) +#endif +#define CYPHER_BLOCK_LENGTH 8 +#define USER_SESSION_KEY_LENGTH (CYPHER_BLOCK_LENGTH*2) +#define CLEAR_BLOCK_LENGTH 8 +#define MSV1_0_PASSTHRU 1 +#define MSV1_0_GUEST_LOGON 2 +#define MSV1_0_VALIDATION_LOGOFF_TIME 1 +#define MSV1_0_VALIDATION_KICKOFF_TIME 2 +#define MSV1_0_VALIDATION_LOGON_SERVER 4 +#define MSV1_0_VALIDATION_LOGON_DOMAIN 8 +#define MSV1_0_VALIDATION_SESSION_KEY 16 +#define MSV1_0_VALIDATION_USER_FLAGS 32 +#define MSV1_0_VALIDATION_USER_ID 64 +#define MSV1_0_SUBAUTH_ACCOUNT_DISABLED 1 +#define MSV1_0_SUBAUTH_PASSWORD 2 +#define MSV1_0_SUBAUTH_WORKSTATIONS 4 +#define MSV1_0_SUBAUTH_LOGON_HOURS 8 +#define MSV1_0_SUBAUTH_ACCOUNT_EXPIRY 16 +#define MSV1_0_SUBAUTH_PASSWORD_EXPIRY 32 +#define MSV1_0_SUBAUTH_ACCOUNT_TYPE 64 +#define MSV1_0_SUBAUTH_LOCKOUT 128 +#define NEXT_FREE_ACCOUNT_CONTROL_BIT 131072 +#define SAM_DAYS_PER_WEEK 7 +#define SAM_HOURS_PER_WEEK 168 +#define SAM_MINUTES_PER_WEEK 10080 +#define STATUS_SUCCESS 0 +#define STATUS_INVALID_INFO_CLASS 0xC0000003L +#define STATUS_NO_SUCH_USER 0xC0000064L +#define STATUS_WRONG_PASSWORD 0xC000006AL +#define STATUS_PASSWORD_RESTRICTION 0xC000006CL +#define STATUS_LOGON_FAILURE 0xC000006DL +#define STATUS_ACCOUNT_RESTRICTION 0xC000006EL +#define STATUS_INVALID_LOGON_HOURS 0xC000006FL +#define STATUS_INVALID_WORKSTATION 0xC0000070L +#define STATUS_PASSWORD_EXPIRED 0xC0000071L +#define STATUS_ACCOUNT_DISABLED 0xC0000072L +#define STATUS_INSUFFICIENT_RESOURCES 0xC000009AL +#define STATUS_ACCOUNT_EXPIRED 0xC0000193L +#define STATUS_PASSWORD_MUST_CHANGE 0xC0000224L +#define STATUS_ACCOUNT_LOCKED_OUT 0xC0000234L +#define USER_ACCOUNT_DISABLED 1 +#define USER_HOME_DIRECTORY_REQUIRED 2 +#define USER_PASSWORD_NOT_REQUIRED 4 +#define USER_TEMP_DUPLICATE_ACCOUNT 8 +#define USER_NORMAL_ACCOUNT 16 +#define USER_MNS_LOGON_ACCOUNT 32 +#define USER_INTERDOMAIN_TRUST_ACCOUNT 64 +#define USER_WORKSTATION_TRUST_ACCOUNT 128 +#define USER_SERVER_TRUST_ACCOUNT 256 +#define USER_DONT_EXPIRE_PASSWORD 512 +#define USER_ACCOUNT_AUTO_LOCKED 1024 +#define USER_ENCRYPTED_TEXT_PASSWORD_ALLOWED 2048 +#define USER_SMARTCARD_REQUIRED 4096 +#define USER_TRUSTED_FOR_DELEGATION 8192 +#define USER_NOT_DELEGATED 16384 +#define USER_USE_DES_KEY_ONLY 32768 +#define USER_DONT_REQUIRE_PREAUTH 65536 +#define USER_MACHINE_ACCOUNT_MASK 448 +#define USER_ACCOUNT_TYPE_MASK 472 +#define USER_ALL_PARAMETERS 2097152 +#if !defined(_NTDEF_H) && !defined(_NTSECAPI_H) +typedef LONG NTSTATUS, *PNTSTATUS; +#endif +typedef PVOID SAM_HANDLE, *PSAM_HANDLE; +#ifndef _NTSECAPI_H +typedef struct _UNICODE_STRING { + USHORT Length; + USHORT MaximumLength; + PWSTR Buffer; +} UNICODE_STRING, *PUNICODE_STRING; +typedef struct _STRING { + USHORT Length; + USHORT MaximumLength; + PCHAR Buffer; +} STRING, *PSTRING; +#endif +typedef struct _OLD_LARGE_INTEGER { + ULONG LowPart; + LONG HighPart; +} OLD_LARGE_INTEGER, *POLD_LARGE_INTEGER; +typedef enum _NETLOGON_LOGON_INFO_CLASS { + NetlogonInteractiveInformation = 1,NetlogonNetworkInformation, + NetlogonServiceInformation,NetlogonGenericInformation, + NetlogonInteractiveTransitiveInformation,NetlogonNetworkTransitiveInformation, + NetlogonServiceTransitiveInformation +} NETLOGON_LOGON_INFO_CLASS; +typedef struct _CYPHER_BLOCK { + CHAR data[CYPHER_BLOCK_LENGTH]; +} CYPHER_BLOCK, *PCYPHER_BLOCK; +typedef struct _CLEAR_BLOCK { + CHAR data[CLEAR_BLOCK_LENGTH]; +} CLEAR_BLOCK, *PCLEAR_BLOCK; +typedef struct _LM_OWF_PASSWORD { + CYPHER_BLOCK data[2]; +} LM_OWF_PASSWORD, *PLM_OWF_PASSWORD; +typedef struct _USER_SESSION_KEY { + CYPHER_BLOCK data[2]; +} USER_SESSION_KEY, *PUSER_SESSION_KEY; +typedef CLEAR_BLOCK LM_CHALLENGE, *PLM_CHALLENGE; +typedef LM_OWF_PASSWORD NT_OWF_PASSWORD, *PNT_OWF_PASSWORD; +typedef LM_CHALLENGE NT_CHALLENGE, *PNT_CHALLENGE; +typedef struct _LOGON_HOURS { + USHORT UnitsPerWeek; + PUCHAR LogonHours; +} LOGON_HOURS, *PLOGON_HOURS; +typedef struct _SR_SECURITY_DESCRIPTOR { + ULONG Length; + PUCHAR SecurityDescriptor; +} SR_SECURITY_DESCRIPTOR, *PSR_SECURITY_DESCRIPTOR; +#pragma pack(push,4) +typedef struct _USER_ALL_INFORMATION { + LARGE_INTEGER LastLogon; + LARGE_INTEGER LastLogoff; + LARGE_INTEGER PasswordLastSet; + LARGE_INTEGER AccountExpires; + LARGE_INTEGER PasswordCanChange; + LARGE_INTEGER PasswordMustChange; + UNICODE_STRING UserName; + UNICODE_STRING FullName; + UNICODE_STRING HomeDirectory; + UNICODE_STRING HomeDirectoryDrive; + UNICODE_STRING ScriptPath; + UNICODE_STRING ProfilePath; + UNICODE_STRING AdminComment; + UNICODE_STRING WorkStations; + UNICODE_STRING UserComment; + UNICODE_STRING Parameters; + UNICODE_STRING LmPassword; + UNICODE_STRING NtPassword; + UNICODE_STRING PrivateData; + SR_SECURITY_DESCRIPTOR SecurityDescriptor; + ULONG UserId; + ULONG PrimaryGroupId; + ULONG UserAccountControl; + ULONG WhichFields; + LOGON_HOURS LogonHours; + USHORT BadPasswordCount; + USHORT LogonCount; + USHORT CountryCode; + USHORT CodePage; + BOOLEAN LmPasswordPresent; + BOOLEAN NtPasswordPresent; + BOOLEAN PasswordExpired; + BOOLEAN PrivateDataSensitive; +} USER_ALL_INFORMATION, *PUSER_ALL_INFORMATION; +#pragma pack(pop) +typedef struct _MSV1_0_VALIDATION_INFO { + LARGE_INTEGER LogoffTime; + LARGE_INTEGER KickoffTime; + UNICODE_STRING LogonServer; + UNICODE_STRING LogonDomainName; + USER_SESSION_KEY SessionKey; + BOOLEAN Authoritative; + ULONG UserFlags; + ULONG WhichFields; + ULONG UserId; +} MSV1_0_VALIDATION_INFO, *PMSV1_0_VALIDATION_INFO; +typedef struct _NETLOGON_LOGON_IDENTITY_INFO { + UNICODE_STRING LogonDomainName; + ULONG ParameterControl; + OLD_LARGE_INTEGER LogonId; + UNICODE_STRING UserName; + UNICODE_STRING Workstation; +} NETLOGON_LOGON_IDENTITY_INFO, *PNETLOGON_LOGON_IDENTITY_INFO; +typedef struct _NETLOGON_INTERACTIVE_INFO { + NETLOGON_LOGON_IDENTITY_INFO Identity; + LM_OWF_PASSWORD LmOwfPassword; + NT_OWF_PASSWORD NtOwfPassword; +} NETLOGON_INTERACTIVE_INFO, *PNETLOGON_INTERACTIVE_INFO; +typedef struct _NETLOGON_GENERIC_INFO { + NETLOGON_LOGON_IDENTITY_INFO Identity; + UNICODE_STRING PackageName; + ULONG DataLength; + PUCHAR LogonData; +} NETLOGON_GENERIC_INFO, *PNETLOGON_GENERIC_INFO; +typedef struct _NETLOGON_NETWORK_INFO { + NETLOGON_LOGON_IDENTITY_INFO Identity; + LM_CHALLENGE LmChallenge; + STRING NtChallengeResponse; + STRING LmChallengeResponse; +} NETLOGON_NETWORK_INFO, *PNETLOGON_NETWORK_INFO; +typedef struct _NETLOGON_SERVICE_INFO { + NETLOGON_LOGON_IDENTITY_INFO Identity; + LM_OWF_PASSWORD LmOwfPassword; + NT_OWF_PASSWORD NtOwfPassword; +} NETLOGON_SERVICE_INFO, *PNETLOGON_SERVICE_INFO; +NTSTATUS NTAPI Msv1_0SubAuthenticationRoutine(NETLOGON_LOGON_INFO_CLASS,PVOID, + ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG, + PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER); +NTSTATUS NTAPI Msv1_0SubAuthenticationFilter(NETLOGON_LOGON_INFO_CLASS,PVOID, + ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG, + PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER); +NTSTATUS NTAPI Msv1_0SubAuthenticationRoutineGeneric(PVOID,ULONG,PULONG,PVOID*); +NTSTATUS NTAPI Msv1_0SubAuthenticationRoutineEx(NETLOGON_LOGON_INFO_CLASS,PVOID, + ULONG,PUSER_ALL_INFORMATION,SAM_HANDLE, + PMSV1_0_VALIDATION_INFO,PULONG); +#ifdef __cplusplus +} +#endif +#endif /* _SUBAUTH_H */ -- cgit v1.2.3