Mercurial > games > semicongine
comparison fuhtark_test/include/winapi/ntsecapi.h @ 1500:91c8c3b7cbf0
add: futhark tests for generating vulkan api
| author | sam <sam@basx.dev> |
|---|---|
| date | Wed, 26 Nov 2025 21:36:48 +0700 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 1499:1f58458b7ef7 | 1500:91c8c3b7cbf0 |
|---|---|
| 1 /** | |
| 2 * This file has no copyright assigned and is placed in the Public Domain. | |
| 3 * This file is part of the w64 mingw-runtime package. | |
| 4 * No warranty is given; refer to the file DISCLAIMER within this package. | |
| 5 */ | |
| 6 #ifndef _NTSECAPI_ | |
| 7 #define _NTSECAPI_ | |
| 8 | |
| 9 #ifdef __cplusplus | |
| 10 extern "C" { | |
| 11 #endif | |
| 12 | |
| 13 #ifndef _NTDEF_ | |
| 14 typedef LONG NTSTATUS,*PNTSTATUS; | |
| 15 #endif | |
| 16 | |
| 17 #ifndef _NTLSA_IFS_ | |
| 18 typedef ULONG LSA_OPERATIONAL_MODE,*PLSA_OPERATIONAL_MODE; | |
| 19 #endif | |
| 20 | |
| 21 #define LSA_MODE_PASSWORD_PROTECTED (0x00000001L) | |
| 22 #define LSA_MODE_INDIVIDUAL_ACCOUNTS (0x00000002L) | |
| 23 #define LSA_MODE_MANDATORY_ACCESS (0x00000004L) | |
| 24 #define LSA_MODE_LOG_FULL (0x00000008L) | |
| 25 | |
| 26 #ifndef _NTLSA_IFS_ | |
| 27 typedef enum _SECURITY_LOGON_TYPE { | |
| 28 Interactive = 2,Network,Batch,Service,Proxy,Unlock,NetworkCleartext,NewCredentials,RemoteInteractive,CachedInteractive, | |
| 29 CachedRemoteInteractive,CachedUnlock | |
| 30 } SECURITY_LOGON_TYPE,*PSECURITY_LOGON_TYPE; | |
| 31 #endif | |
| 32 | |
| 33 #ifndef _NTLSA_IFS_ | |
| 34 | |
| 35 #ifndef _NTLSA_AUDIT_ | |
| 36 #define _NTLSA_AUDIT_ | |
| 37 | |
| 38 typedef enum _SE_ADT_PARAMETER_TYPE { | |
| 39 SeAdtParmTypeNone = 0,SeAdtParmTypeString,SeAdtParmTypeFileSpec,SeAdtParmTypeUlong,SeAdtParmTypeSid,SeAdtParmTypeLogonId, | |
| 40 SeAdtParmTypeNoLogonId,SeAdtParmTypeAccessMask,SeAdtParmTypePrivs,SeAdtParmTypeObjectTypes,SeAdtParmTypeHexUlong,SeAdtParmTypePtr, | |
| 41 SeAdtParmTypeTime,SeAdtParmTypeGuid,SeAdtParmTypeLuid,SeAdtParmTypeHexInt64,SeAdtParmTypeStringList,SeAdtParmTypeSidList, | |
| 42 SeAdtParmTypeDuration,SeAdtParmTypeUserAccountControl,SeAdtParmTypeNoUac,SeAdtParmTypeMessage,SeAdtParmTypeDateTime,SeAdtParmTypeSockAddr | |
| 43 } SE_ADT_PARAMETER_TYPE,*PSE_ADT_PARAMETER_TYPE; | |
| 44 | |
| 45 #include <guiddef.h> | |
| 46 | |
| 47 #define SE_ADT_OBJECT_ONLY 0x1 | |
| 48 | |
| 49 typedef struct _SE_ADT_OBJECT_TYPE { | |
| 50 GUID ObjectType; | |
| 51 USHORT Flags; | |
| 52 USHORT Level; | |
| 53 ACCESS_MASK AccessMask; | |
| 54 } SE_ADT_OBJECT_TYPE,*PSE_ADT_OBJECT_TYPE; | |
| 55 | |
| 56 typedef struct _SE_ADT_PARAMETER_ARRAY_ENTRY { | |
| 57 SE_ADT_PARAMETER_TYPE Type; | |
| 58 ULONG Length; | |
| 59 ULONG_PTR Data[2]; | |
| 60 PVOID Address; | |
| 61 } SE_ADT_PARAMETER_ARRAY_ENTRY,*PSE_ADT_PARAMETER_ARRAY_ENTRY; | |
| 62 | |
| 63 #define SE_MAX_AUDIT_PARAMETERS 32 | |
| 64 #define SE_MAX_GENERIC_AUDIT_PARAMETERS 28 | |
| 65 | |
| 66 typedef struct _SE_ADT_PARAMETER_ARRAY { | |
| 67 ULONG CategoryId; | |
| 68 ULONG AuditId; | |
| 69 ULONG ParameterCount; | |
| 70 ULONG Length; | |
| 71 USHORT Type; | |
| 72 ULONG Flags; | |
| 73 SE_ADT_PARAMETER_ARRAY_ENTRY Parameters[SE_MAX_AUDIT_PARAMETERS ]; | |
| 74 } SE_ADT_PARAMETER_ARRAY,*PSE_ADT_PARAMETER_ARRAY; | |
| 75 | |
| 76 #define SE_ADT_PARAMETERS_SELF_RELATIVE 0x00000001 | |
| 77 #endif | |
| 78 #endif | |
| 79 | |
| 80 typedef enum _POLICY_AUDIT_EVENT_TYPE { | |
| 81 AuditCategorySystem,AuditCategoryLogon,AuditCategoryObjectAccess,AuditCategoryPrivilegeUse,AuditCategoryDetailedTracking, | |
| 82 AuditCategoryPolicyChange,AuditCategoryAccountManagement,AuditCategoryDirectoryServiceAccess,AuditCategoryAccountLogon | |
| 83 } POLICY_AUDIT_EVENT_TYPE,*PPOLICY_AUDIT_EVENT_TYPE; | |
| 84 | |
| 85 #define POLICY_AUDIT_EVENT_UNCHANGED (0x00000000L) | |
| 86 #define POLICY_AUDIT_EVENT_SUCCESS (0x00000001L) | |
| 87 #define POLICY_AUDIT_EVENT_FAILURE (0x00000002L) | |
| 88 #define POLICY_AUDIT_EVENT_NONE (0x00000004L) | |
| 89 #define POLICY_AUDIT_EVENT_MASK (POLICY_AUDIT_EVENT_SUCCESS | POLICY_AUDIT_EVENT_FAILURE | POLICY_AUDIT_EVENT_UNCHANGED | POLICY_AUDIT_EVENT_NONE) | |
| 90 | |
| 91 #ifdef _NTDEF_ | |
| 92 typedef UNICODE_STRING LSA_UNICODE_STRING,*PLSA_UNICODE_STRING; | |
| 93 typedef STRING LSA_STRING,*PLSA_STRING; | |
| 94 typedef OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES,*PLSA_OBJECT_ATTRIBUTES; | |
| 95 #else | |
| 96 | |
| 97 #ifndef _NO_W32_PSEUDO_MODIFIERS | |
| 98 #ifndef IN | |
| 99 #define IN | |
| 100 #endif | |
| 101 #ifndef OUT | |
| 102 #define OUT | |
| 103 #endif | |
| 104 #ifndef OPTIONAL | |
| 105 #define OPTIONAL | |
| 106 #endif | |
| 107 #endif | |
| 108 | |
| 109 typedef struct _LSA_UNICODE_STRING { | |
| 110 USHORT Length; | |
| 111 USHORT MaximumLength; | |
| 112 PWSTR Buffer; | |
| 113 } LSA_UNICODE_STRING,*PLSA_UNICODE_STRING; | |
| 114 | |
| 115 typedef struct _LSA_STRING { | |
| 116 USHORT Length; | |
| 117 USHORT MaximumLength; | |
| 118 PCHAR Buffer; | |
| 119 } LSA_STRING,*PLSA_STRING; | |
| 120 | |
| 121 typedef struct _LSA_OBJECT_ATTRIBUTES { | |
| 122 ULONG Length; | |
| 123 HANDLE RootDirectory; | |
| 124 PLSA_UNICODE_STRING ObjectName; | |
| 125 ULONG Attributes; | |
| 126 PVOID SecurityDescriptor; | |
| 127 PVOID SecurityQualityOfService; | |
| 128 } LSA_OBJECT_ATTRIBUTES,*PLSA_OBJECT_ATTRIBUTES; | |
| 129 #endif | |
| 130 | |
| 131 #define LSA_SUCCESS(Error) ((LONG)(Error) >= 0) | |
| 132 | |
| 133 #ifndef _NTLSA_IFS_ | |
| 134 NTSTATUS NTAPI LsaRegisterLogonProcess(PLSA_STRING LogonProcessName,PHANDLE LsaHandle,PLSA_OPERATIONAL_MODE SecurityMode); | |
| 135 NTSTATUS NTAPI LsaLogonUser(HANDLE LsaHandle,PLSA_STRING OriginName,SECURITY_LOGON_TYPE LogonType,ULONG AuthenticationPackage,PVOID AuthenticationInformation,ULONG AuthenticationInformationLength,PTOKEN_GROUPS LocalGroups,PTOKEN_SOURCE SourceContext,PVOID *ProfileBuffer,PULONG ProfileBufferLength,PLUID LogonId,PHANDLE Token,PQUOTA_LIMITS Quotas,PNTSTATUS SubStatus); | |
| 136 NTSTATUS NTAPI LsaLookupAuthenticationPackage(HANDLE LsaHandle,PLSA_STRING PackageName,PULONG AuthenticationPackage); | |
| 137 NTSTATUS NTAPI LsaFreeReturnBuffer (PVOID Buffer); | |
| 138 NTSTATUS NTAPI LsaCallAuthenticationPackage(HANDLE LsaHandle,ULONG AuthenticationPackage,PVOID ProtocolSubmitBuffer,ULONG SubmitBufferLength,PVOID *ProtocolReturnBuffer,PULONG ReturnBufferLength,PNTSTATUS ProtocolStatus); | |
| 139 NTSTATUS NTAPI LsaDeregisterLogonProcess(HANDLE LsaHandle); | |
| 140 NTSTATUS NTAPI LsaConnectUntrusted(PHANDLE LsaHandle); | |
| 141 #endif | |
| 142 | |
| 143 #define POLICY_VIEW_LOCAL_INFORMATION 0x00000001L | |
| 144 #define POLICY_VIEW_AUDIT_INFORMATION 0x00000002L | |
| 145 #define POLICY_GET_PRIVATE_INFORMATION 0x00000004L | |
| 146 #define POLICY_TRUST_ADMIN 0x00000008L | |
| 147 #define POLICY_CREATE_ACCOUNT 0x00000010L | |
| 148 #define POLICY_CREATE_SECRET 0x00000020L | |
| 149 #define POLICY_CREATE_PRIVILEGE 0x00000040L | |
| 150 #define POLICY_SET_DEFAULT_QUOTA_LIMITS 0x00000080L | |
| 151 #define POLICY_SET_AUDIT_REQUIREMENTS 0x00000100L | |
| 152 #define POLICY_AUDIT_LOG_ADMIN 0x00000200L | |
| 153 #define POLICY_SERVER_ADMIN 0x00000400L | |
| 154 #define POLICY_LOOKUP_NAMES 0x00000800L | |
| 155 #define POLICY_NOTIFICATION 0x00001000L | |
| 156 | |
| 157 #define POLICY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | POLICY_VIEW_LOCAL_INFORMATION | POLICY_VIEW_AUDIT_INFORMATION | POLICY_GET_PRIVATE_INFORMATION | POLICY_TRUST_ADMIN | POLICY_CREATE_ACCOUNT | POLICY_CREATE_SECRET | POLICY_CREATE_PRIVILEGE | POLICY_SET_DEFAULT_QUOTA_LIMITS | POLICY_SET_AUDIT_REQUIREMENTS | POLICY_AUDIT_LOG_ADMIN | POLICY_SERVER_ADMIN | POLICY_LOOKUP_NAMES) | |
| 158 #define POLICY_READ (STANDARD_RIGHTS_READ | POLICY_VIEW_AUDIT_INFORMATION | POLICY_GET_PRIVATE_INFORMATION) | |
| 159 #define POLICY_WRITE (STANDARD_RIGHTS_WRITE | POLICY_TRUST_ADMIN | POLICY_CREATE_ACCOUNT | POLICY_CREATE_SECRET | POLICY_CREATE_PRIVILEGE | POLICY_SET_DEFAULT_QUOTA_LIMITS | POLICY_SET_AUDIT_REQUIREMENTS | POLICY_AUDIT_LOG_ADMIN | POLICY_SERVER_ADMIN) | |
| 160 #define POLICY_EXECUTE (STANDARD_RIGHTS_EXECUTE | POLICY_VIEW_LOCAL_INFORMATION | POLICY_LOOKUP_NAMES) | |
| 161 | |
| 162 typedef struct _LSA_TRUST_INFORMATION { | |
| 163 LSA_UNICODE_STRING Name; | |
| 164 PSID Sid; | |
| 165 } LSA_TRUST_INFORMATION,*PLSA_TRUST_INFORMATION; | |
| 166 | |
| 167 typedef struct _LSA_REFERENCED_DOMAIN_LIST { | |
| 168 ULONG Entries; | |
| 169 PLSA_TRUST_INFORMATION Domains; | |
| 170 } LSA_REFERENCED_DOMAIN_LIST,*PLSA_REFERENCED_DOMAIN_LIST; | |
| 171 | |
| 172 typedef struct _LSA_TRANSLATED_SID { | |
| 173 SID_NAME_USE Use; | |
| 174 ULONG RelativeId; | |
| 175 LONG DomainIndex; | |
| 176 } LSA_TRANSLATED_SID,*PLSA_TRANSLATED_SID; | |
| 177 | |
| 178 typedef struct _LSA_TRANSLATED_SID2 { | |
| 179 SID_NAME_USE Use; | |
| 180 PSID Sid; | |
| 181 LONG DomainIndex; | |
| 182 ULONG Flags; | |
| 183 } LSA_TRANSLATED_SID2,*PLSA_TRANSLATED_SID2; | |
| 184 | |
| 185 typedef struct _LSA_TRANSLATED_NAME { | |
| 186 SID_NAME_USE Use; | |
| 187 LSA_UNICODE_STRING Name; | |
| 188 LONG DomainIndex; | |
| 189 } LSA_TRANSLATED_NAME,*PLSA_TRANSLATED_NAME; | |
| 190 | |
| 191 typedef enum _POLICY_LSA_SERVER_ROLE { | |
| 192 PolicyServerRoleBackup = 2,PolicyServerRolePrimary | |
| 193 } POLICY_LSA_SERVER_ROLE,*PPOLICY_LSA_SERVER_ROLE; | |
| 194 | |
| 195 typedef ULONG POLICY_AUDIT_EVENT_OPTIONS,*PPOLICY_AUDIT_EVENT_OPTIONS; | |
| 196 | |
| 197 typedef enum _POLICY_INFORMATION_CLASS { | |
| 198 PolicyAuditLogInformation = 1,PolicyAuditEventsInformation,PolicyPrimaryDomainInformation,PolicyPdAccountInformation, | |
| 199 PolicyAccountDomainInformation,PolicyLsaServerRoleInformation,PolicyReplicaSourceInformation,PolicyDefaultQuotaInformation, | |
| 200 PolicyModificationInformation,PolicyAuditFullSetInformation,PolicyAuditFullQueryInformation,PolicyDnsDomainInformation, | |
| 201 PolicyDnsDomainInformationInt | |
| 202 } POLICY_INFORMATION_CLASS,*PPOLICY_INFORMATION_CLASS; | |
| 203 | |
| 204 typedef struct _POLICY_AUDIT_LOG_INFO { | |
| 205 ULONG AuditLogPercentFull; | |
| 206 ULONG MaximumLogSize; | |
| 207 LARGE_INTEGER AuditRetentionPeriod; | |
| 208 BOOLEAN AuditLogFullShutdownInProgress; | |
| 209 LARGE_INTEGER TimeToShutdown; | |
| 210 ULONG NextAuditRecordId; | |
| 211 } POLICY_AUDIT_LOG_INFO,*PPOLICY_AUDIT_LOG_INFO; | |
| 212 | |
| 213 typedef struct _POLICY_AUDIT_EVENTS_INFO { | |
| 214 BOOLEAN AuditingMode; | |
| 215 PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions; | |
| 216 ULONG MaximumAuditEventCount; | |
| 217 } POLICY_AUDIT_EVENTS_INFO,*PPOLICY_AUDIT_EVENTS_INFO; | |
| 218 | |
| 219 typedef struct _POLICY_ACCOUNT_DOMAIN_INFO { | |
| 220 LSA_UNICODE_STRING DomainName; | |
| 221 PSID DomainSid; | |
| 222 } POLICY_ACCOUNT_DOMAIN_INFO,*PPOLICY_ACCOUNT_DOMAIN_INFO; | |
| 223 | |
| 224 typedef struct _POLICY_PRIMARY_DOMAIN_INFO { | |
| 225 LSA_UNICODE_STRING Name; | |
| 226 PSID Sid; | |
| 227 } POLICY_PRIMARY_DOMAIN_INFO,*PPOLICY_PRIMARY_DOMAIN_INFO; | |
| 228 | |
| 229 typedef struct _POLICY_DNS_DOMAIN_INFO { | |
| 230 LSA_UNICODE_STRING Name; | |
| 231 LSA_UNICODE_STRING DnsDomainName; | |
| 232 LSA_UNICODE_STRING DnsForestName; | |
| 233 GUID DomainGuid; | |
| 234 PSID Sid; | |
| 235 } POLICY_DNS_DOMAIN_INFO,*PPOLICY_DNS_DOMAIN_INFO; | |
| 236 | |
| 237 typedef struct _POLICY_PD_ACCOUNT_INFO { | |
| 238 LSA_UNICODE_STRING Name; | |
| 239 } POLICY_PD_ACCOUNT_INFO,*PPOLICY_PD_ACCOUNT_INFO; | |
| 240 | |
| 241 typedef struct _POLICY_LSA_SERVER_ROLE_INFO { | |
| 242 POLICY_LSA_SERVER_ROLE LsaServerRole; | |
| 243 } POLICY_LSA_SERVER_ROLE_INFO,*PPOLICY_LSA_SERVER_ROLE_INFO; | |
| 244 | |
| 245 typedef struct _POLICY_REPLICA_SOURCE_INFO { | |
| 246 LSA_UNICODE_STRING ReplicaSource; | |
| 247 LSA_UNICODE_STRING ReplicaAccountName; | |
| 248 } POLICY_REPLICA_SOURCE_INFO,*PPOLICY_REPLICA_SOURCE_INFO; | |
| 249 | |
| 250 typedef struct _POLICY_DEFAULT_QUOTA_INFO { | |
| 251 QUOTA_LIMITS QuotaLimits; | |
| 252 } POLICY_DEFAULT_QUOTA_INFO,*PPOLICY_DEFAULT_QUOTA_INFO; | |
| 253 | |
| 254 typedef struct _POLICY_MODIFICATION_INFO { | |
| 255 LARGE_INTEGER ModifiedId; | |
| 256 LARGE_INTEGER DatabaseCreationTime; | |
| 257 } POLICY_MODIFICATION_INFO,*PPOLICY_MODIFICATION_INFO; | |
| 258 | |
| 259 typedef struct _POLICY_AUDIT_FULL_SET_INFO { | |
| 260 BOOLEAN ShutDownOnFull; | |
| 261 } POLICY_AUDIT_FULL_SET_INFO,*PPOLICY_AUDIT_FULL_SET_INFO; | |
| 262 | |
| 263 typedef struct _POLICY_AUDIT_FULL_QUERY_INFO { | |
| 264 BOOLEAN ShutDownOnFull; | |
| 265 BOOLEAN LogIsFull; | |
| 266 } POLICY_AUDIT_FULL_QUERY_INFO,*PPOLICY_AUDIT_FULL_QUERY_INFO; | |
| 267 | |
| 268 typedef enum _POLICY_DOMAIN_INFORMATION_CLASS { | |
| 269 PolicyDomainEfsInformation = 2,PolicyDomainKerberosTicketInformation | |
| 270 } POLICY_DOMAIN_INFORMATION_CLASS,*PPOLICY_DOMAIN_INFORMATION_CLASS; | |
| 271 | |
| 272 typedef struct _POLICY_DOMAIN_EFS_INFO { | |
| 273 ULONG InfoLength; | |
| 274 PUCHAR EfsBlob; | |
| 275 } POLICY_DOMAIN_EFS_INFO,*PPOLICY_DOMAIN_EFS_INFO; | |
| 276 | |
| 277 #define POLICY_KERBEROS_VALIDATE_CLIENT 0x00000080 | |
| 278 | |
| 279 typedef struct _POLICY_DOMAIN_KERBEROS_TICKET_INFO { | |
| 280 ULONG AuthenticationOptions; | |
| 281 LARGE_INTEGER MaxServiceTicketAge; | |
| 282 LARGE_INTEGER MaxTicketAge; | |
| 283 LARGE_INTEGER MaxRenewAge; | |
| 284 LARGE_INTEGER MaxClockSkew; | |
| 285 LARGE_INTEGER Reserved; | |
| 286 } POLICY_DOMAIN_KERBEROS_TICKET_INFO,*PPOLICY_DOMAIN_KERBEROS_TICKET_INFO; | |
| 287 | |
| 288 typedef enum _POLICY_NOTIFICATION_INFORMATION_CLASS { | |
| 289 PolicyNotifyAuditEventsInformation = 1,PolicyNotifyAccountDomainInformation,PolicyNotifyServerRoleInformation,PolicyNotifyDnsDomainInformation, | |
| 290 PolicyNotifyDomainEfsInformation,PolicyNotifyDomainKerberosTicketInformation,PolicyNotifyMachineAccountPasswordInformation | |
| 291 } POLICY_NOTIFICATION_INFORMATION_CLASS,*PPOLICY_NOTIFICATION_INFORMATION_CLASS; | |
| 292 | |
| 293 typedef PVOID LSA_HANDLE,*PLSA_HANDLE; | |
| 294 | |
| 295 typedef enum _TRUSTED_INFORMATION_CLASS { | |
| 296 TrustedDomainNameInformation = 1,TrustedControllersInformation,TrustedPosixOffsetInformation,TrustedPasswordInformation, | |
| 297 TrustedDomainInformationBasic,TrustedDomainInformationEx,TrustedDomainAuthInformation,TrustedDomainFullInformation, | |
| 298 TrustedDomainAuthInformationInternal,TrustedDomainFullInformationInternal,TrustedDomainInformationEx2Internal,TrustedDomainFullInformation2Internal | |
| 299 } TRUSTED_INFORMATION_CLASS,*PTRUSTED_INFORMATION_CLASS; | |
| 300 | |
| 301 typedef struct _TRUSTED_DOMAIN_NAME_INFO { | |
| 302 LSA_UNICODE_STRING Name; | |
| 303 } TRUSTED_DOMAIN_NAME_INFO,*PTRUSTED_DOMAIN_NAME_INFO; | |
| 304 | |
| 305 typedef struct _TRUSTED_CONTROLLERS_INFO { | |
| 306 ULONG Entries; | |
| 307 PLSA_UNICODE_STRING Names; | |
| 308 } TRUSTED_CONTROLLERS_INFO,*PTRUSTED_CONTROLLERS_INFO; | |
| 309 | |
| 310 typedef struct _TRUSTED_POSIX_OFFSET_INFO { | |
| 311 ULONG Offset; | |
| 312 } TRUSTED_POSIX_OFFSET_INFO,*PTRUSTED_POSIX_OFFSET_INFO; | |
| 313 | |
| 314 typedef struct _TRUSTED_PASSWORD_INFO { | |
| 315 LSA_UNICODE_STRING Password; | |
| 316 LSA_UNICODE_STRING OldPassword; | |
| 317 } TRUSTED_PASSWORD_INFO,*PTRUSTED_PASSWORD_INFO; | |
| 318 | |
| 319 typedef LSA_TRUST_INFORMATION TRUSTED_DOMAIN_INFORMATION_BASIC; | |
| 320 typedef PLSA_TRUST_INFORMATION PTRUSTED_DOMAIN_INFORMATION_BASIC; | |
| 321 | |
| 322 #define TRUST_DIRECTION_DISABLED 0x00000000 | |
| 323 #define TRUST_DIRECTION_INBOUND 0x00000001 | |
| 324 #define TRUST_DIRECTION_OUTBOUND 0x00000002 | |
| 325 #define TRUST_DIRECTION_BIDIRECTIONAL (TRUST_DIRECTION_INBOUND | TRUST_DIRECTION_OUTBOUND) | |
| 326 | |
| 327 #define TRUST_TYPE_DOWNLEVEL 0x00000001 | |
| 328 #define TRUST_TYPE_UPLEVEL 0x00000002 | |
| 329 #define TRUST_TYPE_MIT 0x00000003 | |
| 330 | |
| 331 #define TRUST_ATTRIBUTE_NON_TRANSITIVE 0x00000001 | |
| 332 #define TRUST_ATTRIBUTE_UPLEVEL_ONLY 0x00000002 | |
| 333 #define TRUST_ATTRIBUTE_QUARANTINED_DOMAIN 0x00000004 | |
| 334 #define TRUST_ATTRIBUTE_FOREST_TRANSITIVE 0x00000008 | |
| 335 #define TRUST_ATTRIBUTE_CROSS_ORGANIZATION 0x00000010 | |
| 336 #define TRUST_ATTRIBUTE_WITHIN_FOREST 0x00000020 | |
| 337 #define TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL 0x00000040 | |
| 338 #define TRUST_ATTRIBUTE_TRUST_USES_RC4_ENCRYPTION 0x00000080 | |
| 339 | |
| 340 #define TRUST_ATTRIBUTES_VALID 0xFF03FFFF | |
| 341 #define TRUST_ATTRIBUTES_USER 0xFF000000 | |
| 342 | |
| 343 typedef struct _TRUSTED_DOMAIN_INFORMATION_EX { | |
| 344 LSA_UNICODE_STRING Name; | |
| 345 LSA_UNICODE_STRING FlatName; | |
| 346 PSID Sid; | |
| 347 ULONG TrustDirection; | |
| 348 ULONG TrustType; | |
| 349 ULONG TrustAttributes; | |
| 350 } TRUSTED_DOMAIN_INFORMATION_EX,*PTRUSTED_DOMAIN_INFORMATION_EX; | |
| 351 | |
| 352 typedef struct _TRUSTED_DOMAIN_INFORMATION_EX2 { | |
| 353 LSA_UNICODE_STRING Name; | |
| 354 LSA_UNICODE_STRING FlatName; | |
| 355 PSID Sid; | |
| 356 ULONG TrustDirection; | |
| 357 ULONG TrustType; | |
| 358 ULONG TrustAttributes; | |
| 359 ULONG ForestTrustLength; | |
| 360 PUCHAR ForestTrustInfo; | |
| 361 } TRUSTED_DOMAIN_INFORMATION_EX2,*PTRUSTED_DOMAIN_INFORMATION_EX2; | |
| 362 | |
| 363 #define TRUST_AUTH_TYPE_NONE 0 | |
| 364 #define TRUST_AUTH_TYPE_NT4OWF 1 | |
| 365 #define TRUST_AUTH_TYPE_CLEAR 2 | |
| 366 #define TRUST_AUTH_TYPE_VERSION 3 | |
| 367 | |
| 368 typedef struct _LSA_AUTH_INFORMATION { | |
| 369 LARGE_INTEGER LastUpdateTime; | |
| 370 ULONG AuthType; | |
| 371 ULONG AuthInfoLength; | |
| 372 PUCHAR AuthInfo; | |
| 373 } LSA_AUTH_INFORMATION,*PLSA_AUTH_INFORMATION; | |
| 374 | |
| 375 typedef struct _TRUSTED_DOMAIN_AUTH_INFORMATION { | |
| 376 ULONG IncomingAuthInfos; | |
| 377 PLSA_AUTH_INFORMATION IncomingAuthenticationInformation; | |
| 378 PLSA_AUTH_INFORMATION IncomingPreviousAuthenticationInformation; | |
| 379 ULONG OutgoingAuthInfos; | |
| 380 PLSA_AUTH_INFORMATION OutgoingAuthenticationInformation; | |
| 381 PLSA_AUTH_INFORMATION OutgoingPreviousAuthenticationInformation; | |
| 382 } TRUSTED_DOMAIN_AUTH_INFORMATION,*PTRUSTED_DOMAIN_AUTH_INFORMATION; | |
| 383 | |
| 384 typedef struct _TRUSTED_DOMAIN_FULL_INFORMATION { | |
| 385 TRUSTED_DOMAIN_INFORMATION_EX Information; | |
| 386 TRUSTED_POSIX_OFFSET_INFO PosixOffset; | |
| 387 TRUSTED_DOMAIN_AUTH_INFORMATION AuthInformation; | |
| 388 } TRUSTED_DOMAIN_FULL_INFORMATION,*PTRUSTED_DOMAIN_FULL_INFORMATION; | |
| 389 | |
| 390 typedef struct _TRUSTED_DOMAIN_FULL_INFORMATION2 { | |
| 391 TRUSTED_DOMAIN_INFORMATION_EX2 Information; | |
| 392 TRUSTED_POSIX_OFFSET_INFO PosixOffset; | |
| 393 TRUSTED_DOMAIN_AUTH_INFORMATION AuthInformation; | |
| 394 } TRUSTED_DOMAIN_FULL_INFORMATION2,*PTRUSTED_DOMAIN_FULL_INFORMATION2; | |
| 395 | |
| 396 typedef enum { | |
| 397 ForestTrustTopLevelName,ForestTrustTopLevelNameEx,ForestTrustDomainInfo,ForestTrustRecordTypeLast = ForestTrustDomainInfo | |
| 398 } LSA_FOREST_TRUST_RECORD_TYPE; | |
| 399 | |
| 400 #define LSA_FTRECORD_DISABLED_REASONS (0x0000FFFFL) | |
| 401 | |
| 402 #define LSA_TLN_DISABLED_NEW (0x00000001L) | |
| 403 #define LSA_TLN_DISABLED_ADMIN (0x00000002L) | |
| 404 #define LSA_TLN_DISABLED_CONFLICT (0x00000004L) | |
| 405 | |
| 406 #define LSA_SID_DISABLED_ADMIN (0x00000001L) | |
| 407 #define LSA_SID_DISABLED_CONFLICT (0x00000002L) | |
| 408 #define LSA_NB_DISABLED_ADMIN (0x00000004L) | |
| 409 #define LSA_NB_DISABLED_CONFLICT (0x00000008L) | |
| 410 | |
| 411 typedef struct _LSA_FOREST_TRUST_DOMAIN_INFO { | |
| 412 PSID Sid; | |
| 413 LSA_UNICODE_STRING DnsName; | |
| 414 LSA_UNICODE_STRING NetbiosName; | |
| 415 } LSA_FOREST_TRUST_DOMAIN_INFO,*PLSA_FOREST_TRUST_DOMAIN_INFO; | |
| 416 | |
| 417 #define MAX_FOREST_TRUST_BINARY_DATA_SIZE (128*1024) | |
| 418 | |
| 419 typedef struct _LSA_FOREST_TRUST_BINARY_DATA { | |
| 420 ULONG Length; | |
| 421 PUCHAR Buffer; | |
| 422 } LSA_FOREST_TRUST_BINARY_DATA,*PLSA_FOREST_TRUST_BINARY_DATA; | |
| 423 | |
| 424 typedef struct _LSA_FOREST_TRUST_RECORD { | |
| 425 ULONG Flags; | |
| 426 LSA_FOREST_TRUST_RECORD_TYPE ForestTrustType; | |
| 427 LARGE_INTEGER Time; | |
| 428 union { | |
| 429 LSA_UNICODE_STRING TopLevelName; | |
| 430 LSA_FOREST_TRUST_DOMAIN_INFO DomainInfo; | |
| 431 LSA_FOREST_TRUST_BINARY_DATA Data; | |
| 432 } ForestTrustData; | |
| 433 } LSA_FOREST_TRUST_RECORD,*PLSA_FOREST_TRUST_RECORD; | |
| 434 | |
| 435 #define MAX_RECORDS_IN_FOREST_TRUST_INFO 4000 | |
| 436 | |
| 437 typedef struct _LSA_FOREST_TRUST_INFORMATION { | |
| 438 ULONG RecordCount; | |
| 439 PLSA_FOREST_TRUST_RECORD *Entries; | |
| 440 } LSA_FOREST_TRUST_INFORMATION,*PLSA_FOREST_TRUST_INFORMATION; | |
| 441 | |
| 442 typedef enum { | |
| 443 CollisionTdo,CollisionXref,CollisionOther | |
| 444 } LSA_FOREST_TRUST_COLLISION_RECORD_TYPE; | |
| 445 | |
| 446 typedef struct _LSA_FOREST_TRUST_COLLISION_RECORD { | |
| 447 ULONG Index; | |
| 448 LSA_FOREST_TRUST_COLLISION_RECORD_TYPE Type; | |
| 449 ULONG Flags; | |
| 450 LSA_UNICODE_STRING Name; | |
| 451 } LSA_FOREST_TRUST_COLLISION_RECORD,*PLSA_FOREST_TRUST_COLLISION_RECORD; | |
| 452 | |
| 453 typedef struct _LSA_FOREST_TRUST_COLLISION_INFORMATION { | |
| 454 ULONG RecordCount; | |
| 455 PLSA_FOREST_TRUST_COLLISION_RECORD *Entries; | |
| 456 } LSA_FOREST_TRUST_COLLISION_INFORMATION,*PLSA_FOREST_TRUST_COLLISION_INFORMATION; | |
| 457 | |
| 458 typedef ULONG LSA_ENUMERATION_HANDLE,*PLSA_ENUMERATION_HANDLE; | |
| 459 | |
| 460 typedef struct _LSA_ENUMERATION_INFORMATION { | |
| 461 PSID Sid; | |
| 462 } LSA_ENUMERATION_INFORMATION,*PLSA_ENUMERATION_INFORMATION; | |
| 463 | |
| 464 NTSTATUS NTAPI LsaFreeMemory(PVOID Buffer); | |
| 465 NTSTATUS NTAPI LsaClose(LSA_HANDLE ObjectHandle); | |
| 466 | |
| 467 typedef struct _SECURITY_LOGON_SESSION_DATA { | |
| 468 ULONG Size; | |
| 469 LUID LogonId; | |
| 470 LSA_UNICODE_STRING UserName; | |
| 471 LSA_UNICODE_STRING LogonDomain; | |
| 472 LSA_UNICODE_STRING AuthenticationPackage; | |
| 473 ULONG LogonType; | |
| 474 ULONG Session; | |
| 475 PSID Sid; | |
| 476 LARGE_INTEGER LogonTime; | |
| 477 LSA_UNICODE_STRING LogonServer; | |
| 478 LSA_UNICODE_STRING DnsDomainName; | |
| 479 LSA_UNICODE_STRING Upn; | |
| 480 } SECURITY_LOGON_SESSION_DATA,*PSECURITY_LOGON_SESSION_DATA; | |
| 481 | |
| 482 NTSTATUS NTAPI LsaEnumerateLogonSessions(PULONG LogonSessionCount,PLUID *LogonSessionList); | |
| 483 NTSTATUS NTAPI LsaGetLogonSessionData(PLUID LogonId,PSECURITY_LOGON_SESSION_DATA *ppLogonSessionData); | |
| 484 NTSTATUS NTAPI LsaOpenPolicy(PLSA_UNICODE_STRING SystemName,PLSA_OBJECT_ATTRIBUTES ObjectAttributes,ACCESS_MASK DesiredAccess,PLSA_HANDLE PolicyHandle); | |
| 485 NTSTATUS NTAPI LsaQueryInformationPolicy(LSA_HANDLE PolicyHandle,POLICY_INFORMATION_CLASS InformationClass,PVOID *Buffer); | |
| 486 NTSTATUS NTAPI LsaSetInformationPolicy(LSA_HANDLE PolicyHandle,POLICY_INFORMATION_CLASS InformationClass,PVOID Buffer); | |
| 487 NTSTATUS NTAPI LsaQueryDomainInformationPolicy(LSA_HANDLE PolicyHandle,POLICY_DOMAIN_INFORMATION_CLASS InformationClass,PVOID *Buffer); | |
| 488 NTSTATUS NTAPI LsaSetDomainInformationPolicy(LSA_HANDLE PolicyHandle,POLICY_DOMAIN_INFORMATION_CLASS InformationClass,PVOID Buffer); | |
| 489 NTSTATUS NTAPI LsaRegisterPolicyChangeNotification(POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass,HANDLE NotificationEventHandle); | |
| 490 NTSTATUS NTAPI LsaUnregisterPolicyChangeNotification(POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass,HANDLE NotificationEventHandle); | |
| 491 NTSTATUS NTAPI LsaEnumerateTrustedDomains(LSA_HANDLE PolicyHandle,PLSA_ENUMERATION_HANDLE EnumerationContext,PVOID *Buffer,ULONG PreferedMaximumLength,PULONG CountReturned); | |
| 492 NTSTATUS NTAPI LsaLookupNames(LSA_HANDLE PolicyHandle,ULONG Count,PLSA_UNICODE_STRING Names,PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,PLSA_TRANSLATED_SID *Sids); | |
| 493 NTSTATUS NTAPI LsaLookupNames2(LSA_HANDLE PolicyHandle,ULONG Flags,ULONG Count,PLSA_UNICODE_STRING Names,PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,PLSA_TRANSLATED_SID2 *Sids); | |
| 494 NTSTATUS NTAPI LsaLookupSids(LSA_HANDLE PolicyHandle,ULONG Count,PSID *Sids,PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,PLSA_TRANSLATED_NAME *Names); | |
| 495 | |
| 496 #define SE_INTERACTIVE_LOGON_NAME TEXT("SeInteractiveLogonRight") | |
| 497 #define SE_NETWORK_LOGON_NAME TEXT("SeNetworkLogonRight") | |
| 498 #define SE_BATCH_LOGON_NAME TEXT("SeBatchLogonRight") | |
| 499 #define SE_SERVICE_LOGON_NAME TEXT("SeServiceLogonRight") | |
| 500 #define SE_DENY_INTERACTIVE_LOGON_NAME TEXT("SeDenyInteractiveLogonRight") | |
| 501 #define SE_DENY_NETWORK_LOGON_NAME TEXT("SeDenyNetworkLogonRight") | |
| 502 #define SE_DENY_BATCH_LOGON_NAME TEXT("SeDenyBatchLogonRight") | |
| 503 #define SE_DENY_SERVICE_LOGON_NAME TEXT("SeDenyServiceLogonRight") | |
| 504 #define SE_REMOTE_INTERACTIVE_LOGON_NAME TEXT("SeRemoteInteractiveLogonRight") | |
| 505 #define SE_DENY_REMOTE_INTERACTIVE_LOGON_NAME TEXT("SeDenyRemoteInteractiveLogonRight") | |
| 506 | |
| 507 NTSTATUS NTAPI LsaEnumerateAccountsWithUserRight(LSA_HANDLE PolicyHandle,PLSA_UNICODE_STRING UserRight,PVOID *Buffer,PULONG CountReturned); | |
| 508 NTSTATUS NTAPI LsaEnumerateAccountRights(LSA_HANDLE PolicyHandle,PSID AccountSid,PLSA_UNICODE_STRING *UserRights,PULONG CountOfRights); | |
| 509 NTSTATUS NTAPI LsaAddAccountRights(LSA_HANDLE PolicyHandle,PSID AccountSid,PLSA_UNICODE_STRING UserRights,ULONG CountOfRights); | |
| 510 NTSTATUS NTAPI LsaRemoveAccountRights(LSA_HANDLE PolicyHandle,PSID AccountSid,BOOLEAN AllRights,PLSA_UNICODE_STRING UserRights,ULONG CountOfRights); | |
| 511 NTSTATUS NTAPI LsaOpenTrustedDomainByName(LSA_HANDLE PolicyHandle,PLSA_UNICODE_STRING TrustedDomainName,ACCESS_MASK DesiredAccess,PLSA_HANDLE TrustedDomainHandle); | |
| 512 NTSTATUS NTAPI LsaQueryTrustedDomainInfo(LSA_HANDLE PolicyHandle,PSID TrustedDomainSid,TRUSTED_INFORMATION_CLASS InformationClass,PVOID *Buffer); | |
| 513 NTSTATUS NTAPI LsaSetTrustedDomainInformation(LSA_HANDLE PolicyHandle,PSID TrustedDomainSid,TRUSTED_INFORMATION_CLASS InformationClass,PVOID Buffer); | |
| 514 NTSTATUS NTAPI LsaDeleteTrustedDomain(LSA_HANDLE PolicyHandle,PSID TrustedDomainSid); | |
| 515 NTSTATUS NTAPI LsaQueryTrustedDomainInfoByName(LSA_HANDLE PolicyHandle,PLSA_UNICODE_STRING TrustedDomainName,TRUSTED_INFORMATION_CLASS InformationClass,PVOID *Buffer); | |
| 516 NTSTATUS NTAPI LsaSetTrustedDomainInfoByName(LSA_HANDLE PolicyHandle,PLSA_UNICODE_STRING TrustedDomainName,TRUSTED_INFORMATION_CLASS InformationClass,PVOID Buffer); | |
| 517 NTSTATUS NTAPI LsaEnumerateTrustedDomainsEx(LSA_HANDLE PolicyHandle,PLSA_ENUMERATION_HANDLE EnumerationContext,PVOID *Buffer,ULONG PreferedMaximumLength,PULONG CountReturned); | |
| 518 NTSTATUS NTAPI LsaCreateTrustedDomainEx(LSA_HANDLE PolicyHandle,PTRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation,PTRUSTED_DOMAIN_AUTH_INFORMATION AuthenticationInformation,ACCESS_MASK DesiredAccess,PLSA_HANDLE TrustedDomainHandle); | |
| 519 NTSTATUS NTAPI LsaQueryForestTrustInformation(LSA_HANDLE PolicyHandle,PLSA_UNICODE_STRING TrustedDomainName,PLSA_FOREST_TRUST_INFORMATION *ForestTrustInfo); | |
| 520 NTSTATUS NTAPI LsaSetForestTrustInformation(LSA_HANDLE PolicyHandle,PLSA_UNICODE_STRING TrustedDomainName,PLSA_FOREST_TRUST_INFORMATION ForestTrustInfo,BOOLEAN CheckOnly,PLSA_FOREST_TRUST_COLLISION_INFORMATION *CollisionInfo); | |
| 521 | |
| 522 #ifdef TESTING_MATCHING_ROUTINE | |
| 523 NTSTATUS NTAPI LsaForestTrustFindMatch(LSA_HANDLE PolicyHandle,ULONG Type,PLSA_UNICODE_STRING Name,PLSA_UNICODE_STRING *Match); | |
| 524 #endif | |
| 525 | |
| 526 NTSTATUS NTAPI LsaStorePrivateData(LSA_HANDLE PolicyHandle,PLSA_UNICODE_STRING KeyName,PLSA_UNICODE_STRING PrivateData); | |
| 527 NTSTATUS NTAPI LsaRetrievePrivateData(LSA_HANDLE PolicyHandle,PLSA_UNICODE_STRING KeyName,PLSA_UNICODE_STRING *PrivateData); | |
| 528 ULONG NTAPI LsaNtStatusToWinError(NTSTATUS Status); | |
| 529 | |
| 530 #ifndef _NTLSA_IFS_ | |
| 531 #define _NTLSA_IFS_ | |
| 532 #endif | |
| 533 | |
| 534 enum NEGOTIATE_MESSAGES { | |
| 535 NegEnumPackagePrefixes = 0,NegGetCallerName = 1,NegCallPackageMax | |
| 536 }; | |
| 537 | |
| 538 #define NEGOTIATE_MAX_PREFIX 32 | |
| 539 | |
| 540 typedef struct _NEGOTIATE_PACKAGE_PREFIX { | |
| 541 ULONG_PTR PackageId; | |
| 542 PVOID PackageDataA; | |
| 543 PVOID PackageDataW; | |
| 544 ULONG_PTR PrefixLen; | |
| 545 UCHAR Prefix[NEGOTIATE_MAX_PREFIX ]; | |
| 546 } NEGOTIATE_PACKAGE_PREFIX,*PNEGOTIATE_PACKAGE_PREFIX; | |
| 547 | |
| 548 typedef struct _NEGOTIATE_PACKAGE_PREFIXES { | |
| 549 ULONG MessageType; | |
| 550 ULONG PrefixCount; | |
| 551 ULONG Offset; | |
| 552 ULONG Pad; | |
| 553 } NEGOTIATE_PACKAGE_PREFIXES,*PNEGOTIATE_PACKAGE_PREFIXES; | |
| 554 | |
| 555 typedef struct _NEGOTIATE_CALLER_NAME_REQUEST { | |
| 556 ULONG MessageType; | |
| 557 LUID LogonId; | |
| 558 } NEGOTIATE_CALLER_NAME_REQUEST,*PNEGOTIATE_CALLER_NAME_REQUEST; | |
| 559 | |
| 560 typedef struct _NEGOTIATE_CALLER_NAME_RESPONSE { | |
| 561 ULONG MessageType; | |
| 562 PWSTR CallerName; | |
| 563 } NEGOTIATE_CALLER_NAME_RESPONSE,*PNEGOTIATE_CALLER_NAME_RESPONSE; | |
| 564 | |
| 565 #ifndef _NTDEF_ | |
| 566 #ifndef __UNICODE_STRING_DEFINED | |
| 567 #define __UNICODE_STRING_DEFINED | |
| 568 typedef LSA_UNICODE_STRING UNICODE_STRING,*PUNICODE_STRING; | |
| 569 #endif | |
| 570 #ifndef __STRING_DEFINED | |
| 571 #define __STRING_DEFINED | |
| 572 typedef LSA_STRING STRING,*PSTRING; | |
| 573 #endif | |
| 574 #endif | |
| 575 | |
| 576 #ifndef _DOMAIN_PASSWORD_INFORMATION_DEFINED | |
| 577 #define _DOMAIN_PASSWORD_INFORMATION_DEFINED | |
| 578 typedef struct _DOMAIN_PASSWORD_INFORMATION { | |
| 579 USHORT MinPasswordLength; | |
| 580 USHORT PasswordHistoryLength; | |
| 581 ULONG PasswordProperties; | |
| 582 LARGE_INTEGER MaxPasswordAge; | |
| 583 LARGE_INTEGER MinPasswordAge; | |
| 584 } DOMAIN_PASSWORD_INFORMATION,*PDOMAIN_PASSWORD_INFORMATION; | |
| 585 #endif | |
| 586 | |
| 587 #define DOMAIN_PASSWORD_COMPLEX 0x00000001L | |
| 588 #define DOMAIN_PASSWORD_NO_ANON_CHANGE 0x00000002L | |
| 589 #define DOMAIN_PASSWORD_NO_CLEAR_CHANGE 0x00000004L | |
| 590 #define DOMAIN_LOCKOUT_ADMINS 0x00000008L | |
| 591 #define DOMAIN_PASSWORD_STORE_CLEARTEXT 0x00000010L | |
| 592 #define DOMAIN_REFUSE_PASSWORD_CHANGE 0x00000020L | |
| 593 | |
| 594 #ifndef _PASSWORD_NOTIFICATION_DEFINED | |
| 595 #define _PASSWORD_NOTIFICATION_DEFINED | |
| 596 typedef NTSTATUS (*PSAM_PASSWORD_NOTIFICATION_ROUTINE)(PUNICODE_STRING UserName,ULONG RelativeId,PUNICODE_STRING NewPassword); | |
| 597 | |
| 598 #define SAM_PASSWORD_CHANGE_NOTIFY_ROUTINE "PasswordChangeNotify" | |
| 599 | |
| 600 typedef BOOLEAN (*PSAM_INIT_NOTIFICATION_ROUTINE)(); | |
| 601 | |
| 602 #define SAM_INIT_NOTIFICATION_ROUTINE "InitializeChangeNotify" | |
| 603 #define SAM_PASSWORD_FILTER_ROUTINE "PasswordFilter" | |
| 604 | |
| 605 typedef BOOLEAN (*PSAM_PASSWORD_FILTER_ROUTINE)(PUNICODE_STRING AccountName,PUNICODE_STRING FullName,PUNICODE_STRING Password,BOOLEAN SetOperation); | |
| 606 #endif | |
| 607 | |
| 608 #define MSV1_0_PACKAGE_NAME "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0" | |
| 609 #define MSV1_0_PACKAGE_NAMEW L"MICROSOFT_AUTHENTICATION_PACKAGE_V1_0" | |
| 610 #define MSV1_0_PACKAGE_NAMEW_LENGTH sizeof(MSV1_0_PACKAGE_NAMEW) - sizeof(WCHAR) | |
| 611 | |
| 612 #define MSV1_0_SUBAUTHENTICATION_KEY "SYSTEM\\CurrentControlSet\\Control\\Lsa\\MSV1_0" | |
| 613 #define MSV1_0_SUBAUTHENTICATION_VALUE "Auth" | |
| 614 | |
| 615 typedef enum _MSV1_0_LOGON_SUBMIT_TYPE { | |
| 616 MsV1_0InteractiveLogon = 2,MsV1_0Lm20Logon,MsV1_0NetworkLogon,MsV1_0SubAuthLogon,MsV1_0WorkstationUnlockLogon = 7 | |
| 617 } MSV1_0_LOGON_SUBMIT_TYPE,*PMSV1_0_LOGON_SUBMIT_TYPE; | |
| 618 | |
| 619 typedef enum _MSV1_0_PROFILE_BUFFER_TYPE { | |
| 620 MsV1_0InteractiveProfile = 2,MsV1_0Lm20LogonProfile,MsV1_0SmartCardProfile | |
| 621 } MSV1_0_PROFILE_BUFFER_TYPE,*PMSV1_0_PROFILE_BUFFER_TYPE; | |
| 622 | |
| 623 typedef struct _MSV1_0_INTERACTIVE_LOGON { | |
| 624 MSV1_0_LOGON_SUBMIT_TYPE MessageType; | |
| 625 UNICODE_STRING LogonDomainName; | |
| 626 UNICODE_STRING UserName; | |
| 627 UNICODE_STRING Password; | |
| 628 } MSV1_0_INTERACTIVE_LOGON,*PMSV1_0_INTERACTIVE_LOGON; | |
| 629 | |
| 630 typedef struct _MSV1_0_INTERACTIVE_PROFILE { | |
| 631 MSV1_0_PROFILE_BUFFER_TYPE MessageType; | |
| 632 USHORT LogonCount; | |
| 633 USHORT BadPasswordCount; | |
| 634 LARGE_INTEGER LogonTime; | |
| 635 LARGE_INTEGER LogoffTime; | |
| 636 LARGE_INTEGER KickOffTime; | |
| 637 LARGE_INTEGER PasswordLastSet; | |
| 638 LARGE_INTEGER PasswordCanChange; | |
| 639 LARGE_INTEGER PasswordMustChange; | |
| 640 UNICODE_STRING LogonScript; | |
| 641 UNICODE_STRING HomeDirectory; | |
| 642 UNICODE_STRING FullName; | |
| 643 UNICODE_STRING ProfilePath; | |
| 644 UNICODE_STRING HomeDirectoryDrive; | |
| 645 UNICODE_STRING LogonServer; | |
| 646 ULONG UserFlags; | |
| 647 } MSV1_0_INTERACTIVE_PROFILE,*PMSV1_0_INTERACTIVE_PROFILE; | |
| 648 | |
| 649 #define MSV1_0_CHALLENGE_LENGTH 8 | |
| 650 #define MSV1_0_USER_SESSION_KEY_LENGTH 16 | |
| 651 #define MSV1_0_LANMAN_SESSION_KEY_LENGTH 8 | |
| 652 | |
| 653 #define MSV1_0_CLEARTEXT_PASSWORD_ALLOWED 0x02 | |
| 654 #define MSV1_0_UPDATE_LOGON_STATISTICS 0x04 | |
| 655 #define MSV1_0_RETURN_USER_PARAMETERS 0x08 | |
| 656 #define MSV1_0_DONT_TRY_GUEST_ACCOUNT 0x10 | |
| 657 #define MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT 0x20 | |
| 658 #define MSV1_0_RETURN_PASSWORD_EXPIRY 0x40 | |
| 659 | |
| 660 #define MSV1_0_USE_CLIENT_CHALLENGE 0x80 | |
| 661 #define MSV1_0_TRY_GUEST_ACCOUNT_ONLY 0x100 | |
| 662 #define MSV1_0_RETURN_PROFILE_PATH 0x200 | |
| 663 #define MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY 0x400 | |
| 664 #define MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT 0x800 | |
| 665 #define MSV1_0_DISABLE_PERSONAL_FALLBACK 0x00001000 | |
| 666 #define MSV1_0_ALLOW_FORCE_GUEST 0x00002000 | |
| 667 #define MSV1_0_CLEARTEXT_PASSWORD_SUPPLIED 0x00004000 | |
| 668 #define MSV1_0_USE_DOMAIN_FOR_ROUTING_ONLY 0x00008000 | |
| 669 #define MSV1_0_SUBAUTHENTICATION_DLL_EX 0x00100000 | |
| 670 #define MSV1_0_ALLOW_MSVCHAPV2 0x00010000 | |
| 671 | |
| 672 #define MSV1_0_SUBAUTHENTICATION_DLL 0xFF000000 | |
| 673 #define MSV1_0_SUBAUTHENTICATION_DLL_SHIFT 24 | |
| 674 #define MSV1_0_MNS_LOGON 0x01000000 | |
| 675 | |
| 676 #define MSV1_0_SUBAUTHENTICATION_DLL_RAS 2 | |
| 677 #define MSV1_0_SUBAUTHENTICATION_DLL_IIS 132 | |
| 678 | |
| 679 typedef struct _MSV1_0_LM20_LOGON { | |
| 680 MSV1_0_LOGON_SUBMIT_TYPE MessageType; | |
| 681 UNICODE_STRING LogonDomainName; | |
| 682 UNICODE_STRING UserName; | |
| 683 UNICODE_STRING Workstation; | |
| 684 UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH]; | |
| 685 STRING CaseSensitiveChallengeResponse; | |
| 686 STRING CaseInsensitiveChallengeResponse; | |
| 687 ULONG ParameterControl; | |
| 688 } MSV1_0_LM20_LOGON,*PMSV1_0_LM20_LOGON; | |
| 689 | |
| 690 typedef struct _MSV1_0_SUBAUTH_LOGON{ | |
| 691 MSV1_0_LOGON_SUBMIT_TYPE MessageType; | |
| 692 UNICODE_STRING LogonDomainName; | |
| 693 UNICODE_STRING UserName; | |
| 694 UNICODE_STRING Workstation; | |
| 695 UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH]; | |
| 696 STRING AuthenticationInfo1; | |
| 697 STRING AuthenticationInfo2; | |
| 698 ULONG ParameterControl; | |
| 699 ULONG SubAuthPackageId; | |
| 700 } MSV1_0_SUBAUTH_LOGON,*PMSV1_0_SUBAUTH_LOGON; | |
| 701 | |
| 702 #define LOGON_GUEST 0x01 | |
| 703 #define LOGON_NOENCRYPTION 0x02 | |
| 704 #define LOGON_CACHED_ACCOUNT 0x04 | |
| 705 #define LOGON_USED_LM_PASSWORD 0x08 | |
| 706 #define LOGON_EXTRA_SIDS 0x20 | |
| 707 #define LOGON_SUBAUTH_SESSION_KEY 0x40 | |
| 708 #define LOGON_SERVER_TRUST_ACCOUNT 0x80 | |
| 709 #define LOGON_NTLMV2_ENABLED 0x100 | |
| 710 #define LOGON_RESOURCE_GROUPS 0x200 | |
| 711 #define LOGON_PROFILE_PATH_RETURNED 0x400 | |
| 712 | |
| 713 #define MSV1_0_SUBAUTHENTICATION_FLAGS 0xFF000000 | |
| 714 | |
| 715 #define LOGON_GRACE_LOGON 0x01000000 | |
| 716 | |
| 717 typedef struct _MSV1_0_LM20_LOGON_PROFILE { | |
| 718 MSV1_0_PROFILE_BUFFER_TYPE MessageType; | |
| 719 LARGE_INTEGER KickOffTime; | |
| 720 LARGE_INTEGER LogoffTime; | |
| 721 ULONG UserFlags; | |
| 722 UCHAR UserSessionKey[MSV1_0_USER_SESSION_KEY_LENGTH]; | |
| 723 UNICODE_STRING LogonDomainName; | |
| 724 UCHAR LanmanSessionKey[MSV1_0_LANMAN_SESSION_KEY_LENGTH]; | |
| 725 UNICODE_STRING LogonServer; | |
| 726 UNICODE_STRING UserParameters; | |
| 727 } MSV1_0_LM20_LOGON_PROFILE,*PMSV1_0_LM20_LOGON_PROFILE; | |
| 728 | |
| 729 #define MSV1_0_OWF_PASSWORD_LENGTH 16 | |
| 730 #define MSV1_0_CRED_LM_PRESENT 0x1 | |
| 731 #define MSV1_0_CRED_NT_PRESENT 0x2 | |
| 732 #define MSV1_0_CRED_VERSION 0 | |
| 733 | |
| 734 typedef struct _MSV1_0_SUPPLEMENTAL_CREDENTIAL { | |
| 735 ULONG Version; | |
| 736 ULONG Flags; | |
| 737 UCHAR LmPassword[MSV1_0_OWF_PASSWORD_LENGTH]; | |
| 738 UCHAR NtPassword[MSV1_0_OWF_PASSWORD_LENGTH]; | |
| 739 } MSV1_0_SUPPLEMENTAL_CREDENTIAL,*PMSV1_0_SUPPLEMENTAL_CREDENTIAL; | |
| 740 | |
| 741 #define MSV1_0_NTLM3_RESPONSE_LENGTH 16 | |
| 742 #define MSV1_0_NTLM3_OWF_LENGTH 16 | |
| 743 | |
| 744 #define MSV1_0_MAX_NTLM3_LIFE 129600 | |
| 745 #define MSV1_0_MAX_AVL_SIZE 64000 | |
| 746 | |
| 747 #define MSV1_0_AV_FLAG_FORCE_GUEST 0x00000001 | |
| 748 | |
| 749 typedef struct _MSV1_0_NTLM3_RESPONSE { | |
| 750 UCHAR Response[MSV1_0_NTLM3_RESPONSE_LENGTH]; | |
| 751 UCHAR RespType; | |
| 752 UCHAR HiRespType; | |
| 753 USHORT Flags; | |
| 754 ULONG MsgWord; | |
| 755 ULONGLONG TimeStamp; | |
| 756 UCHAR ChallengeFromClient[MSV1_0_CHALLENGE_LENGTH]; | |
| 757 ULONG AvPairsOff; | |
| 758 UCHAR Buffer[1]; | |
| 759 } MSV1_0_NTLM3_RESPONSE,*PMSV1_0_NTLM3_RESPONSE; | |
| 760 | |
| 761 #define MSV1_0_NTLM3_INPUT_LENGTH (sizeof(MSV1_0_NTLM3_RESPONSE) - MSV1_0_NTLM3_RESPONSE_LENGTH) | |
| 762 #define MSV1_0_NTLM3_MIN_NT_RESPONSE_LENGTH RTL_SIZEOF_THROUGH_FIELD(MSV1_0_NTLM3_RESPONSE,AvPairsOff) | |
| 763 | |
| 764 typedef enum { | |
| 765 MsvAvEOL,MsvAvNbComputerName,MsvAvNbDomainName,MsvAvDnsComputerName,MsvAvDnsDomainName,MsvAvDnsTreeName,MsvAvFlags | |
| 766 } MSV1_0_AVID; | |
| 767 | |
| 768 typedef struct _MSV1_0_AV_PAIR { | |
| 769 USHORT AvId; | |
| 770 USHORT AvLen; | |
| 771 | |
| 772 } MSV1_0_AV_PAIR,*PMSV1_0_AV_PAIR; | |
| 773 | |
| 774 typedef enum _MSV1_0_PROTOCOL_MESSAGE_TYPE { | |
| 775 MsV1_0Lm20ChallengeRequest = 0,MsV1_0Lm20GetChallengeResponse,MsV1_0EnumerateUsers,MsV1_0GetUserInfo,MsV1_0ReLogonUsers,MsV1_0ChangePassword, | |
| 776 MsV1_0ChangeCachedPassword,MsV1_0GenericPassthrough,MsV1_0CacheLogon,MsV1_0SubAuth,MsV1_0DeriveCredential,MsV1_0CacheLookup, | |
| 777 MsV1_0SetProcessOption | |
| 778 } MSV1_0_PROTOCOL_MESSAGE_TYPE,*PMSV1_0_PROTOCOL_MESSAGE_TYPE; | |
| 779 | |
| 780 typedef struct _MSV1_0_CHANGEPASSWORD_REQUEST { | |
| 781 MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; | |
| 782 UNICODE_STRING DomainName; | |
| 783 UNICODE_STRING AccountName; | |
| 784 UNICODE_STRING OldPassword; | |
| 785 UNICODE_STRING NewPassword; | |
| 786 BOOLEAN Impersonating; | |
| 787 } MSV1_0_CHANGEPASSWORD_REQUEST,*PMSV1_0_CHANGEPASSWORD_REQUEST; | |
| 788 | |
| 789 typedef struct _MSV1_0_CHANGEPASSWORD_RESPONSE { | |
| 790 MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; | |
| 791 BOOLEAN PasswordInfoValid; | |
| 792 DOMAIN_PASSWORD_INFORMATION DomainPasswordInfo; | |
| 793 } MSV1_0_CHANGEPASSWORD_RESPONSE,*PMSV1_0_CHANGEPASSWORD_RESPONSE; | |
| 794 | |
| 795 typedef struct _MSV1_0_PASSTHROUGH_REQUEST { | |
| 796 MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; | |
| 797 UNICODE_STRING DomainName; | |
| 798 UNICODE_STRING PackageName; | |
| 799 ULONG DataLength; | |
| 800 PUCHAR LogonData; | |
| 801 ULONG Pad; | |
| 802 } MSV1_0_PASSTHROUGH_REQUEST,*PMSV1_0_PASSTHROUGH_REQUEST; | |
| 803 | |
| 804 typedef struct _MSV1_0_PASSTHROUGH_RESPONSE { | |
| 805 MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; | |
| 806 ULONG Pad; | |
| 807 ULONG DataLength; | |
| 808 PUCHAR ValidationData; | |
| 809 } MSV1_0_PASSTHROUGH_RESPONSE,*PMSV1_0_PASSTHROUGH_RESPONSE; | |
| 810 | |
| 811 typedef struct _MSV1_0_SUBAUTH_REQUEST{ | |
| 812 MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; | |
| 813 ULONG SubAuthPackageId; | |
| 814 ULONG SubAuthInfoLength; | |
| 815 PUCHAR SubAuthSubmitBuffer; | |
| 816 } MSV1_0_SUBAUTH_REQUEST,*PMSV1_0_SUBAUTH_REQUEST; | |
| 817 | |
| 818 typedef struct _MSV1_0_SUBAUTH_RESPONSE{ | |
| 819 MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; | |
| 820 ULONG SubAuthInfoLength; | |
| 821 PUCHAR SubAuthReturnBuffer; | |
| 822 } MSV1_0_SUBAUTH_RESPONSE,*PMSV1_0_SUBAUTH_RESPONSE; | |
| 823 | |
| 824 #define RtlGenRandom SystemFunction036 | |
| 825 #define RtlEncryptMemory SystemFunction040 | |
| 826 #define RtlDecryptMemory SystemFunction041 | |
| 827 | |
| 828 BOOLEAN RtlGenRandom(PVOID RandomBuffer,ULONG RandomBufferLength); | |
| 829 | |
| 830 #define RTL_ENCRYPT_MEMORY_SIZE 8 | |
| 831 #define RTL_ENCRYPT_OPTION_CROSS_PROCESS 0x01 | |
| 832 #define RTL_ENCRYPT_OPTION_SAME_LOGON 0x02 | |
| 833 | |
| 834 NTSTATUS RtlEncryptMemory(PVOID Memory,ULONG MemorySize,ULONG OptionFlags); | |
| 835 NTSTATUS RtlDecryptMemory(PVOID Memory,ULONG MemorySize,ULONG OptionFlags); | |
| 836 | |
| 837 #define KERBEROS_VERSION 5 | |
| 838 #define KERBEROS_REVISION 6 | |
| 839 | |
| 840 #define KERB_ETYPE_NULL 0 | |
| 841 #define KERB_ETYPE_DES_CBC_CRC 1 | |
| 842 #define KERB_ETYPE_DES_CBC_MD4 2 | |
| 843 #define KERB_ETYPE_DES_CBC_MD5 3 | |
| 844 | |
| 845 #define KERB_ETYPE_RC4_MD4 -128 | |
| 846 #define KERB_ETYPE_RC4_PLAIN2 -129 | |
| 847 #define KERB_ETYPE_RC4_LM -130 | |
| 848 #define KERB_ETYPE_RC4_SHA -131 | |
| 849 #define KERB_ETYPE_DES_PLAIN -132 | |
| 850 #define KERB_ETYPE_RC4_HMAC_OLD -133 | |
| 851 #define KERB_ETYPE_RC4_PLAIN_OLD -134 | |
| 852 #define KERB_ETYPE_RC4_HMAC_OLD_EXP -135 | |
| 853 #define KERB_ETYPE_RC4_PLAIN_OLD_EXP -136 | |
| 854 #define KERB_ETYPE_RC4_PLAIN -140 | |
| 855 #define KERB_ETYPE_RC4_PLAIN_EXP -141 | |
| 856 | |
| 857 #define KERB_ETYPE_DSA_SHA1_CMS 9 | |
| 858 #define KERB_ETYPE_RSA_MD5_CMS 10 | |
| 859 #define KERB_ETYPE_RSA_SHA1_CMS 11 | |
| 860 #define KERB_ETYPE_RC2_CBC_ENV 12 | |
| 861 #define KERB_ETYPE_RSA_ENV 13 | |
| 862 #define KERB_ETYPE_RSA_ES_OEAP_ENV 14 | |
| 863 #define KERB_ETYPE_DES_EDE3_CBC_ENV 15 | |
| 864 | |
| 865 #define KERB_ETYPE_DSA_SIGN 8 | |
| 866 #define KERB_ETYPE_RSA_PRIV 9 | |
| 867 #define KERB_ETYPE_RSA_PUB 10 | |
| 868 #define KERB_ETYPE_RSA_PUB_MD5 11 | |
| 869 #define KERB_ETYPE_RSA_PUB_SHA1 12 | |
| 870 #define KERB_ETYPE_PKCS7_PUB 13 | |
| 871 | |
| 872 #define KERB_ETYPE_DES3_CBC_MD5 5 | |
| 873 #define KERB_ETYPE_DES3_CBC_SHA1 7 | |
| 874 #define KERB_ETYPE_DES3_CBC_SHA1_KD 16 | |
| 875 | |
| 876 #define KERB_ETYPE_DES_CBC_MD5_NT 20 | |
| 877 #define KERB_ETYPE_RC4_HMAC_NT 23 | |
| 878 #define KERB_ETYPE_RC4_HMAC_NT_EXP 24 | |
| 879 | |
| 880 #define KERB_CHECKSUM_NONE 0 | |
| 881 #define KERB_CHECKSUM_CRC32 1 | |
| 882 #define KERB_CHECKSUM_MD4 2 | |
| 883 #define KERB_CHECKSUM_KRB_DES_MAC 4 | |
| 884 #define KERB_CHECKSUM_KRB_DES_MAC_K 5 | |
| 885 #define KERB_CHECKSUM_MD5 7 | |
| 886 #define KERB_CHECKSUM_MD5_DES 8 | |
| 887 | |
| 888 #define KERB_CHECKSUM_LM -130 | |
| 889 #define KERB_CHECKSUM_SHA1 -131 | |
| 890 #define KERB_CHECKSUM_REAL_CRC32 -132 | |
| 891 #define KERB_CHECKSUM_DES_MAC -133 | |
| 892 #define KERB_CHECKSUM_DES_MAC_MD5 -134 | |
| 893 #define KERB_CHECKSUM_MD25 -135 | |
| 894 #define KERB_CHECKSUM_RC4_MD5 -136 | |
| 895 #define KERB_CHECKSUM_MD5_HMAC -137 | |
| 896 #define KERB_CHECKSUM_HMAC_MD5 -138 | |
| 897 | |
| 898 #define AUTH_REQ_ALLOW_FORWARDABLE 0x00000001 | |
| 899 #define AUTH_REQ_ALLOW_PROXIABLE 0x00000002 | |
| 900 #define AUTH_REQ_ALLOW_POSTDATE 0x00000004 | |
| 901 #define AUTH_REQ_ALLOW_RENEWABLE 0x00000008 | |
| 902 #define AUTH_REQ_ALLOW_NOADDRESS 0x00000010 | |
| 903 #define AUTH_REQ_ALLOW_ENC_TKT_IN_SKEY 0x00000020 | |
| 904 #define AUTH_REQ_ALLOW_VALIDATE 0x00000040 | |
| 905 #define AUTH_REQ_VALIDATE_CLIENT 0x00000080 | |
| 906 #define AUTH_REQ_OK_AS_DELEGATE 0x00000100 | |
| 907 #define AUTH_REQ_PREAUTH_REQUIRED 0x00000200 | |
| 908 #define AUTH_REQ_TRANSITIVE_TRUST 0x00000400 | |
| 909 #define AUTH_REQ_ALLOW_S4U_DELEGATE 0x00000800 | |
| 910 | |
| 911 #define AUTH_REQ_PER_USER_FLAGS (AUTH_REQ_ALLOW_FORWARDABLE | AUTH_REQ_ALLOW_PROXIABLE | AUTH_REQ_ALLOW_POSTDATE | AUTH_REQ_ALLOW_RENEWABLE | AUTH_REQ_ALLOW_VALIDATE) | |
| 912 | |
| 913 #define KERB_TICKET_FLAGS_reserved 0x80000000 | |
| 914 #define KERB_TICKET_FLAGS_forwardable 0x40000000 | |
| 915 #define KERB_TICKET_FLAGS_forwarded 0x20000000 | |
| 916 #define KERB_TICKET_FLAGS_proxiable 0x10000000 | |
| 917 #define KERB_TICKET_FLAGS_proxy 0x08000000 | |
| 918 #define KERB_TICKET_FLAGS_may_postdate 0x04000000 | |
| 919 #define KERB_TICKET_FLAGS_postdated 0x02000000 | |
| 920 #define KERB_TICKET_FLAGS_invalid 0x01000000 | |
| 921 #define KERB_TICKET_FLAGS_renewable 0x00800000 | |
| 922 #define KERB_TICKET_FLAGS_initial 0x00400000 | |
| 923 #define KERB_TICKET_FLAGS_pre_authent 0x00200000 | |
| 924 #define KERB_TICKET_FLAGS_hw_authent 0x00100000 | |
| 925 #define KERB_TICKET_FLAGS_ok_as_delegate 0x00040000 | |
| 926 #define KERB_TICKET_FLAGS_name_canonicalize 0x00010000 | |
| 927 #define KERB_TICKET_FLAGS_reserved1 0x00000001 | |
| 928 | |
| 929 #define KRB_NT_UNKNOWN 0 | |
| 930 #define KRB_NT_PRINCIPAL 1 | |
| 931 #define KRB_NT_PRINCIPAL_AND_ID -131 | |
| 932 #define KRB_NT_SRV_INST 2 | |
| 933 #define KRB_NT_SRV_INST_AND_ID -132 | |
| 934 #define KRB_NT_SRV_HST 3 | |
| 935 #define KRB_NT_SRV_XHST 4 | |
| 936 #define KRB_NT_UID 5 | |
| 937 #define KRB_NT_ENTERPRISE_PRINCIPAL 10 | |
| 938 #define KRB_NT_ENT_PRINCIPAL_AND_ID -130 | |
| 939 #define KRB_NT_MS_PRINCIPAL -128 | |
| 940 #define KRB_NT_MS_PRINCIPAL_AND_ID -129 | |
| 941 | |
| 942 #define KERB_IS_MS_PRINCIPAL(_x_) (((_x_) <= KRB_NT_MS_PRINCIPAL) || ((_x_) >= KRB_NT_ENTERPRISE_PRINCIPAL)) | |
| 943 | |
| 944 #ifndef MICROSOFT_KERBEROS_NAME_A | |
| 945 | |
| 946 #define MICROSOFT_KERBEROS_NAME_A "Kerberos" | |
| 947 #define MICROSOFT_KERBEROS_NAME_W L"Kerberos" | |
| 948 #ifdef WIN32_CHICAGO | |
| 949 #define MICROSOFT_KERBEROS_NAME MICROSOFT_KERBEROS_NAME_A | |
| 950 #else | |
| 951 #define MICROSOFT_KERBEROS_NAME MICROSOFT_KERBEROS_NAME_W | |
| 952 #endif | |
| 953 #endif | |
| 954 | |
| 955 #define KERB_WRAP_NO_ENCRYPT 0x80000001 | |
| 956 | |
| 957 typedef enum _KERB_LOGON_SUBMIT_TYPE { | |
| 958 KerbInteractiveLogon = 2,KerbSmartCardLogon = 6,KerbWorkstationUnlockLogon = 7,KerbSmartCardUnlockLogon = 8,KerbProxyLogon = 9, | |
| 959 KerbTicketLogon = 10,KerbTicketUnlockLogon = 11,KerbS4ULogon = 12 | |
| 960 } KERB_LOGON_SUBMIT_TYPE,*PKERB_LOGON_SUBMIT_TYPE; | |
| 961 | |
| 962 typedef struct _KERB_INTERACTIVE_LOGON { | |
| 963 KERB_LOGON_SUBMIT_TYPE MessageType; | |
| 964 UNICODE_STRING LogonDomainName; | |
| 965 UNICODE_STRING UserName; | |
| 966 UNICODE_STRING Password; | |
| 967 } KERB_INTERACTIVE_LOGON,*PKERB_INTERACTIVE_LOGON; | |
| 968 | |
| 969 typedef struct _KERB_INTERACTIVE_UNLOCK_LOGON { | |
| 970 KERB_INTERACTIVE_LOGON Logon; | |
| 971 LUID LogonId; | |
| 972 } KERB_INTERACTIVE_UNLOCK_LOGON,*PKERB_INTERACTIVE_UNLOCK_LOGON; | |
| 973 | |
| 974 typedef struct _KERB_SMART_CARD_LOGON { | |
| 975 KERB_LOGON_SUBMIT_TYPE MessageType; | |
| 976 UNICODE_STRING Pin; | |
| 977 ULONG CspDataLength; | |
| 978 PUCHAR CspData; | |
| 979 } KERB_SMART_CARD_LOGON,*PKERB_SMART_CARD_LOGON; | |
| 980 | |
| 981 typedef struct _KERB_SMART_CARD_UNLOCK_LOGON { | |
| 982 KERB_SMART_CARD_LOGON Logon; | |
| 983 LUID LogonId; | |
| 984 } KERB_SMART_CARD_UNLOCK_LOGON,*PKERB_SMART_CARD_UNLOCK_LOGON; | |
| 985 | |
| 986 typedef struct _KERB_TICKET_LOGON { | |
| 987 KERB_LOGON_SUBMIT_TYPE MessageType; | |
| 988 ULONG Flags; | |
| 989 ULONG ServiceTicketLength; | |
| 990 ULONG TicketGrantingTicketLength; | |
| 991 PUCHAR ServiceTicket; | |
| 992 PUCHAR TicketGrantingTicket; | |
| 993 } KERB_TICKET_LOGON,*PKERB_TICKET_LOGON; | |
| 994 | |
| 995 #define KERB_LOGON_FLAG_ALLOW_EXPIRED_TICKET 0x1 | |
| 996 | |
| 997 typedef struct _KERB_TICKET_UNLOCK_LOGON { | |
| 998 KERB_TICKET_LOGON Logon; | |
| 999 LUID LogonId; | |
| 1000 } KERB_TICKET_UNLOCK_LOGON,*PKERB_TICKET_UNLOCK_LOGON; | |
| 1001 | |
| 1002 typedef struct _KERB_S4U_LOGON { | |
| 1003 KERB_LOGON_SUBMIT_TYPE MessageType; | |
| 1004 ULONG Flags; | |
| 1005 UNICODE_STRING ClientUpn; | |
| 1006 UNICODE_STRING ClientRealm; | |
| 1007 } KERB_S4U_LOGON,*PKERB_S4U_LOGON; | |
| 1008 | |
| 1009 typedef enum _KERB_PROFILE_BUFFER_TYPE { | |
| 1010 KerbInteractiveProfile = 2,KerbSmartCardProfile = 4,KerbTicketProfile = 6 | |
| 1011 } KERB_PROFILE_BUFFER_TYPE,*PKERB_PROFILE_BUFFER_TYPE; | |
| 1012 | |
| 1013 typedef struct _KERB_INTERACTIVE_PROFILE { | |
| 1014 KERB_PROFILE_BUFFER_TYPE MessageType; | |
| 1015 USHORT LogonCount; | |
| 1016 USHORT BadPasswordCount; | |
| 1017 LARGE_INTEGER LogonTime; | |
| 1018 LARGE_INTEGER LogoffTime; | |
| 1019 LARGE_INTEGER KickOffTime; | |
| 1020 LARGE_INTEGER PasswordLastSet; | |
| 1021 LARGE_INTEGER PasswordCanChange; | |
| 1022 LARGE_INTEGER PasswordMustChange; | |
| 1023 UNICODE_STRING LogonScript; | |
| 1024 UNICODE_STRING HomeDirectory; | |
| 1025 UNICODE_STRING FullName; | |
| 1026 UNICODE_STRING ProfilePath; | |
| 1027 UNICODE_STRING HomeDirectoryDrive; | |
| 1028 UNICODE_STRING LogonServer; | |
| 1029 ULONG UserFlags; | |
| 1030 } KERB_INTERACTIVE_PROFILE,*PKERB_INTERACTIVE_PROFILE; | |
| 1031 | |
| 1032 typedef struct _KERB_SMART_CARD_PROFILE { | |
| 1033 KERB_INTERACTIVE_PROFILE Profile; | |
| 1034 ULONG CertificateSize; | |
| 1035 PUCHAR CertificateData; | |
| 1036 } KERB_SMART_CARD_PROFILE,*PKERB_SMART_CARD_PROFILE; | |
| 1037 | |
| 1038 typedef struct KERB_CRYPTO_KEY { | |
| 1039 LONG KeyType; | |
| 1040 ULONG Length; | |
| 1041 PUCHAR Value; | |
| 1042 } KERB_CRYPTO_KEY,*PKERB_CRYPTO_KEY; | |
| 1043 | |
| 1044 typedef struct _KERB_TICKET_PROFILE { | |
| 1045 KERB_INTERACTIVE_PROFILE Profile; | |
| 1046 KERB_CRYPTO_KEY SessionKey; | |
| 1047 } KERB_TICKET_PROFILE,*PKERB_TICKET_PROFILE; | |
| 1048 | |
| 1049 typedef enum _KERB_PROTOCOL_MESSAGE_TYPE { | |
| 1050 KerbDebugRequestMessage = 0,KerbQueryTicketCacheMessage,KerbChangeMachinePasswordMessage,KerbVerifyPacMessage,KerbRetrieveTicketMessage, | |
| 1051 KerbUpdateAddressesMessage,KerbPurgeTicketCacheMessage,KerbChangePasswordMessage,KerbRetrieveEncodedTicketMessage,KerbDecryptDataMessage, | |
| 1052 KerbAddBindingCacheEntryMessage,KerbSetPasswordMessage,KerbSetPasswordExMessage,KerbVerifyCredentialsMessage,KerbQueryTicketCacheExMessage, | |
| 1053 KerbPurgeTicketCacheExMessage,KerbRefreshSmartcardCredentialsMessage,KerbAddExtraCredentialsMessage,KerbQuerySupplementalCredentialsMessage, | |
| 1054 KerbTransferCredentialsMessage,KerbQueryTicketCacheEx2Message | |
| 1055 } KERB_PROTOCOL_MESSAGE_TYPE,*PKERB_PROTOCOL_MESSAGE_TYPE; | |
| 1056 | |
| 1057 typedef struct _KERB_QUERY_TKT_CACHE_REQUEST { | |
| 1058 KERB_PROTOCOL_MESSAGE_TYPE MessageType; | |
| 1059 LUID LogonId; | |
| 1060 } KERB_QUERY_TKT_CACHE_REQUEST,*PKERB_QUERY_TKT_CACHE_REQUEST; | |
| 1061 | |
| 1062 typedef struct _KERB_TICKET_CACHE_INFO { | |
| 1063 UNICODE_STRING ServerName; | |
| 1064 UNICODE_STRING RealmName; | |
| 1065 LARGE_INTEGER StartTime; | |
| 1066 LARGE_INTEGER EndTime; | |
| 1067 LARGE_INTEGER RenewTime; | |
| 1068 LONG EncryptionType; | |
| 1069 ULONG TicketFlags; | |
| 1070 } KERB_TICKET_CACHE_INFO,*PKERB_TICKET_CACHE_INFO; | |
| 1071 | |
| 1072 typedef struct _KERB_TICKET_CACHE_INFO_EX { | |
| 1073 UNICODE_STRING ClientName; | |
| 1074 UNICODE_STRING ClientRealm; | |
| 1075 UNICODE_STRING ServerName; | |
| 1076 UNICODE_STRING ServerRealm; | |
| 1077 LARGE_INTEGER StartTime; | |
| 1078 LARGE_INTEGER EndTime; | |
| 1079 LARGE_INTEGER RenewTime; | |
| 1080 LONG EncryptionType; | |
| 1081 ULONG TicketFlags; | |
| 1082 } KERB_TICKET_CACHE_INFO_EX,*PKERB_TICKET_CACHE_INFO_EX; | |
| 1083 | |
| 1084 typedef struct _KERB_TICKET_CACHE_INFO_EX2 { | |
| 1085 UNICODE_STRING ClientName; | |
| 1086 UNICODE_STRING ClientRealm; | |
| 1087 UNICODE_STRING ServerName; | |
| 1088 UNICODE_STRING ServerRealm; | |
| 1089 LARGE_INTEGER StartTime; | |
| 1090 LARGE_INTEGER EndTime; | |
| 1091 LARGE_INTEGER RenewTime; | |
| 1092 LONG EncryptionType; | |
| 1093 ULONG TicketFlags; | |
| 1094 ULONG SessionKeyType; | |
| 1095 } KERB_TICKET_CACHE_INFO_EX2,*PKERB_TICKET_CACHE_INFO_EX2; | |
| 1096 | |
| 1097 typedef struct _KERB_QUERY_TKT_CACHE_RESPONSE { | |
| 1098 KERB_PROTOCOL_MESSAGE_TYPE MessageType; | |
| 1099 ULONG CountOfTickets; | |
| 1100 KERB_TICKET_CACHE_INFO Tickets[ANYSIZE_ARRAY]; | |
| 1101 } KERB_QUERY_TKT_CACHE_RESPONSE,*PKERB_QUERY_TKT_CACHE_RESPONSE; | |
| 1102 | |
| 1103 typedef struct _KERB_QUERY_TKT_CACHE_EX_RESPONSE { | |
| 1104 KERB_PROTOCOL_MESSAGE_TYPE MessageType; | |
| 1105 ULONG CountOfTickets; | |
| 1106 KERB_TICKET_CACHE_INFO_EX Tickets[ANYSIZE_ARRAY]; | |
| 1107 } KERB_QUERY_TKT_CACHE_EX_RESPONSE,*PKERB_QUERY_TKT_CACHE_EX_RESPONSE; | |
| 1108 | |
| 1109 typedef struct _KERB_QUERY_TKT_CACHE_EX2_RESPONSE { | |
| 1110 KERB_PROTOCOL_MESSAGE_TYPE MessageType; | |
| 1111 ULONG CountOfTickets; | |
| 1112 KERB_TICKET_CACHE_INFO_EX2 Tickets[ANYSIZE_ARRAY]; | |
| 1113 } KERB_QUERY_TKT_CACHE_EX2_RESPONSE,*PKERB_QUERY_TKT_CACHE_EX2_RESPONSE; | |
| 1114 | |
| 1115 #ifndef __SECHANDLE_DEFINED__ | |
| 1116 typedef struct _SecHandle { | |
| 1117 ULONG_PTR dwLower; | |
| 1118 ULONG_PTR dwUpper; | |
| 1119 } SecHandle,*PSecHandle; | |
| 1120 | |
| 1121 #define __SECHANDLE_DEFINED__ | |
| 1122 #endif | |
| 1123 | |
| 1124 #define KERB_USE_DEFAULT_TICKET_FLAGS 0x0 | |
| 1125 | |
| 1126 #define KERB_RETRIEVE_TICKET_DEFAULT 0x0 | |
| 1127 #define KERB_RETRIEVE_TICKET_DONT_USE_CACHE 0x1 | |
| 1128 #define KERB_RETRIEVE_TICKET_USE_CACHE_ONLY 0x2 | |
| 1129 #define KERB_RETRIEVE_TICKET_USE_CREDHANDLE 0x4 | |
| 1130 #define KERB_RETRIEVE_TICKET_AS_KERB_CRED 0x8 | |
| 1131 #define KERB_RETRIEVE_TICKET_WITH_SEC_CRED 0x10 | |
| 1132 #define KERB_RETRIEVE_TICKET_CACHE_TICKET 0x20 | |
| 1133 | |
| 1134 #define KERB_ETYPE_DEFAULT 0x0 | |
| 1135 | |
| 1136 typedef struct _KERB_AUTH_DATA { | |
| 1137 ULONG Type; | |
| 1138 ULONG Length; | |
| 1139 PUCHAR Data; | |
| 1140 } KERB_AUTH_DATA,*PKERB_AUTH_DATA; | |
| 1141 | |
| 1142 typedef struct _KERB_NET_ADDRESS { | |
| 1143 ULONG Family; | |
| 1144 ULONG Length; | |
| 1145 PCHAR Address; | |
| 1146 } KERB_NET_ADDRESS,*PKERB_NET_ADDRESS; | |
| 1147 | |
| 1148 typedef struct _KERB_NET_ADDRESSES { | |
| 1149 ULONG Number; | |
| 1150 KERB_NET_ADDRESS Addresses[ANYSIZE_ARRAY]; | |
| 1151 } KERB_NET_ADDRESSES,*PKERB_NET_ADDRESSES; | |
| 1152 | |
| 1153 typedef struct _KERB_EXTERNAL_NAME { | |
| 1154 SHORT NameType; | |
| 1155 USHORT NameCount; | |
| 1156 UNICODE_STRING Names[ANYSIZE_ARRAY]; | |
| 1157 } KERB_EXTERNAL_NAME,*PKERB_EXTERNAL_NAME; | |
| 1158 | |
| 1159 typedef struct _KERB_EXTERNAL_TICKET { | |
| 1160 PKERB_EXTERNAL_NAME ServiceName; | |
| 1161 PKERB_EXTERNAL_NAME TargetName; | |
| 1162 PKERB_EXTERNAL_NAME ClientName; | |
| 1163 UNICODE_STRING DomainName; | |
| 1164 UNICODE_STRING TargetDomainName; | |
| 1165 UNICODE_STRING AltTargetDomainName; | |
| 1166 KERB_CRYPTO_KEY SessionKey; | |
| 1167 ULONG TicketFlags; | |
| 1168 ULONG Flags; | |
| 1169 LARGE_INTEGER KeyExpirationTime; | |
| 1170 LARGE_INTEGER StartTime; | |
| 1171 LARGE_INTEGER EndTime; | |
| 1172 LARGE_INTEGER RenewUntil; | |
| 1173 LARGE_INTEGER TimeSkew; | |
| 1174 ULONG EncodedTicketSize; | |
| 1175 PUCHAR EncodedTicket; | |
| 1176 } KERB_EXTERNAL_TICKET,*PKERB_EXTERNAL_TICKET; | |
| 1177 | |
| 1178 typedef struct _KERB_RETRIEVE_TKT_REQUEST { | |
| 1179 KERB_PROTOCOL_MESSAGE_TYPE MessageType; | |
| 1180 LUID LogonId; | |
| 1181 UNICODE_STRING TargetName; | |
| 1182 ULONG TicketFlags; | |
| 1183 ULONG CacheOptions; | |
| 1184 LONG EncryptionType; | |
| 1185 SecHandle CredentialsHandle; | |
| 1186 } KERB_RETRIEVE_TKT_REQUEST,*PKERB_RETRIEVE_TKT_REQUEST; | |
| 1187 | |
| 1188 typedef struct _KERB_RETRIEVE_TKT_RESPONSE { | |
| 1189 KERB_EXTERNAL_TICKET Ticket; | |
| 1190 } KERB_RETRIEVE_TKT_RESPONSE,*PKERB_RETRIEVE_TKT_RESPONSE; | |
| 1191 | |
| 1192 typedef struct _KERB_PURGE_TKT_CACHE_REQUEST { | |
| 1193 KERB_PROTOCOL_MESSAGE_TYPE MessageType; | |
| 1194 LUID LogonId; | |
| 1195 UNICODE_STRING ServerName; | |
| 1196 UNICODE_STRING RealmName; | |
| 1197 } KERB_PURGE_TKT_CACHE_REQUEST,*PKERB_PURGE_TKT_CACHE_REQUEST; | |
| 1198 | |
| 1199 #define KERB_PURGE_ALL_TICKETS 1 | |
| 1200 | |
| 1201 typedef struct _KERB_PURGE_TKT_CACHE_EX_REQUEST { | |
| 1202 KERB_PROTOCOL_MESSAGE_TYPE MessageType; | |
| 1203 LUID LogonId; | |
| 1204 ULONG Flags; | |
| 1205 KERB_TICKET_CACHE_INFO_EX TicketTemplate; | |
| 1206 } KERB_PURGE_TKT_CACHE_EX_REQUEST,*PKERB_PURGE_TKT_CACHE_EX_REQUEST; | |
| 1207 | |
| 1208 typedef struct _KERB_CHANGEPASSWORD_REQUEST { | |
| 1209 KERB_PROTOCOL_MESSAGE_TYPE MessageType; | |
| 1210 UNICODE_STRING DomainName; | |
| 1211 UNICODE_STRING AccountName; | |
| 1212 UNICODE_STRING OldPassword; | |
| 1213 UNICODE_STRING NewPassword; | |
| 1214 BOOLEAN Impersonating; | |
| 1215 } KERB_CHANGEPASSWORD_REQUEST,*PKERB_CHANGEPASSWORD_REQUEST; | |
| 1216 | |
| 1217 typedef struct _KERB_SETPASSWORD_REQUEST { | |
| 1218 KERB_PROTOCOL_MESSAGE_TYPE MessageType; | |
| 1219 LUID LogonId; | |
| 1220 SecHandle CredentialsHandle; | |
| 1221 ULONG Flags; | |
| 1222 UNICODE_STRING DomainName; | |
| 1223 UNICODE_STRING AccountName; | |
| 1224 UNICODE_STRING Password; | |
| 1225 } KERB_SETPASSWORD_REQUEST,*PKERB_SETPASSWORD_REQUEST; | |
| 1226 | |
| 1227 typedef struct _KERB_SETPASSWORD_EX_REQUEST { | |
| 1228 KERB_PROTOCOL_MESSAGE_TYPE MessageType; | |
| 1229 LUID LogonId; | |
| 1230 SecHandle CredentialsHandle; | |
| 1231 ULONG Flags; | |
| 1232 UNICODE_STRING AccountRealm; | |
| 1233 UNICODE_STRING AccountName; | |
| 1234 UNICODE_STRING Password; | |
| 1235 UNICODE_STRING ClientRealm; | |
| 1236 UNICODE_STRING ClientName; | |
| 1237 BOOLEAN Impersonating; | |
| 1238 UNICODE_STRING KdcAddress; | |
| 1239 ULONG KdcAddressType; | |
| 1240 } KERB_SETPASSWORD_EX_REQUEST,*PKERB_SETPASSWORD_EX_REQUEST; | |
| 1241 | |
| 1242 #define DS_UNKNOWN_ADDRESS_TYPE 0 | |
| 1243 #define KERB_SETPASS_USE_LOGONID 1 | |
| 1244 #define KERB_SETPASS_USE_CREDHANDLE 2 | |
| 1245 | |
| 1246 typedef struct _KERB_DECRYPT_REQUEST { | |
| 1247 KERB_PROTOCOL_MESSAGE_TYPE MessageType; | |
| 1248 LUID LogonId; | |
| 1249 ULONG Flags; | |
| 1250 LONG CryptoType; | |
| 1251 LONG KeyUsage; | |
| 1252 KERB_CRYPTO_KEY Key; | |
| 1253 ULONG EncryptedDataSize; | |
| 1254 ULONG InitialVectorSize; | |
| 1255 PUCHAR InitialVector; | |
| 1256 PUCHAR EncryptedData; | |
| 1257 } KERB_DECRYPT_REQUEST,*PKERB_DECRYPT_REQUEST; | |
| 1258 | |
| 1259 #define KERB_DECRYPT_FLAG_DEFAULT_KEY 0x00000001 | |
| 1260 | |
| 1261 typedef struct _KERB_DECRYPT_RESPONSE { | |
| 1262 UCHAR DecryptedData[ANYSIZE_ARRAY]; | |
| 1263 } KERB_DECRYPT_RESPONSE,*PKERB_DECRYPT_RESPONSE; | |
| 1264 | |
| 1265 typedef struct _KERB_ADD_BINDING_CACHE_ENTRY_REQUEST { | |
| 1266 KERB_PROTOCOL_MESSAGE_TYPE MessageType; | |
| 1267 UNICODE_STRING RealmName; | |
| 1268 UNICODE_STRING KdcAddress; | |
| 1269 ULONG AddressType; | |
| 1270 } KERB_ADD_BINDING_CACHE_ENTRY_REQUEST,*PKERB_ADD_BINDING_CACHE_ENTRY_REQUEST; | |
| 1271 | |
| 1272 typedef struct _KERB_REFRESH_SCCRED_REQUEST { | |
| 1273 KERB_PROTOCOL_MESSAGE_TYPE MessageType; | |
| 1274 UNICODE_STRING CredentialBlob; | |
| 1275 LUID LogonId; | |
| 1276 ULONG Flags; | |
| 1277 } KERB_REFRESH_SCCRED_REQUEST,*PKERB_REFRESH_SCCRED_REQUEST; | |
| 1278 | |
| 1279 #define KERB_REFRESH_SCCRED_RELEASE 0x0 | |
| 1280 #define KERB_REFRESH_SCCRED_GETTGT 0x1 | |
| 1281 | |
| 1282 typedef struct _KERB_ADD_CREDENTIALS_REQUEST { | |
| 1283 KERB_PROTOCOL_MESSAGE_TYPE MessageType; | |
| 1284 UNICODE_STRING UserName; | |
| 1285 UNICODE_STRING DomainName; | |
| 1286 UNICODE_STRING Password; | |
| 1287 LUID LogonId; | |
| 1288 ULONG Flags; | |
| 1289 } KERB_ADD_CREDENTIALS_REQUEST,*PKERB_ADD_CREDENTIALS_REQUEST; | |
| 1290 | |
| 1291 #define KERB_REQUEST_ADD_CREDENTIAL 1 | |
| 1292 #define KERB_REQUEST_REPLACE_CREDENTIAL 2 | |
| 1293 #define KERB_REQUEST_REMOVE_CREDENTIAL 4 | |
| 1294 | |
| 1295 typedef struct _KERB_TRANSFER_CRED_REQUEST { | |
| 1296 KERB_PROTOCOL_MESSAGE_TYPE MessageType; | |
| 1297 LUID OriginLogonId; | |
| 1298 LUID DestinationLogonId; | |
| 1299 ULONG Flags; | |
| 1300 } KERB_TRANSFER_CRED_REQUEST,*PKERB_TRANSFER_CRED_REQUEST; | |
| 1301 | |
| 1302 #ifdef __cplusplus | |
| 1303 } | |
| 1304 #endif | |
| 1305 #endif |
