| 1 |
#ifndef _NTSECAPI_H |
| 2 |
#define _NTSECAPI_H |
| 3 |
#if __GNUC__ >=3 |
| 4 |
#pragma GCC system_header |
| 5 |
#endif |
| 6 |
|
| 7 |
#ifdef __cplusplus |
| 8 |
extern "C" { |
| 9 |
#endif |
| 10 |
#define KERB_WRAP_NO_ENCRYPT 0x80000001 |
| 11 |
#define LOGON_GUEST 1 |
| 12 |
#define LOGON_NOENCRYPTION 2 |
| 13 |
#define LOGON_CACHED_ACCOUNT 4 |
| 14 |
#define LOGON_USED_LM_PASSWORD 8 |
| 15 |
#define LOGON_EXTRA_SIDS 32 |
| 16 |
#define LOGON_SUBAUTH_SESSION_KEY 64 |
| 17 |
#define LOGON_SERVER_TRUST_ACCOUNT 128 |
| 18 |
#define LOGON_NTLMV2_ENABLED 256 |
| 19 |
#define LOGON_RESOURCE_GROUPS 512 |
| 20 |
#define LOGON_PROFILE_PATH_RETURNED 1024 |
| 21 |
#define LOGON_GRACE_LOGON 16777216 |
| 22 |
#define LSA_MODE_PASSWORD_PROTECTED 1 |
| 23 |
#define LSA_MODE_INDIVIDUAL_ACCOUNTS 2 |
| 24 |
#define LSA_MODE_MANDATORY_ACCESS 3 |
| 25 |
#define LSA_MODE_LOG_FULL 4 |
| 26 |
#define LSA_SUCCESS(x) ((LONG)(x)>=0) |
| 27 |
#define MICROSOFT_KERBEROS_NAME_A "Kerberos" |
| 28 |
#define MICROSOFT_KERBEROS_NAME_W L"Kerberos" |
| 29 |
#define MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT 32 |
| 30 |
#define MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT 2048 |
| 31 |
#define MSV1_0_CHALLENGE_LENGTH 8 |
| 32 |
#define MSV1_0_CLEARTEXT_PASSWORD_ALLOWED 2 |
| 33 |
#define MSV1_0_CRED_LM_PRESENT 1 |
| 34 |
#define MSV1_0_CRED_NT_PRESENT 2 |
| 35 |
#define MSV1_0_CRED_VERSION 0 |
| 36 |
#define MSV1_0_DONT_TRY_GUEST_ACCOUNT 16 |
| 37 |
#define MSV1_0_LANMAN_SESSION_KEY_LENGTH 8 |
| 38 |
#define MSV1_0_MAX_NTLM3_LIFE 1800 |
| 39 |
#define MSV1_0_MAX_AVL_SIZE 64000 |
| 40 |
#define MSV1_0_MNS_LOGON 16777216 |
| 41 |
#define MSV1_0_NTLM3_RESPONSE_LENGTH 16 |
| 42 |
#define MSV1_0_NTLM3_OWF_LENGTH 16 |
| 43 |
#define MSV1_0_NTLM3_INPUT_LENGTH (sizeof(MSV1_0_NTLM3_RESPONSE)-MSV1_0_NTLM3_RESPONSE_LENGTH) |
| 44 |
#define MSV1_0_OWF_PASSWORD_LENGTH 16 |
| 45 |
#define MSV1_0_PACKAGE_NAME "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0" |
| 46 |
#define MSV1_0_PACKAGE_NAMEW L"MICROSOFT_AUTHENTICATION_PACKAGE_V1_0" |
| 47 |
#define MSV1_0_PACKAGE_NAMEW_LENGTH sizeof(MSV1_0_PACKAGE_NAMEW)-sizeof(WCHAR) |
| 48 |
#define MSV1_0_RETURN_USER_PARAMETERS 8 |
| 49 |
#define MSV1_0_RETURN_PASSWORD_EXPIRY 64 |
| 50 |
#define MSV1_0_RETURN_PROFILE_PATH 512 |
| 51 |
#define MSV1_0_SUBAUTHENTICATION_DLL_EX 1048576 |
| 52 |
#define MSV1_0_SUBAUTHENTICATION_DLL 0xff000000 |
| 53 |
#define MSV1_0_SUBAUTHENTICATION_DLL_SHIFT 24 |
| 54 |
#define MSV1_0_SUBAUTHENTICATION_DLL_RAS 2 |
| 55 |
#define MSV1_0_SUBAUTHENTICATION_DLL_IIS 132 |
| 56 |
#define MSV1_0_SUBAUTHENTICATION_FLAGS 0xff000000 |
| 57 |
#define MSV1_0_SUBAUTHENTICATION_KEY "System\\CurrentControlSet\\Control\\Lsa\\MSV1_0" |
| 58 |
#define MSV1_0_SUBAUTHENTICATION_VALUE "Auth" |
| 59 |
#define MSV1_0_TRY_GUEST_ACCOUNT_ONLY 256 |
| 60 |
#define MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY 1024 |
| 61 |
#define MSV1_0_UPDATE_LOGON_STATISTICS 4 |
| 62 |
#define MSV1_0_USE_CLIENT_CHALLENGE 128 |
| 63 |
#define MSV1_0_USER_SESSION_KEY_LENGTH 16 |
| 64 |
#define POLICY_VIEW_LOCAL_INFORMATION 1 |
| 65 |
#define POLICY_VIEW_AUDIT_INFORMATION 2 |
| 66 |
#define POLICY_GET_PRIVATE_INFORMATION 4 |
| 67 |
#define POLICY_TRUST_ADMIN 8 |
| 68 |
#define POLICY_CREATE_ACCOUNT 16 |
| 69 |
#define POLICY_CREATE_SECRET 32 |
| 70 |
#define POLICY_CREATE_PRIVILEGE 64 |
| 71 |
#define POLICY_SET_DEFAULT_QUOTA_LIMITS 128 |
| 72 |
#define POLICY_SET_AUDIT_REQUIREMENTS 256 |
| 73 |
#define POLICY_AUDIT_LOG_ADMIN 512 |
| 74 |
#define POLICY_SERVER_ADMIN 1024 |
| 75 |
#define POLICY_LOOKUP_NAMES 2048 |
| 76 |
#define POLICY_READ (STANDARD_RIGHTS_READ|6) |
| 77 |
#define POLICY_WRITE (STANDARD_RIGHTS_WRITE|2040) |
| 78 |
#define POLICY_EXECUTE (STANDARD_RIGHTS_EXECUTE|2049) |
| 79 |
#define POLICY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|4095) |
| 80 |
#define POLICY_AUDIT_EVENT_UNCHANGED 0 |
| 81 |
#define POLICY_AUDIT_EVENT_SUCCESS 1 |
| 82 |
#define POLICY_AUDIT_EVENT_FAILURE 2 |
| 83 |
#define POLICY_AUDIT_EVENT_NONE 4 |
| 84 |
#define POLICY_AUDIT_EVENT_MASK 7 |
| 85 |
#define POLICY_LOCATION_LOCAL 1 |
| 86 |
#define POLICY_LOCATION_DS 2 |
| 87 |
#define POLICY_MACHINE_POLICY_LOCAL 0 |
| 88 |
#define POLICY_MACHINE_POLICY_DEFAULTED 1 |
| 89 |
#define POLICY_MACHINE_POLICY_EXPLICIT 2 |
| 90 |
#define POLICY_MACHINE_POLICY_UNKNOWN 0xFFFFFFFF |
| 91 |
#define POLICY_QOS_SCHANEL_REQUIRED 1 |
| 92 |
#define POLICY_QOS_OUTBOUND_INTEGRITY 2 |
| 93 |
#define POLICY_QOS_OUTBOUND_CONFIDENTIALITY 4 |
| 94 |
#define POLICY_QOS_INBOUND_INTEGREITY 8 |
| 95 |
#define POLICY_QOS_INBOUND_CONFIDENTIALITY 16 |
| 96 |
#define POLICY_QOS_ALLOW_LOCAL_ROOT_CERT_STORE 32 |
| 97 |
#define POLICY_QOS_RAS_SERVER_ALLOWED 64 |
| 98 |
#define POLICY_QOS_DHCP_SERVER_ALLOWD 128 |
| 99 |
#define POLICY_KERBEROS_FORWARDABLE 1 |
| 100 |
#define POLICY_KERBEROS_PROXYABLE 2 |
| 101 |
#define POLICY_KERBEROS_RENEWABLE 4 |
| 102 |
#define POLICY_KERBEROS_POSTDATEABLE 8 |
| 103 |
#define SAM_PASSWORD_CHANGE_NOTIFY_ROUTINE "PasswordChangeNotify" |
| 104 |
#define SAM_INIT_NOTIFICATION_ROUTINE "InitializeChangeNotify" |
| 105 |
#define SAM_PASSWORD_FILTER_ROUTINE "PasswordFilter" |
| 106 |
#define SE_INTERACTIVE_LOGON_NAME TEXT("SeInteractiveLogonRight") |
| 107 |
#define SE_NETWORK_LOGON_NAME TEXT("SeNetworkLogonRight") |
| 108 |
#define SE_BATCH_LOGON_NAME TEXT("SeBatchLogonRight") |
| 109 |
#define SE_SERVICE_LOGON_NAME TEXT("SeServiceLogonRight") |
| 110 |
#define TRUST_ATTRIBUTE_NON_TRANSITIVE 1 |
| 111 |
#define TRUST_ATTRIBUTE_UPLEVEL_ONLY 2 |
| 112 |
#define TRUST_ATTRIBUTE_TREE_PARENT 4194304 |
| 113 |
#define TRUST_ATTRIBUTES_VALID -16580609 |
| 114 |
#define TRUST_AUTH_TYPE_NONE 0 |
| 115 |
#define TRUST_AUTH_TYPE_NT4OWF 1 |
| 116 |
#define TRUST_AUTH_TYPE_CLEAR 2 |
| 117 |
#define TRUST_DIRECTION_DISABLED 0 |
| 118 |
#define TRUST_DIRECTION_INBOUND 1 |
| 119 |
#define TRUST_DIRECTION_OUTBOUND 2 |
| 120 |
#define TRUST_DIRECTION_BIDIRECTIONAL 3 |
| 121 |
#define TRUST_TYPE_DOWNLEVEL 1 |
| 122 |
#define TRUST_TYPE_UPLEVEL 2 |
| 123 |
#define TRUST_TYPE_MIT 3 |
| 124 |
#define TRUST_TYPE_DCE 4 |
| 125 |
#if !defined(_NTDEF_H) && !defined(_SUBAUTH_H) |
| 126 |
typedef LONG NTSTATUS, *PNTSTATUS; |
| 127 |
typedef struct _UNICODE_STRING { |
| 128 |
USHORT Length; |
| 129 |
USHORT MaximumLength; |
| 130 |
PWSTR Buffer; |
| 131 |
} UNICODE_STRING, *PUNICODE_STRING; |
| 132 |
typedef const UNICODE_STRING* PCUNICODE_STRING; |
| 133 |
typedef struct _STRING { |
| 134 |
USHORT Length; |
| 135 |
USHORT MaximumLength; |
| 136 |
PCHAR Buffer; |
| 137 |
} STRING, *PSTRING; |
| 138 |
#endif |
| 139 |
typedef UNICODE_STRING LSA_UNICODE_STRING, *PLSA_UNICODE_STRING; |
| 140 |
typedef STRING LSA_STRING, *PLSA_STRING; |
| 141 |
typedef enum _MSV1_0_LOGON_SUBMIT_TYPE { |
| 142 |
MsV1_0InteractiveLogon = 2, |
| 143 |
MsV1_0Lm20Logon, |
| 144 |
MsV1_0NetworkLogon, |
| 145 |
MsV1_0SubAuthLogon, |
| 146 |
MsV1_0WorkstationUnlockLogon = 7 |
| 147 |
} MSV1_0_LOGON_SUBMIT_TYPE, *PMSV1_0_LOGON_SUBMIT_TYPE; |
| 148 |
typedef enum _MSV1_0_PROFILE_BUFFER_TYPE { |
| 149 |
MsV1_0InteractiveProfile = 2, |
| 150 |
MsV1_0Lm20LogonProfile, |
| 151 |
MsV1_0SmartCardProfile |
| 152 |
} MSV1_0_PROFILE_BUFFER_TYPE, *PMSV1_0_PROFILE_BUFFER_TYPE; |
| 153 |
typedef enum { |
| 154 |
MsvAvEOL, |
| 155 |
MsvAvNbComputerName, |
| 156 |
MsvAvNbDomainName, |
| 157 |
MsvAvDnsComputerName, |
| 158 |
MsvAvDnsDomainName |
| 159 |
} MSV1_0_AVID; |
| 160 |
typedef enum _MSV1_0_PROTOCOL_MESSAGE_TYPE { |
| 161 |
MsV1_0Lm20ChallengeRequest = 0, |
| 162 |
MsV1_0Lm20GetChallengeResponse, |
| 163 |
MsV1_0EnumerateUsers, |
| 164 |
MsV1_0GetUserInfo, |
| 165 |
MsV1_0ReLogonUsers, |
| 166 |
MsV1_0ChangePassword, |
| 167 |
MsV1_0ChangeCachedPassword, |
| 168 |
MsV1_0GenericPassthrough, |
| 169 |
MsV1_0CacheLogon, |
| 170 |
MsV1_0SubAuth, |
| 171 |
MsV1_0DeriveCredential, |
| 172 |
MsV1_0CacheLookup |
| 173 |
} MSV1_0_PROTOCOL_MESSAGE_TYPE, *PMSV1_0_PROTOCOL_MESSAGE_TYPE; |
| 174 |
typedef enum _POLICY_LSA_SERVER_ROLE { |
| 175 |
PolicyServerRoleBackup = 2, |
| 176 |
PolicyServerRolePrimary |
| 177 |
} POLICY_LSA_SERVER_ROLE, *PPOLICY_LSA_SERVER_ROLE; |
| 178 |
typedef enum _POLICY_SERVER_ENABLE_STATE { |
| 179 |
PolicyServerEnabled = 2, |
| 180 |
PolicyServerDisabled |
| 181 |
} POLICY_SERVER_ENABLE_STATE, *PPOLICY_SERVER_ENABLE_STATE; |
| 182 |
typedef enum _POLICY_INFORMATION_CLASS { |
| 183 |
PolicyAuditLogInformation = 1, |
| 184 |
PolicyAuditEventsInformation, |
| 185 |
PolicyPrimaryDomainInformation, |
| 186 |
PolicyPdAccountInformation, |
| 187 |
PolicyAccountDomainInformation, |
| 188 |
PolicyLsaServerRoleInformation, |
| 189 |
PolicyReplicaSourceInformation, |
| 190 |
PolicyDefaultQuotaInformation, |
| 191 |
PolicyModificationInformation, |
| 192 |
PolicyAuditFullSetInformation, |
| 193 |
PolicyAuditFullQueryInformation, |
| 194 |
PolicyDnsDomainInformation, |
| 195 |
PolicyEfsInformation |
| 196 |
} POLICY_INFORMATION_CLASS, *PPOLICY_INFORMATION_CLASS; |
| 197 |
typedef enum _POLICY_AUDIT_EVENT_TYPE { |
| 198 |
AuditCategorySystem, |
| 199 |
AuditCategoryLogon, |
| 200 |
AuditCategoryObjectAccess, |
| 201 |
AuditCategoryPrivilegeUse, |
| 202 |
AuditCategoryDetailedTracking, |
| 203 |
AuditCategoryPolicyChange, |
| 204 |
AuditCategoryAccountManagement, |
| 205 |
AuditCategoryDirectoryServiceAccess, |
| 206 |
AuditCategoryAccountLogon |
| 207 |
} POLICY_AUDIT_EVENT_TYPE, *PPOLICY_AUDIT_EVENT_TYPE; |
| 208 |
typedef enum _POLICY_LOCAL_INFORMATION_CLASS { |
| 209 |
PolicyLocalAuditEventsInformation = 1, |
| 210 |
PolicyLocalPdAccountInformation, |
| 211 |
PolicyLocalAccountDomainInformation, |
| 212 |
PolicyLocalLsaServerRoleInformation, |
| 213 |
PolicyLocalReplicaSourceInformation, |
| 214 |
PolicyLocalModificationInformation, |
| 215 |
PolicyLocalAuditFullSetInformation, |
| 216 |
PolicyLocalAuditFullQueryInformation, |
| 217 |
PolicyLocalDnsDomainInformation, |
| 218 |
PolicyLocalIPSecReferenceInformation, |
| 219 |
PolicyLocalMachinePasswordInformation, |
| 220 |
PolicyLocalQualityOfServiceInformation, |
| 221 |
PolicyLocalPolicyLocationInformation |
| 222 |
} POLICY_LOCAL_INFORMATION_CLASS, *PPOLICY_LOCAL_INFORMATION_CLASS; |
| 223 |
typedef enum _POLICY_DOMAIN_INFORMATION_CLASS { |
| 224 |
PolicyDomainIPSecReferenceInformation = 1, |
| 225 |
PolicyDomainQualityOfServiceInformation, |
| 226 |
PolicyDomainEfsInformation, |
| 227 |
PolicyDomainPublicKeyInformation, |
| 228 |
PolicyDomainPasswordPolicyInformation, |
| 229 |
PolicyDomainLockoutInformation, |
| 230 |
PolicyDomainKerberosTicketInformation |
| 231 |
} POLICY_DOMAIN_INFORMATION_CLASS, *PPOLICY_DOMAIN_INFORMATION_CLASS; |
| 232 |
typedef enum _SECURITY_LOGON_TYPE { |
| 233 |
Interactive = 2, |
| 234 |
Network, |
| 235 |
Batch, |
| 236 |
Service, |
| 237 |
Proxy, |
| 238 |
Unlock |
| 239 |
} SECURITY_LOGON_TYPE, *PSECURITY_LOGON_TYPE; |
| 240 |
typedef enum _TRUSTED_INFORMATION_CLASS { |
| 241 |
TrustedDomainNameInformation = 1, |
| 242 |
TrustedControllersInformation, |
| 243 |
TrustedPosixOffsetInformation, |
| 244 |
TrustedPasswordInformation, |
| 245 |
TrustedDomainInformationBasic, |
| 246 |
TrustedDomainInformationEx, |
| 247 |
TrustedDomainAuthInformation, |
| 248 |
TrustedDomainFullInformation |
| 249 |
} TRUSTED_INFORMATION_CLASS, *PTRUSTED_INFORMATION_CLASS; |
| 250 |
typedef struct _DOMAIN_PASSWORD_INFORMATION { |
| 251 |
USHORT MinPasswordLength; |
| 252 |
USHORT PasswordHistoryLength; |
| 253 |
ULONG PasswordProperties; |
| 254 |
LARGE_INTEGER MaxPasswordAge; |
| 255 |
LARGE_INTEGER MinPasswordAge; |
| 256 |
} DOMAIN_PASSWORD_INFORMATION, *PDOMAIN_PASSWORD_INFORMATION; |
| 257 |
typedef ULONG LSA_ENUMERATION_HANDLE, *PLSA_ENUMERATION_HANDLE; |
| 258 |
typedef struct _LSA_ENUMERATION_INFORMATION { |
| 259 |
PSID Sid; |
| 260 |
} LSA_ENUMERATION_INFORMATION, *PLSA_ENUMERATION_INFORMATION; |
| 261 |
typedef ULONG LSA_OPERATIONAL_MODE, *PLSA_OPERATIONAL_MODE; |
| 262 |
#if !defined(_NTDEF_H) |
| 263 |
typedef struct _LSA_OBJECT_ATTRIBUTES { |
| 264 |
ULONG Length; |
| 265 |
HANDLE RootDirectory; |
| 266 |
PLSA_UNICODE_STRING ObjectName; |
| 267 |
ULONG Attributes; |
| 268 |
PVOID SecurityDescriptor; |
| 269 |
PVOID SecurityQualityOfService; |
| 270 |
} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES; |
| 271 |
#endif |
| 272 |
typedef OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES, *PLSA_OBJECT_ATTRIBUTES; |
| 273 |
typedef struct _LSA_TRUST_INFORMATION { |
| 274 |
LSA_UNICODE_STRING Name; |
| 275 |
PSID Sid; |
| 276 |
} LSA_TRUST_INFORMATION, *PLSA_TRUST_INFORMATION; |
| 277 |
typedef struct _LSA_REFERENCED_DOMAIN_LIST { |
| 278 |
ULONG Entries; |
| 279 |
PLSA_TRUST_INFORMATION Domains; |
| 280 |
} LSA_REFERENCED_DOMAIN_LIST, *PLSA_REFERENCED_DOMAIN_LIST; |
| 281 |
typedef struct _LSA_TRANSLATED_SID { |
| 282 |
SID_NAME_USE Use; |
| 283 |
ULONG RelativeId; |
| 284 |
LONG DomainIndex; |
| 285 |
} LSA_TRANSLATED_SID, *PLSA_TRANSLATED_SID; |
| 286 |
typedef struct _LSA_TRANSLATED_NAME { |
| 287 |
SID_NAME_USE Use; |
| 288 |
LSA_UNICODE_STRING Name; |
| 289 |
LONG DomainIndex; |
| 290 |
} LSA_TRANSLATED_NAME, *PLSA_TRANSLATED_NAME; |
| 291 |
typedef struct _MSV1_0_INTERACTIVE_LOGON { |
| 292 |
MSV1_0_LOGON_SUBMIT_TYPE MessageType; |
| 293 |
UNICODE_STRING LogonDomainName; |
| 294 |
UNICODE_STRING UserName; |
| 295 |
UNICODE_STRING Password; |
| 296 |
} MSV1_0_INTERACTIVE_LOGON, *PMSV1_0_INTERACTIVE_LOGON; |
| 297 |
typedef struct _MSV1_0_INTERACTIVE_PROFILE { |
| 298 |
MSV1_0_PROFILE_BUFFER_TYPE MessageType; |
| 299 |
USHORT LogonCount; |
| 300 |
USHORT BadPasswordCount; |
| 301 |
LARGE_INTEGER LogonTime; |
| 302 |
LARGE_INTEGER LogoffTime; |
| 303 |
LARGE_INTEGER KickOffTime; |
| 304 |
LARGE_INTEGER PasswordLastSet; |
| 305 |
LARGE_INTEGER PasswordCanChange; |
| 306 |
LARGE_INTEGER PasswordMustChange; |
| 307 |
UNICODE_STRING LogonScript; |
| 308 |
UNICODE_STRING HomeDirectory; |
| 309 |
UNICODE_STRING FullName; |
| 310 |
UNICODE_STRING ProfilePath; |
| 311 |
UNICODE_STRING HomeDirectoryDrive; |
| 312 |
UNICODE_STRING LogonServer; |
| 313 |
ULONG UserFlags; |
| 314 |
} MSV1_0_INTERACTIVE_PROFILE, *PMSV1_0_INTERACTIVE_PROFILE; |
| 315 |
typedef struct _MSV1_0_LM20_LOGON { |
| 316 |
MSV1_0_LOGON_SUBMIT_TYPE MessageType; |
| 317 |
UNICODE_STRING LogonDomainName; |
| 318 |
UNICODE_STRING UserName; |
| 319 |
UNICODE_STRING Workstation; |
| 320 |
UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH]; |
| 321 |
STRING CaseSensitiveChallengeResponse; |
| 322 |
STRING CaseInsensitiveChallengeResponse; |
| 323 |
ULONG ParameterControl; |
| 324 |
} MSV1_0_LM20_LOGON, * PMSV1_0_LM20_LOGON; |
| 325 |
typedef struct _MSV1_0_SUBAUTH_LOGON{ /* W2K only */ |
| 326 |
MSV1_0_LOGON_SUBMIT_TYPE MessageType; |
| 327 |
UNICODE_STRING LogonDomainName; |
| 328 |
UNICODE_STRING UserName; |
| 329 |
UNICODE_STRING Workstation; |
| 330 |
UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH]; |
| 331 |
STRING AuthenticationInfo1; |
| 332 |
STRING AuthenticationInfo2; |
| 333 |
ULONG ParameterControl; |
| 334 |
ULONG SubAuthPackageId; |
| 335 |
} MSV1_0_SUBAUTH_LOGON, * PMSV1_0_SUBAUTH_LOGON; |
| 336 |
typedef struct _MSV1_0_LM20_LOGON_PROFILE { |
| 337 |
MSV1_0_PROFILE_BUFFER_TYPE MessageType; |
| 338 |
LARGE_INTEGER KickOffTime; |
| 339 |
LARGE_INTEGER LogoffTime; |
| 340 |
ULONG UserFlags; |
| 341 |
UCHAR UserSessionKey[MSV1_0_USER_SESSION_KEY_LENGTH]; |
| 342 |
UNICODE_STRING LogonDomainName; |
| 343 |
UCHAR LanmanSessionKey[MSV1_0_LANMAN_SESSION_KEY_LENGTH]; |
| 344 |
UNICODE_STRING LogonServer; |
| 345 |
UNICODE_STRING UserParameters; |
| 346 |
} MSV1_0_LM20_LOGON_PROFILE, * PMSV1_0_LM20_LOGON_PROFILE; |
| 347 |
typedef struct _MSV1_0_SUPPLEMENTAL_CREDENTIAL { |
| 348 |
ULONG Version; |
| 349 |
ULONG Flags; |
| 350 |
UCHAR LmPassword[MSV1_0_OWF_PASSWORD_LENGTH]; |
| 351 |
UCHAR NtPassword[MSV1_0_OWF_PASSWORD_LENGTH]; |
| 352 |
} MSV1_0_SUPPLEMENTAL_CREDENTIAL, *PMSV1_0_SUPPLEMENTAL_CREDENTIAL; |
| 353 |
typedef struct _MSV1_0_NTLM3_RESPONSE { |
| 354 |
UCHAR Response[MSV1_0_NTLM3_RESPONSE_LENGTH]; |
| 355 |
UCHAR RespType; |
| 356 |
UCHAR HiRespType; |
| 357 |
USHORT Flags; |
| 358 |
ULONG MsgWord; |
| 359 |
ULONGLONG TimeStamp; |
| 360 |
UCHAR ChallengeFromClient[MSV1_0_CHALLENGE_LENGTH]; |
| 361 |
ULONG AvPairsOff; |
| 362 |
UCHAR Buffer[1]; |
| 363 |
} MSV1_0_NTLM3_RESPONSE, *PMSV1_0_NTLM3_RESPONSE; |
| 364 |
typedef struct _MSV1_0_AV_PAIR { |
| 365 |
USHORT AvId; |
| 366 |
USHORT AvLen; |
| 367 |
} MSV1_0_AV_PAIR, *PMSV1_0_AV_PAIR; |
| 368 |
typedef struct _MSV1_0_CHANGEPASSWORD_REQUEST { |
| 369 |
MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; |
| 370 |
UNICODE_STRING DomainName; |
| 371 |
UNICODE_STRING AccountName; |
| 372 |
UNICODE_STRING OldPassword; |
| 373 |
UNICODE_STRING NewPassword; |
| 374 |
BOOLEAN Impersonating; |
| 375 |
} MSV1_0_CHANGEPASSWORD_REQUEST, *PMSV1_0_CHANGEPASSWORD_REQUEST; |
| 376 |
typedef struct _MSV1_0_CHANGEPASSWORD_RESPONSE { |
| 377 |
MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; |
| 378 |
BOOLEAN PasswordInfoValid; |
| 379 |
DOMAIN_PASSWORD_INFORMATION DomainPasswordInfo; |
| 380 |
} MSV1_0_CHANGEPASSWORD_RESPONSE, *PMSV1_0_CHANGEPASSWORD_RESPONSE; |
| 381 |
typedef struct _MSV1_0_SUBAUTH_REQUEST{ |
| 382 |
MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; |
| 383 |
ULONG SubAuthPackageId; |
| 384 |
ULONG SubAuthInfoLength; |
| 385 |
PUCHAR SubAuthSubmitBuffer; |
| 386 |
} MSV1_0_SUBAUTH_REQUEST, *PMSV1_0_SUBAUTH_REQUEST; |
| 387 |
typedef struct _MSV1_0_SUBAUTH_RESPONSE{ |
| 388 |
MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; |
| 389 |
ULONG SubAuthInfoLength; |
| 390 |
PUCHAR SubAuthReturnBuffer; |
| 391 |
} MSV1_0_SUBAUTH_RESPONSE, *PMSV1_0_SUBAUTH_RESPONSE; |
| 392 |
#define MSV1_0_DERIVECRED_TYPE_SHA1 0 |
| 393 |
typedef struct _MSV1_0_DERIVECRED_REQUEST { |
| 394 |
MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; |
| 395 |
LUID LogonId; |
| 396 |
ULONG DeriveCredType; |
| 397 |
ULONG DeriveCredInfoLength; |
| 398 |
UCHAR DeriveCredSubmitBuffer[1]; |
| 399 |
} MSV1_0_DERIVECRED_REQUEST, *PMSV1_0_DERIVECRED_REQUEST; |
| 400 |
typedef struct _MSV1_0_DERIVECRED_RESPONSE { |
| 401 |
MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; |
| 402 |
ULONG DeriveCredInfoLength; |
| 403 |
UCHAR DeriveCredReturnBuffer[1]; |
| 404 |
} MSV1_0_DERIVECRED_RESPONSE, *PMSV1_0_DERIVECRED_RESPONSE; |
| 405 |
typedef ULONG POLICY_AUDIT_EVENT_OPTIONS, *PPOLICY_AUDIT_EVENT_OPTIONS; |
| 406 |
typedef struct _POLICY_PRIVILEGE_DEFINITION { |
| 407 |
LSA_UNICODE_STRING Name; |
| 408 |
LUID LocalValue; |
| 409 |
} POLICY_PRIVILEGE_DEFINITION, *PPOLICY_PRIVILEGE_DEFINITION; |
| 410 |
typedef struct _POLICY_AUDIT_LOG_INFO { |
| 411 |
ULONG AuditLogPercentFull; |
| 412 |
ULONG MaximumLogSize; |
| 413 |
LARGE_INTEGER AuditRetentionPeriod; |
| 414 |
BOOLEAN AuditLogFullShutdownInProgress; |
| 415 |
LARGE_INTEGER TimeToShutdown; |
| 416 |
ULONG NextAuditRecordId; |
| 417 |
} POLICY_AUDIT_LOG_INFO, *PPOLICY_AUDIT_LOG_INFO; |
| 418 |
typedef struct _POLICY_AUDIT_EVENTS_INFO { |
| 419 |
BOOLEAN AuditingMode; |
| 420 |
PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions; |
| 421 |
ULONG MaximumAuditEventCount; |
| 422 |
} POLICY_AUDIT_EVENTS_INFO, *PPOLICY_AUDIT_EVENTS_INFO; |
| 423 |
typedef struct _POLICY_ACCOUNT_DOMAIN_INFO { |
| 424 |
LSA_UNICODE_STRING DomainName; |
| 425 |
PSID DomainSid; |
| 426 |
} POLICY_ACCOUNT_DOMAIN_INFO, *PPOLICY_ACCOUNT_DOMAIN_INFO; |
| 427 |
typedef struct _POLICY_PRIMARY_DOMAIN_INFO { |
| 428 |
LSA_UNICODE_STRING Name; |
| 429 |
PSID Sid; |
| 430 |
} POLICY_PRIMARY_DOMAIN_INFO, *PPOLICY_PRIMARY_DOMAIN_INFO; |
| 431 |
typedef struct _POLICY_DNS_DOMAIN_INFO { |
| 432 |
LSA_UNICODE_STRING Name; |
| 433 |
LSA_UNICODE_STRING DnsDomainName; |
| 434 |
LSA_UNICODE_STRING DnsForestName; |
| 435 |
GUID DomainGuid; |
| 436 |
PSID Sid; |
| 437 |
} POLICY_DNS_DOMAIN_INFO, *PPOLICY_DNS_DOMAIN_INFO; |
| 438 |
typedef struct _POLICY_PD_ACCOUNT_INFO { |
| 439 |
LSA_UNICODE_STRING Name; |
| 440 |
} POLICY_PD_ACCOUNT_INFO, *PPOLICY_PD_ACCOUNT_INFO; |
| 441 |
typedef struct _POLICY_LSA_SERVER_ROLE_INFO { |
| 442 |
POLICY_LSA_SERVER_ROLE LsaServerRole; |
| 443 |
} POLICY_LSA_SERVER_ROLE_INFO, *PPOLICY_LSA_SERVER_ROLE_INFO; |
| 444 |
typedef struct _POLICY_REPLICA_SOURCE_INFO { |
| 445 |
LSA_UNICODE_STRING ReplicaSource; |
| 446 |
LSA_UNICODE_STRING ReplicaAccountName; |
| 447 |
} POLICY_REPLICA_SOURCE_INFO, *PPOLICY_REPLICA_SOURCE_INFO; |
| 448 |
typedef struct _POLICY_DEFAULT_QUOTA_INFO { |
| 449 |
QUOTA_LIMITS QuotaLimits; |
| 450 |
} POLICY_DEFAULT_QUOTA_INFO, *PPOLICY_DEFAULT_QUOTA_INFO; |
| 451 |
typedef struct _POLICY_MODIFICATION_INFO { |
| 452 |
LARGE_INTEGER ModifiedId; |
| 453 |
LARGE_INTEGER DatabaseCreationTime; |
| 454 |
} POLICY_MODIFICATION_INFO, *PPOLICY_MODIFICATION_INFO; |
| 455 |
typedef struct _POLICY_AUDIT_FULL_SET_INFO { |
| 456 |
BOOLEAN ShutDownOnFull; |
| 457 |
} POLICY_AUDIT_FULL_SET_INFO, *PPOLICY_AUDIT_FULL_SET_INFO; |
| 458 |
typedef struct _POLICY_AUDIT_FULL_QUERY_INFO { |
| 459 |
BOOLEAN ShutDownOnFull; |
| 460 |
BOOLEAN LogIsFull; |
| 461 |
} POLICY_AUDIT_FULL_QUERY_INFO, *PPOLICY_AUDIT_FULL_QUERY_INFO; |
| 462 |
typedef struct _POLICY_EFS_INFO { |
| 463 |
ULONG InfoLength; |
| 464 |
PUCHAR EfsBlob; |
| 465 |
} POLICY_EFS_INFO, *PPOLICY_EFS_INFO; |
| 466 |
typedef struct _POLICY_LOCAL_IPSEC_REFERENCE_INFO { |
| 467 |
LSA_UNICODE_STRING ObjectPath; |
| 468 |
} POLICY_LOCAL_IPSEC_REFERENCE_INFO, *PPOLICY_LOCAL_IPSEC_REFERENCE_INFO; |
| 469 |
typedef struct _POLICY_LOCAL_MACHINE_PASSWORD_INFO { |
| 470 |
LARGE_INTEGER PasswordChangeInterval; |
| 471 |
} POLICY_LOCAL_MACHINE_PASSWORD_INFO, *PPOLICY_LOCAL_MACHINE_PASSWORD_INFO; |
| 472 |
typedef struct _POLICY_LOCAL_POLICY_LOCATION_INFO { |
| 473 |
ULONG PolicyLocation; |
| 474 |
} POLICY_LOCAL_POLICY_LOCATION_INFO, *PPOLICY_LOCAL_POLICY_LOCATION_INFO; |
| 475 |
typedef struct _POLICY_LOCAL_QUALITY_OF_SERVICE_INFO { |
| 476 |
ULONG QualityOfService; |
| 477 |
} POLICY_LOCAL_QUALITY_OF_SERVICE_INFO, *PPOLICY_LOCAL_QUALITY_OF_SERVICE_INFO; |
| 478 |
typedef struct _POLICY_LOCAL_QUALITY_OF_SERVICE_INFO POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO; |
| 479 |
typedef struct _POLICY_LOCAL_QUALITY_OF_SERVICE_INFO *PPOLICY_DOMAIN_QUALITY_OF_SERVICE_INFO; |
| 480 |
typedef struct _POLICY_DOMAIN_PUBLIC_KEY_INFO { |
| 481 |
ULONG InfoLength; |
| 482 |
PUCHAR PublicKeyInfo; |
| 483 |
} POLICY_DOMAIN_PUBLIC_KEY_INFO, *PPOLICY_DOMAIN_PUBLIC_KEY_INFO; |
| 484 |
typedef struct _POLICY_DOMAIN_LOCKOUT_INFO { |
| 485 |
LARGE_INTEGER LockoutDuration; |
| 486 |
LARGE_INTEGER LockoutObservationWindow; |
| 487 |
USHORT LockoutThreshold; |
| 488 |
} POLICY_DOMAIN_LOCKOUT_INFO, *PPOLICY_DOMAIN_LOCKOUT_INFO; |
| 489 |
typedef struct _POLICY_DOMAIN_PASSWORD_INFO { |
| 490 |
USHORT MinPasswordLength; |
| 491 |
USHORT PasswordHistoryLength; |
| 492 |
ULONG PasswordProperties; |
| 493 |
LARGE_INTEGER MaxPasswordAge; |
| 494 |
LARGE_INTEGER MinPasswordAge; |
| 495 |
} POLICY_DOMAIN_PASSWORD_INFO, *PPOLICY_DOMAIN_PASSWORD_INFO; |
| 496 |
typedef struct _POLICY_DOMAIN_KERBEROS_TICKET_INFO { |
| 497 |
ULONG AuthenticationOptions; |
| 498 |
LARGE_INTEGER MinTicketAge; |
| 499 |
LARGE_INTEGER MaxTicketAge; |
| 500 |
LARGE_INTEGER MaxRenewAge; |
| 501 |
LARGE_INTEGER ProxyLifetime; |
| 502 |
LARGE_INTEGER ForceLogoff; |
| 503 |
} POLICY_DOMAIN_KERBEROS_TICKET_INFO, *PPOLICY_DOMAIN_KERBEROS_TICKET_INFO; |
| 504 |
typedef PVOID LSA_HANDLE, *PLSA_HANDLE; |
| 505 |
typedef struct _TRUSTED_DOMAIN_NAME_INFO { |
| 506 |
LSA_UNICODE_STRING Name; |
| 507 |
} TRUSTED_DOMAIN_NAME_INFO, *PTRUSTED_DOMAIN_NAME_INFO; |
| 508 |
typedef struct _TRUSTED_CONTROLLERS_INFO { |
| 509 |
ULONG Entries; |
| 510 |
PLSA_UNICODE_STRING Names; |
| 511 |
} TRUSTED_CONTROLLERS_INFO, *PTRUSTED_CONTROLLERS_INFO; |
| 512 |
typedef struct _TRUSTED_POSIX_OFFSET_INFO { |
| 513 |
ULONG Offset; |
| 514 |
} TRUSTED_POSIX_OFFSET_INFO, *PTRUSTED_POSIX_OFFSET_INFO; |
| 515 |
typedef struct _TRUSTED_PASSWORD_INFO { |
| 516 |
LSA_UNICODE_STRING Password; |
| 517 |
LSA_UNICODE_STRING OldPassword; |
| 518 |
} TRUSTED_PASSWORD_INFO, *PTRUSTED_PASSWORD_INFO; |
| 519 |
typedef LSA_TRUST_INFORMATION TRUSTED_DOMAIN_INFORMATION_BASIC; |
| 520 |
typedef PLSA_TRUST_INFORMATION *PTRUSTED_DOMAIN_INFORMATION_BASIC; |
| 521 |
typedef struct _TRUSTED_DOMAIN_INFORMATION_EX { |
| 522 |
LSA_UNICODE_STRING Name; |
| 523 |
LSA_UNICODE_STRING FlatName; |
| 524 |
PSID Sid; |
| 525 |
ULONG TrustDirection; |
| 526 |
ULONG TrustType; |
| 527 |
ULONG TrustAttributes; |
| 528 |
} TRUSTED_DOMAIN_INFORMATION_EX, *PTRUSTED_DOMAIN_INFORMATION_EX; |
| 529 |
typedef struct _LSA_AUTH_INFORMATION { |
| 530 |
LARGE_INTEGER LastUpdateTime; |
| 531 |
ULONG AuthType; |
| 532 |
ULONG AuthInfoLength; |
| 533 |
PUCHAR AuthInfo; |
| 534 |
} LSA_AUTH_INFORMATION, *PLSA_AUTH_INFORMATION; |
| 535 |
typedef struct _TRUSTED_DOMAIN_AUTH_INFORMATION { |
| 536 |
ULONG IncomingAuthInfos; |
| 537 |
PLSA_AUTH_INFORMATION IncomingAuthenticationInformation; |
| 538 |
PLSA_AUTH_INFORMATION IncomingPreviousAuthenticationInformation; |
| 539 |
ULONG OutgoingAuthInfos; |
| 540 |
PLSA_AUTH_INFORMATION OutgoingAuthenticationInformation; |
| 541 |
PLSA_AUTH_INFORMATION OutgoingPreviousAuthenticationInformation; |
| 542 |
} TRUSTED_DOMAIN_AUTH_INFORMATION, *PTRUSTED_DOMAIN_AUTH_INFORMATION; |
| 543 |
typedef struct _TRUSTED_DOMAIN_FULL_INFORMATION { |
| 544 |
TRUSTED_DOMAIN_INFORMATION_EX Information; |
| 545 |
TRUSTED_POSIX_OFFSET_INFO PosixOffset; |
| 546 |
TRUSTED_DOMAIN_AUTH_INFORMATION AuthInformation; |
| 547 |
} TRUSTED_DOMAIN_FULL_INFORMATION, *PTRUSTED_DOMAIN_FULL_INFORMATION; |
| 548 |
NTSTATUS NTAPI LsaAddAccountRights(LSA_HANDLE,PSID,PLSA_UNICODE_STRING,ULONG); |
| 549 |
NTSTATUS NTAPI LsaCallAuthenticationPackage(HANDLE,ULONG,PVOID,ULONG,PVOID*, |
| 550 |
PULONG,PNTSTATUS); |
| 551 |
NTSTATUS NTAPI LsaClose(LSA_HANDLE); |
| 552 |
NTSTATUS NTAPI LsaConnectUntrusted(PHANDLE); |
| 553 |
NTSTATUS NTAPI LsaCreateTrustedDomainEx(LSA_HANDLE, |
| 554 |
PTRUSTED_DOMAIN_INFORMATION_EX, |
| 555 |
PTRUSTED_DOMAIN_AUTH_INFORMATION,ACCESS_MASK, |
| 556 |
PLSA_HANDLE); |
| 557 |
NTSTATUS NTAPI LsaDeleteTrustedDomain(LSA_HANDLE,PSID); |
| 558 |
NTSTATUS NTAPI LsaDeregisterLogonProcess(HANDLE); |
| 559 |
NTSTATUS NTAPI LsaEnumerateAccountRights(LSA_HANDLE,PSID,PLSA_UNICODE_STRING*,PULONG); |
| 560 |
NTSTATUS NTAPI LsaEnumerateAccountsWithUserRight(LSA_HANDLE,PLSA_UNICODE_STRING, |
| 561 |
PVOID*,PULONG); |
| 562 |
NTSTATUS NTAPI LsaEnumerateTrustedDomains(LSA_HANDLE,PLSA_ENUMERATION_HANDLE, |
| 563 |
PVOID*,ULONG,PULONG); |
| 564 |
NTSTATUS NTAPI LsaEnumerateTrustedDomainsEx(LSA_HANDLE,PLSA_ENUMERATION_HANDLE, |
| 565 |
TRUSTED_INFORMATION_CLASS,PVOID*,ULONG,PULONG); |
| 566 |
NTSTATUS NTAPI LsaFreeMemory(PVOID); |
| 567 |
NTSTATUS NTAPI LsaFreeReturnBuffer(PVOID); |
| 568 |
NTSTATUS NTAPI LsaLogonUser(HANDLE,PLSA_STRING,SECURITY_LOGON_TYPE,ULONG,PVOID, |
| 569 |
ULONG,PTOKEN_GROUPS,PTOKEN_SOURCE,PVOID*,PULONG, |
| 570 |
PLUID,PHANDLE,PQUOTA_LIMITS,PNTSTATUS); |
| 571 |
NTSTATUS NTAPI LsaLookupAuthenticationPackage(HANDLE,PLSA_STRING,PULONG); |
| 572 |
NTSTATUS NTAPI LsaLookupNames(LSA_HANDLE,ULONG,PLSA_UNICODE_STRING, |
| 573 |
PLSA_REFERENCED_DOMAIN_LIST*,PLSA_TRANSLATED_SID*); |
| 574 |
NTSTATUS NTAPI LsaLookupSids(LSA_HANDLE,ULONG,PSID*, |
| 575 |
PLSA_REFERENCED_DOMAIN_LIST*,PLSA_TRANSLATED_NAME*); |
| 576 |
ULONG NTAPI LsaNtStatusToWinError(NTSTATUS); |
| 577 |
NTSTATUS NTAPI LsaOpenPolicy(PLSA_UNICODE_STRING,PLSA_OBJECT_ATTRIBUTES, |
| 578 |
ACCESS_MASK,PLSA_HANDLE); |
| 579 |
NTSTATUS NTAPI LsaQueryDomainInformationPolicy(LSA_HANDLE, |
| 580 |
POLICY_DOMAIN_INFORMATION_CLASS,PVOID*); |
| 581 |
NTSTATUS NTAPI LsaQueryInformationPolicy(LSA_HANDLE,POLICY_INFORMATION_CLASS,PVOID*); |
| 582 |
NTSTATUS NTAPI LsaQueryLocalInformationPolicy(LSA_HANDLE, |
| 583 |
POLICY_LOCAL_INFORMATION_CLASS,PVOID*); |
| 584 |
NTSTATUS NTAPI LsaQueryTrustedDomainInfo(LSA_HANDLE,PSID, |
| 585 |
TRUSTED_INFORMATION_CLASS,PVOID*); |
| 586 |
NTSTATUS NTAPI LsaQueryTrustedDomainInfoByName(LSA_HANDLE,PLSA_UNICODE_STRING, |
| 587 |
TRUSTED_INFORMATION_CLASS,PVOID*); |
| 588 |
NTSTATUS NTAPI LsaRegisterLogonProcess(PLSA_STRING,PHANDLE,PLSA_OPERATIONAL_MODE); |
| 589 |
NTSTATUS NTAPI LsaRemoveAccountRights(LSA_HANDLE,PSID,BOOLEAN, |
| 590 |
PLSA_UNICODE_STRING,ULONG); |
| 591 |
NTSTATUS NTAPI LsaRetrievePrivateData(LSA_HANDLE,PLSA_UNICODE_STRING, |
| 592 |
PLSA_UNICODE_STRING*); |
| 593 |
NTSTATUS NTAPI LsaSetDomainInformationPolicy(LSA_HANDLE, |
| 594 |
POLICY_DOMAIN_INFORMATION_CLASS,PVOID); |
| 595 |
NTSTATUS NTAPI LsaSetInformationPolicy(LSA_HANDLE,POLICY_INFORMATION_CLASS, PVOID); |
| 596 |
NTSTATUS NTAPI LsaSetLocalInformationPolicy(LSA_HANDLE, |
| 597 |
POLICY_LOCAL_INFORMATION_CLASS,PVOID); |
| 598 |
NTSTATUS NTAPI LsaSetTrustedDomainInformation(LSA_HANDLE,PSID, |
| 599 |
TRUSTED_INFORMATION_CLASS,PVOID); |
| 600 |
NTSTATUS NTAPI LsaSetTrustedDomainInfoByName(LSA_HANDLE,PLSA_UNICODE_STRING, |
| 601 |
TRUSTED_INFORMATION_CLASS,PVOID); |
| 602 |
NTSTATUS NTAPI LsaStorePrivateData(LSA_HANDLE,PLSA_UNICODE_STRING, |
| 603 |
PLSA_UNICODE_STRING); |
| 604 |
typedef NTSTATUS (*PSAM_PASSWORD_NOTIFICATION_ROUTINE)(PUNICODE_STRING, |
| 605 |
ULONG,PUNICODE_STRING); |
| 606 |
typedef BOOLEAN (*PSAM_INIT_NOTIFICATION_ROUTINE)(void); |
| 607 |
typedef BOOLEAN (*PSAM_PASSWORD_FILTER_ROUTINE)(PUNICODE_STRING,PUNICODE_STRING, |
| 608 |
PUNICODE_STRING,BOOLEAN); |
| 609 |
#ifdef __cplusplus |
| 610 |
} |
| 611 |
#endif |
| 612 |
#endif /* _NTSECAPI_H */ |