35 TRACE(
"LsaIOpenPolicyTrusted() failed (Status 0x%08lx)\n",
Status);
44 TRACE(
"LsarQueryInformationPolicy() failed (Status 0x%08lx)\n",
Status);
53 ERR(
"Failed to allocate SID\n");
61 if (PolicyInfo !=
NULL)
65 if (PolicyHandle !=
NULL)
83 ERR(
"Failed to allocate SID\n");
112 UserInfo->All.HomeDirectory.Length +
sizeof(
WCHAR) +
113 UserInfo->All.HomeDirectoryDrive.Length +
sizeof(
WCHAR) +
114 UserInfo->All.ScriptPath.Length +
sizeof(
WCHAR) +
115 UserInfo->All.ProfilePath.Length +
sizeof(
WCHAR) +
119 if (LocalBuffer ==
NULL)
121 TRACE(
"Failed to allocate the local buffer!\n");
131 TRACE(
"DispatchTable.AllocateClientBuffer failed (Status 0x%08lx)\n",
Status);
135 TRACE(
"ClientBaseAddress: %p\n", ClientBaseAddress);
140 LocalBuffer->
LogonCount = UserInfo->All.LogonCount;
165 UserInfo->All.ScriptPath.Buffer,
166 UserInfo->All.ScriptPath.Length);
174 UserInfo->All.HomeDirectory.Buffer,
175 UserInfo->All.HomeDirectory.Length);
183 UserInfo->All.FullName.Buffer,
184 UserInfo->All.FullName.Length);
193 UserInfo->All.ProfilePath.Buffer,
194 UserInfo->All.ProfilePath.Length);
202 UserInfo->All.HomeDirectoryDrive.Buffer,
203 UserInfo->All.HomeDirectoryDrive.Length);
221 TRACE(
"DispatchTable.CopyToClientBuffer failed (Status 0x%08lx)\n",
Status);
229 if (LocalBuffer !=
NULL)
234 if (ClientBaseAddress !=
NULL)
278 if (User->User.Sid ==
NULL)
280 ERR(
"Could not create the user SID\n");
284 User->User.Attributes = 0;
300 ERR(
"Could not create the primary group SID\n");
317 DWORD GroupCount = 0;
418 WARN(
"Failed to allocate the local buffer!\n");
431 WARN(
"BuildTokenUser() failed (Status 0x%08lx)\n",
Status);
440 WARN(
"BuildTokenPrimaryGroup() failed (Status 0x%08lx)\n",
Status);
450 WARN(
"BuildTokenGroups() failed (Status 0x%08lx)\n",
Status);
454 *TokenInformation =
Buffer;
466 for (
i = 0;
i <
Buffer->Groups->GroupCount;
i++)
475 if (
Buffer->PrimaryGroup.PrimaryGroup !=
NULL)
516 CHAR LmPwdBuffer[15];
527 TRACE(
"MsvpChangePassword()\n");
533 ERR(
"Invalid SubmitBufferLength %lu\n", SubmitBufferLength);
582 TRACE(
"SamIConnect() failed (Status 0x%08lx)\n",
Status);
592 TRACE(
"SamrLookupDomainInSamServer failed (Status %08lx)\n",
Status);
603 TRACE(
"SamrOpenDomain failed (Status %08lx)\n",
Status);
619 TRACE(
"SamrLookupNamesInDomain failed (Status %08lx)\n",
Status);
627 TRACE(
"Account is not a user account!\n");
639 TRACE(
"SamrOpenUser failed (Status %08lx)\n",
Status);
649 TRACE(
"SystemFunction007 failed (Status 0x%08lx)\n",
Status);
658 TRACE(
"SystemFunction007 failed (Status 0x%08lx)\n",
Status);
663 LmPwdString.Length = 15;
664 LmPwdString.MaximumLength = 15;
665 LmPwdString.Buffer = LmPwdBuffer;
666 ZeroMemory(LmPwdString.Buffer, LmPwdString.MaximumLength);
675 (
LPSTR)&OldLmPassword);
678 OldLmPasswordPresent =
TRUE;
683 LmPwdString.Length = 15;
684 LmPwdString.MaximumLength = 15;
685 LmPwdString.Buffer = LmPwdBuffer;
686 ZeroMemory(LmPwdString.Buffer, LmPwdString.MaximumLength);
695 (
LPSTR)&NewLmPassword);
698 NewLmPasswordPresent =
TRUE;
703 if (OldLmPasswordPresent && NewLmPasswordPresent)
707 (
const BYTE *)&NewLmPassword,
708 (
LPBYTE)&OldLmEncryptedWithNewLm);
711 TRACE(
"SystemFunction012 failed (Status 0x%08lx)\n",
Status);
717 (
const BYTE *)&OldLmPassword,
718 (
LPBYTE)&NewLmEncryptedWithOldLm);
721 TRACE(
"SystemFunction012 failed (Status 0x%08lx)\n",
Status);
725 pOldLmEncryptedWithNewLm = &OldLmEncryptedWithNewLm;
726 pNewLmEncryptedWithOldLm = &NewLmEncryptedWithOldLm;
731 (
const BYTE *)&NewNtPassword,
732 (
LPBYTE)&OldNtEncryptedWithNewNt);
735 TRACE(
"SystemFunction012 failed (Status 0x%08lx)\n",
Status);
741 (
const BYTE *)&OldNtPassword,
742 (
LPBYTE)&NewNtEncryptedWithOldNt);
745 TRACE(
"SystemFunction012 failed (Status 0x%08lx)\n",
Status);
751 OldLmPasswordPresent && NewLmPasswordPresent,
752 pOldLmEncryptedWithNewLm,
753 pNewLmEncryptedWithOldLm,
755 &OldNtEncryptedWithNewNt,
756 &NewNtEncryptedWithOldNt,
763 TRACE(
"SamrChangePasswordUser failed (Status %08lx)\n",
Status);
768 if (UserHandle !=
NULL)
774 if (DomainHandle !=
NULL)
777 if (DomainSid !=
NULL)
780 if (ServerHandle !=
NULL)
797 CHAR LmPwdBuffer[15];
800 TRACE(
"(%p %p)\n", UserPassword, UserInfo);
803 LmPwdString.Length = 15;
804 LmPwdString.MaximumLength = 15;
805 LmPwdString.Buffer = LmPwdBuffer;
806 ZeroMemory(LmPwdString.Buffer, LmPwdString.MaximumLength);
815 (
LPSTR)&UserLmPassword);
818 UserLmPasswordPresent =
TRUE;
827 UserNtPasswordPresent =
TRUE;
836 TRACE(
"No password check!\n");
844 TRACE(
"Check NT password hashes:\n");
849 TRACE(
" success!\n");
860 TRACE(
"Check LM password hashes:\n");
865 TRACE(
" success!\n");
889 FIXME(
"MsvpCheckLogonHours(%p %p)\n", LogonHours, LogonTime);
891 if (LogonHours->UnitsPerWeek == 0 || LogonHours->LogonHours ==
NULL)
893 FIXME(
"No logon hours!\n");
900 FIXME(
"UnitsPerWeek: %u\n", LogonHours->UnitsPerWeek);
901 MinutesPerUnit = 10080 / LogonHours->UnitsPerWeek;
907 FIXME(
"Logon permitted: %s\n", bFound ?
"Yes" :
"No");
924 TRACE(
"MsvpCheckWorkstations(%p %S)\n", WorkStations, ComputerName);
926 if (WorkStations->Length == 0 || WorkStations->Buffer ==
NULL)
928 TRACE(
"No workstations!\n");
932 TRACE(
"Workstations: %wZ\n", WorkStations);
934 pStart = WorkStations->Buffer;
941 TRACE(
"Comparing '%S' and '%S'\n", ComputerName, pStart);
942 if (
_wcsicmp(ComputerName, pStart) == 0)
957 TRACE(
"Found allowed workstation: %s\n", (bFound) ?
"Yes" :
"No");
979 TRACE(
"LsaApCallPackage()\n");
986 *ProtocolReturnBuffer =
NULL;
987 *ReturnBufferLength = 0;
1004 ProtocolSubmitBuffer,
1007 ProtocolReturnBuffer,
1035 IN PVOID ProtocolSubmitBuffer,
1042 TRACE(
"LsaApCallPackagePassthrough()\n");
1053 IN PVOID ProtocolSubmitBuffer,
1063 TRACE(
"LsaApCallPackageUntrusted()\n");
1070 *ProtocolReturnBuffer =
NULL;
1071 *ReturnBufferLength = 0;
1075 ProtocolSubmitBuffer,
1078 ProtocolReturnBuffer,
1102 TRACE(
"LsaApInitializePackage(%lu %p %p %p %p)\n",
1103 AuthenticationPackageId, LsaDispatchTable,
Database,
1104 Confidentiality, AuthenticationPackageName);
1107 DispatchTable.CreateLogonSession = LsaDispatchTable->CreateLogonSession;
1108 DispatchTable.DeleteLogonSession = LsaDispatchTable->DeleteLogonSession;
1109 DispatchTable.AddCredential = LsaDispatchTable->AddCredential;
1110 DispatchTable.GetCredentials = LsaDispatchTable->GetCredentials;
1111 DispatchTable.DeleteCredential = LsaDispatchTable->DeleteCredential;
1112 DispatchTable.AllocateLsaHeap = LsaDispatchTable->AllocateLsaHeap;
1114 DispatchTable.AllocateClientBuffer = LsaDispatchTable->AllocateClientBuffer;
1115 DispatchTable.FreeClientBuffer = LsaDispatchTable->FreeClientBuffer;
1116 DispatchTable.CopyToClientBuffer = LsaDispatchTable->CopyToClientBuffer;
1117 DispatchTable.CopyFromClientBuffer = LsaDispatchTable->CopyFromClientBuffer;
1121 if (NameString ==
NULL)
1125 if (NameBuffer ==
NULL)
1135 *AuthenticationPackageName = (
PLSA_STRING)NameString;
1148 TRACE(
"LsaApLogonTerminated()\n");
1159 IN PVOID ProtocolSubmitBuffer,
1194 DWORD ComputerNameSize;
1196 UCHAR LogonPassHash;
1199 TRACE(
"LsaApLogonUserEx2()\n");
1202 TRACE(
"ProtocolSubmitBuffer: %p\n", ProtocolSubmitBuffer);
1203 TRACE(
"SubmitBufferSize: %lu\n", SubmitBufferSize);
1206 *ProfileBufferSize = 0;
1208 *AccountName =
NULL;
1209 *AuthenticatingAuthority =
NULL;
1220 ERR(
"Invalid SubmitBufferSize %lu\n", SubmitBufferSize);
1233 #if 0 // FIXME: These checks happen to be done on Windows. We however keep them general on ReactOS for now... 1299 if (LogonPassHash > 0)
1305 ErasePassword = &LogonInfo->
Password;
1328 ComputerNameSize =
ARRAYSIZE(ComputerName);
1335 SpecialAccount =
TRUE;
1341 ERR(
"GetNtAuthorityDomainSid() failed (Status 0x%08lx)\n",
Status);
1347 TRACE(
"SpecialAccount: LocalService\n");
1355 if (UserInfo ==
NULL)
1366 TRACE(
"SpecialAccount: NetworkService\n");
1374 if (UserInfo ==
NULL)
1391 TRACE(
"NormalAccount\n");
1397 ERR(
"GetAccountDomainSid() failed (Status 0x%08lx)\n",
Status);
1408 TRACE(
"SamIConnect() failed (Status 0x%08lx)\n",
Status);
1419 ERR(
"SamrOpenDomain failed (Status %08lx)\n",
Status);
1435 ERR(
"SamrLookupNamesInDomain failed (Status %08lx)\n",
Status);
1443 ERR(
"Account is not a user account!\n");
1456 ERR(
"SamrOpenUser failed (Status %08lx)\n",
Status);
1465 ERR(
"SamrQueryInformationUser failed (Status %08lx)\n",
Status);
1478 ERR(
"MsvpCheckPassword failed (Status %08lx)\n",
Status);
1489 ERR(
"Account disabled!\n");
1498 ERR(
"Account locked!\n");
1509 ERR(
"Account expired!\n");
1523 ERR(
"Password expired!\n");
1536 ERR(
"Invalid logon hours!\n");
1545 ERR(
"Invalid workstation!\n");
1559 TRACE(
"NtAllocateLocallyUniqueId failed (Status %08lx)\n",
Status);
1567 TRACE(
"CreateLogonSession failed (Status %08lx)\n",
Status);
1571 SessionCreated =
TRUE;
1581 TRACE(
"BuildInteractiveProfileBuffer failed (Status %08lx)\n",
Status);
1595 TRACE(
"BuildTokenInformationBuffer failed (Status %08lx)\n",
Status);
1607 if ((UserHandle !=
NULL) &&
1626 if (*AccountName !=
NULL)
1630 if ((*AccountName)->Buffer !=
NULL)
1640 if (*AuthenticatingAuthority !=
NULL)
1644 if ((*AuthenticatingAuthority)->Buffer !=
NULL)
1656 (*MachineName)->Buffer =
DispatchTable.AllocateLsaHeap((ComputerNameSize + 1) *
sizeof(
WCHAR));
1657 if ((*MachineName)->Buffer !=
NULL)
1659 (*MachineName)->MaximumLength = (ComputerNameSize + 1) *
sizeof(
WCHAR);
1660 (*MachineName)->Length = ComputerNameSize *
sizeof(
WCHAR);
1661 RtlCopyMemory((*MachineName)->Buffer, ComputerName, (*MachineName)->MaximumLength);
1667 if (SessionCreated !=
FALSE)
1678 if (UserHandle !=
NULL)
1686 if (DomainHandle !=
NULL)
1689 if (ServerHandle !=
NULL)
1719 TRACE(
"SpLsaModeInitialize(0x%lx %p %p %p)\n",
1720 LsaVersion, PackageVersion, ppTables, pcTables);
1780 TRACE(
"SpUserModeInitialize(0x%lx %p %p %p)\n",
1781 LsaVersion, PackageVersion, ppTables, pcTables);
struct _MSV1_0_CHANGEPASSWORD_REQUEST * PMSV1_0_CHANGEPASSWORD_REQUEST
#define STATUS_WRONG_PASSWORD
NTSTATUS NTAPI LsaApCallPackage(IN PLSA_CLIENT_REQUEST ClientRequest, IN PVOID ProtocolSubmitBuffer, IN PVOID ClientBufferBase, IN ULONG SubmitBufferLength, OUT PVOID *ProtocolReturnBuffer, OUT PULONG ReturnBufferLength, OUT PNTSTATUS ProtocolStatus)
SpQueryCredentialsAttributesFn * SpQueryCredentialsAttributes
struct _MSV1_0_INTERACTIVE_PROFILE MSV1_0_INTERACTIVE_PROFILE
#define SAM_SERVER_CONNECT
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
static NTSTATUS BuildTokenInformationBuffer(PLSA_TOKEN_INFORMATION_V1 *TokenInformation, PRPC_SID AccountDomainSid, PSAMPR_USER_INFO_BUFFER UserInfo, BOOL SpecialAccount)
static BOOL MsvpCheckWorkstations(_In_ PRPC_UNICODE_STRING WorkStations, _In_ PWSTR ComputerName)
#define SECURITY_AUTHENTICATED_USER_RID
#define MSV1_0_PACKAGE_NAME
#define STATUS_INSUFFICIENT_RESOURCES
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define USER_PASSWORD_NOT_REQUIRED
VOID NTAPI RtlRunDecodeUnicodeString(IN UCHAR Hash, IN OUT PUNICODE_STRING String)
NTSTATUS NTAPI LsaApInitializePackage(IN ULONG AuthenticationPackageId, IN PLSA_DISPATCH_TABLE LsaDispatchTable, IN PLSA_STRING Database OPTIONAL, IN PLSA_STRING Confidentiality OPTIONAL, OUT PLSA_STRING *AuthenticationPackageName)
NTSTATUS NTAPI LsaSpShutDown(VOID)
MSV1_0_LOGON_SUBMIT_TYPE MessageType
UNICODE_STRING ProfilePath
NTSTATUS __stdcall SamrOpenDomain(SAMPR_HANDLE ServerHandle, ACCESS_MASK DesiredAccess, PRPC_SID DomainId, SAMPR_HANDLE *DomainHandle)
UNICODE_STRING HomeDirectory
#define PtrOffset(BASE, OFFSET)
IN BOOLEAN OUT PSTR Buffer
NTSTATUS NTAPI LsaSpDeleteContext(_In_ LSA_SEC_HANDLE ContextHandle)
NTSTATUS NTAPI SpInitialize(_In_ ULONG_PTR PackageId, _In_ PSECPKG_PARAMETERS Parameters, _In_ PLSA_SECPKG_FUNCTION_TABLE FunctionTable)
#define STATUS_INVALID_PARAMETER
NTSTATUS NTAPI LsaSpDeleteCredentials(_In_ LSA_SEC_HANDLE CredentialHandle, _In_ PSecBuffer Key)
static NTSTATUS GetNtAuthorityDomainSid(PRPC_SID *Sid)
PLSA_AP_LOGON_USER LsaLogonUser
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
struct _MSV1_0_INTERACTIVE_PROFILE * PMSV1_0_INTERACTIVE_PROFILE
NTSYSAPI VOID NTAPI RtlEraseUnicodeString(_Inout_ PUNICODE_STRING String)
NTSTATUS NTAPI SpLsaModeInitialize(_In_ ULONG LsaVersion, _Out_ PULONG PackageVersion, _Out_ PSECPKG_FUNCTION_TABLE *ppTables, _Out_ PULONG pcTables)
static PSID AppendRidToSid(PSID SrcSid, ULONG Rid)
SpFreeCredentialsHandleFn * FreeCredentialsHandle
UNICODE_STRING LogonScript
_In_ DWORD _Out_ PDWORD _In_opt_ PCSTR MachineName
NTSYSAPI PULONG NTAPI RtlSubAuthoritySid(_In_ PSID Sid, _In_ ULONG SubAuthority)
NTSTATUS NTAPI SamrLookupNamesInDomain(IN SAMPR_HANDLE DomainHandle, IN ULONG Count, IN RPC_UNICODE_STRING Names[], OUT PSAMPR_ULONG_ARRAY RelativeIds, OUT PSAMPR_ULONG_ARRAY Use)
_IRQL_requires_same_ _In_ PLSA_STRING _In_ SECURITY_LOGON_TYPE _In_ ULONG _In_ ULONG _In_opt_ PTOKEN_GROUPS _In_ PTOKEN_SOURCE _Out_ PVOID _Out_ PULONG ProfileBufferLength
NTSTATUS NTAPI SamrChangePasswordUser(IN SAMPR_HANDLE UserHandle, IN unsigned char LmPresent, IN PENCRYPTED_LM_OWF_PASSWORD OldLmEncryptedWithNewLm, IN PENCRYPTED_LM_OWF_PASSWORD NewLmEncryptedWithOldLm, IN unsigned char NtPresent, IN PENCRYPTED_NT_OWF_PASSWORD OldNtEncryptedWithNewNt, IN PENCRYPTED_NT_OWF_PASSWORD NewNtEncryptedWithOldNt, IN unsigned char NtCrossEncryptionPresent, IN PENCRYPTED_NT_OWF_PASSWORD NewNtEncryptedWithNewLm, IN unsigned char LmCrossEncryptionPresent, IN PENCRYPTED_LM_OWF_PASSWORD NewLmEncryptedWithNewNt)
NTSTATUS WINAPI SystemFunction006(LPCSTR password, LPSTR hash)
#define STATUS_ACCOUNT_LOCKED_OUT
BOOL WINAPI GetComputerNameW(LPWSTR lpBuffer, LPDWORD lpnSize)
TOpcodeData Groups[17][8]
NTSTATUS NTAPI NtAllocateLocallyUniqueId(OUT LUID *LocallyUniqueId)
NTSTATUS NTAPI SamrLookupDomainInSamServer(IN SAMPR_HANDLE ServerHandle, IN PRPC_UNICODE_STRING Name, OUT PRPC_SID *DomainId)
SpAcceptLsaModeContextFn * AcceptLsaModeContext
NTSTATUS NTAPI LsaSpQueryCredentialsAttributes(_In_ LSA_SEC_HANDLE CredentialHandle, _In_ ULONG CredentialAttribute, _Inout_ PVOID Buffer)
NTSYSAPI NTSTATUS NTAPI RtlAllocateAndInitializeSid(IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority, IN UCHAR SubAuthorityCount, IN ULONG SubAuthority0, IN ULONG SubAuthority1, IN ULONG SubAuthority2, IN ULONG SubAuthority3, IN ULONG SubAuthority4, IN ULONG SubAuthority5, IN ULONG SubAuthority6, IN ULONG SubAuthority7, OUT PSID *Sid)
LARGE_INTEGER PasswordMustChange
PLSA_AP_CALL_PACKAGE_UNTRUSTED CallPackageUntrusted
UNICODE_STRING AccountName
#define STATUS_ACCOUNT_EXPIRED
SAMPR_USER_ALL_INFORMATION All
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
#define STATUS_INVALID_LOGON_HOURS
NTSTATUS WINAPI LsaIOpenPolicyTrusted(OUT LSAPR_HANDLE *PolicyHandle)
#define USER_ACCOUNT_DISABLED
#define STATUS_ACCOUNT_RESTRICTION
NTSYSAPI VOID NTAPI RtlInitAnsiString(PANSI_STRING DestinationString, PCSZ SourceString)
WINE_DEFAULT_DEBUG_CHANNEL(msv1_0)
VOID NTAPI LsaIFree_LSAPR_POLICY_INFORMATION(IN POLICY_INFORMATION_CLASS InformationClass, IN PLSAPR_POLICY_INFORMATION PolicyInformation)
NTSTATUS NTAPI SamIConnect(PSAMPR_SERVER_NAME ServerName, SAMPR_HANDLE *ServerHandle, ACCESS_MASK DesiredAccess, BOOLEAN Trusted)
return STATUS_NOT_IMPLEMENTED
struct _MSV1_0_INTERACTIVE_LOGON * PMSV1_0_INTERACTIVE_LOGON
NTSYSAPI NTSTATUS NTAPI RtlInitializeSid(IN OUT PSID Sid, IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority, IN UCHAR SubAuthorityCount)
VOID NTAPI SamIFreeVoid(PVOID Ptr)
static NTSTATUS GetAccountDomainSid(PRPC_SID *Sid)
#define FIXUP_POINTER(Pointer, Offset)
VOID NTAPI ProtocolStatus(NDIS_HANDLE BindingContext, NDIS_STATUS GenerelStatus, PVOID StatusBuffer, UINT StatusBufferSize)
Called by NDIS when the underlying driver has changed state.
#define USER_READ_GENERAL
NTSTATUS WINAPI SystemFunction012(const BYTE *in, const BYTE *key, LPBYTE out)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
SpQueryContextAttributesFn * SpQueryContextAttributes
_IRQL_requires_same_ _In_ PLSA_STRING _In_ SECURITY_LOGON_TYPE _In_ ULONG _In_ ULONG _In_opt_ PTOKEN_GROUPS _In_ PTOKEN_SOURCE _Out_ PVOID _Out_ PULONG _Inout_ PLUID _Out_ PHANDLE _Out_ PQUOTA_LIMITS _Out_ PNTSTATUS SubStatus
VOID NTAPI LsaApLogonTerminated(IN PLUID LogonId)
enum _MSV1_0_PROTOCOL_MESSAGE_TYPE * PMSV1_0_PROTOCOL_MESSAGE_TYPE
#define DOMAIN_USER_RID_ADMIN
NTSYSAPI NTSTATUS NTAPI RtlUpcaseUnicodeStringToOemString(POEM_STRING DestinationString, PCUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
LARGE_INTEGER PasswordLastSet
NTSTATUS NTAPI SpAcceptCredentials(_In_ SECURITY_LOGON_TYPE LogonType, _In_ PUNICODE_STRING AccountName, _In_ PSECPKG_PRIMARY_CRED PrimaryCredentials, _In_ PSECPKG_SUPPLEMENTAL_CRED SupplementalCredentials)
static NTSTATUS BuildInteractiveProfileBuffer(IN PLSA_CLIENT_REQUEST ClientRequest, IN PSAMPR_USER_INFO_BUFFER UserInfo, IN PWSTR ComputerName, OUT PMSV1_0_INTERACTIVE_PROFILE *ProfileBuffer, OUT PULONG ProfileBufferLength)
PLSA_AP_CALL_PACKAGE CallPackage
NTSYSAPI NTSTATUS NTAPI RtlValidateUnicodeString(_In_ ULONG Flags, _In_ PCUNICODE_STRING String)
NTSTATUS NTAPI LsaSpApplyControlToken(_In_ LSA_SEC_HANDLE ContextHandle, _In_ PSecBufferDesc ControlToken)
#define SE_GROUP_ENABLED_BY_DEFAULT
enum _LSA_TOKEN_INFORMATION_TYPE * PLSA_TOKEN_INFORMATION_TYPE
#define SAM_SERVER_LOOKUP_DOMAIN
_In_ ULONG _In_ ACCESS_MASK _In_ PSID Sid
NTSTATUS NTAPI LsaSpGetInfoW(_Out_ PSecPkgInfoW PackageInfo)
NTSYSAPI NTSTATUS NTAPI RtlSystemTimeToLocalTime(_In_ PLARGE_INTEGER SystemTime, _Out_ PLARGE_INTEGER LocalTime)
#define SECPKG_INTERFACE_VERSION
SpAcceptCredentialsFn * AcceptCredentials
NTSYSAPI ULONG NTAPI RtlLengthSid(IN PSID Sid)
#define SECURITY_LOCAL_SERVICE_RID
NTSTATUS NTAPI LsaSpSaveCredentials(_In_ LSA_SEC_HANDLE CredentialHandle, _In_ PSecBuffer Credentials)
#define SECURITY_NT_AUTHORITY
#define STATUS_NAME_TOO_LONG
PLSA_AP_INITIALIZE_PACKAGE InitializePackage
SECPKG_FUNCTION_TABLE NtlmLsaFn[1]
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ SaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ OwnerSize PSID _Inout_ PULONG _Out_writes_bytes_to_opt_ PrimaryGroupSize PSID PrimaryGroup
#define STATUS_NO_SUCH_USER
BOOLEAN RtlTimeToTimeFields(IN PLARGE_INTEGER Time, IN PTIME_FIELDS TimeFields)
NTSTATUS WINAPI LsarQueryInformationPolicy(LSAPR_HANDLE PolicyHandle, POLICY_INFORMATION_CLASS InformationClass, PLSAPR_POLICY_INFORMATION *PolicyInformation)
#define STATUS_ACCOUNT_DISABLED
NTSTATUS NTAPI LsaSpAcquireCredentialsHandle(_In_ PUNICODE_STRING PrincipalName, _In_ ULONG CredentialUseFlags, _In_ PLUID LogonId, _In_ PVOID AuthorizationData, _In_ PVOID GetKeyFunciton, _In_ PVOID GetKeyArgument, _Out_ PLSA_SEC_HANDLE CredentialHandle, _Out_ PTimeStamp ExpirationTime)
static NTSTATUS BuildTokenGroups(OUT PTOKEN_GROUPS *Groups, IN PSID AccountDomainSid, IN ULONG RelativeId, IN BOOL SpecialAccount)
NTSTATUS NTAPI LsaSpGetUserInfo(_In_ PLUID LogonId, _In_ ULONG Flags, _Out_ PSecurityUserData *UserData)
PLSA_AP_LOGON_USER_EX2 LogonUserEx2
LARGE_INTEGER KickOffTime
#define SECURITY_BUILTIN_DOMAIN_RID
_CONST_RETURN wchar_t *__cdecl wcschr(_In_z_ const wchar_t *_Str, wchar_t _Ch)
NTSYSAPI ULONG NTAPI RtlEqualMemory(CONST VOID *Source1, CONST VOID *Source2, ULONG Length)
#define STATUS_PASSWORD_EXPIRED
#define NT_SUCCESS(StatCode)
#define USER_READ_ACCOUNT
LSA_DISPATCH_TABLE DispatchTable
NTSTATUS WINAPI SystemFunction007(const UNICODE_STRING *string, LPBYTE hash)
NTSYSAPI PUCHAR NTAPI RtlSubAuthorityCountSid(IN PSID Sid)
UNICODE_STRING NewPassword
PLSA_AP_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough
SpDeleteContextFn * DeleteContext
static NTSTATUS MsvpCheckPassword(PUNICODE_STRING UserPassword, PSAMPR_USER_INFO_BUFFER UserInfo)
#define STATUS_ACCESS_DENIED
NTSTATUS NTAPI LsaSpGetCredentials(_In_ LSA_SEC_HANDLE CredentialHandle, _Inout_ PSecBuffer Credentials)
#define SE_GROUP_MANDATORY
UNICODE_STRING LogonServer
#define USER_LOGON_SUCCESS
NTSTATUS WINAPI LsarClose(LSAPR_HANDLE *ObjectHandle)
#define SECURITY_NULL_RID
#define USER_LOGON_BAD_PASSWORD
SpInitLsaModeContextFn * InitLsaModeContext
NTSTATUS NTAPI LsaSpSetExtendedInformation(_In_ SECPKG_EXTENDED_INFORMATION_CLASS Class, _In_ PSECPKG_EXTENDED_INFORMATION Info)
#define STATUS_BAD_VALIDATION_CLASS
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
#define USER_ACCOUNT_AUTO_LOCKED
SpAddCredentialsFn * SpAddCredentials
_IRQL_requires_same_ _In_ PLSA_STRING _In_ SECURITY_LOGON_TYPE _In_ ULONG _In_ ULONG _In_opt_ PTOKEN_GROUPS _In_ PTOKEN_SOURCE _Out_ PVOID * ProfileBuffer
#define memcpy(s1, s2, n)
SpInitializeFn * Initialize
UNICODE_STRING DomainName
NTSTATUS WINAPI SpUserModeInitialize(_In_ ULONG LsaVersion, _Out_ PULONG PackageVersion, _Out_ PSECPKG_USER_FUNCTION_TABLE *ppTables, _Out_ PULONG pcTables)
#define SECURITY_NETWORK_SERVICE_RID
VOID NTAPI SamIFree_SAMPR_USER_INFO_BUFFER(PSAMPR_USER_INFO_BUFFER Ptr, USER_INFORMATION_CLASS InformationClass)
static NTSTATUS MsvpChangePassword(IN PLSA_CLIENT_REQUEST ClientRequest, IN PVOID ProtocolSubmitBuffer, IN PVOID ClientBufferBase, IN ULONG SubmitBufferLength, OUT PVOID *ProtocolReturnBuffer, OUT PULONG ReturnBufferLength, OUT PNTSTATUS ProtocolStatus)
_In_ ULONG _In_ ULONG Offset
#define MAX_COMPUTERNAME_LENGTH
VOID NTAPI SamIFree_SAMPR_ULONG_ARRAY(PSAMPR_ULONG_ARRAY Ptr)
#define STATUS_INVALID_WORKSTATION
NTSTATUS NTAPI LsaApCallPackagePassthrough(IN PLSA_CLIENT_REQUEST ClientRequest, IN PVOID ProtocolSubmitBuffer, IN PVOID ClientBufferBase, IN ULONG SubmitBufferLength, OUT PVOID *ProtocolReturnBuffer, OUT PULONG ReturnBufferLength, OUT PNTSTATUS ProtocolStatus)
NTSTATUS NTAPI LsaApCallPackageUntrusted(IN PLSA_CLIENT_REQUEST ClientRequest, IN PVOID ProtocolSubmitBuffer, IN PVOID ClientBufferBase, IN ULONG SubmitBufferLength, OUT PVOID *ProtocolReturnBuffer, OUT PULONG ReturnBufferLength, OUT PNTSTATUS ProtocolStatus)
LARGE_INTEGER PasswordCanChange
SpApplyControlTokenFn * ApplyControlToken
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
NTSTATUS NTAPI LsaSpInitLsaModeContext(_In_ LSA_SEC_HANDLE CredentialHandle, _In_ LSA_SEC_HANDLE ContextHandle, _In_ PUNICODE_STRING TargetName, _In_ ULONG ContextRequirements, _In_ ULONG TargetDataRep, _In_ PSecBufferDesc InputBuffers, _Out_ PLSA_SEC_HANDLE NewContextHandle, _Inout_ PSecBufferDesc OutputBuffers, _Out_ PULONG ContextAttributes, _Out_ PTimeStamp ExpirationTime, _Out_ PBOOLEAN MappedContext, _Out_ PSecBuffer ContextData)
SpSetExtendedInformationFn * SetExtendedInformation
#define DOMAIN_ALIAS_RID_USERS
_IRQL_requires_same_ _In_ PLSA_STRING _In_ SECURITY_LOGON_TYPE LogonType
SpGetUserInfoFn * GetUserInfo
#define STATUS_PASSWORD_MUST_CHANGE
SpSaveCredentialsFn * SaveCredentials
MSV1_0_PROFILE_BUFFER_TYPE MessageType
NTSTATUS NTAPI SamrSetInformationUser(IN SAMPR_HANDLE UserHandle, IN USER_INFORMATION_CLASS UserInformationClass, IN PSAMPR_USER_INFO_BUFFER Buffer)
enum _SECURITY_LOGON_TYPE SECURITY_LOGON_TYPE
NTSTATUS __stdcall SamrCloseHandle(SAMPR_HANDLE *SamHandle)
PLSA_AP_LOGON_USER_EX LogonUserEx
UNICODE_STRING HomeDirectoryDrive
_CRTIMP wchar_t *__cdecl wcscat(_Inout_updates_z_(_String_length_(_Dest)+_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
#define DOMAIN_GROUP_RID_USERS
_IRQL_requires_same_ _In_ PLSA_STRING _In_ SECURITY_LOGON_TYPE _In_ ULONG _In_ ULONG _In_opt_ PTOKEN_GROUPS _In_ PTOKEN_SOURCE _Out_ PVOID _Out_ PULONG _Inout_ PLUID LogonId
struct _LSA_STRING * PLSA_STRING
NTSTATUS NTAPI SamrOpenUser(IN SAMPR_HANDLE DomainHandle, IN ACCESS_MASK DesiredAccess, IN ULONG UserId, OUT SAMPR_HANDLE *UserHandle)
#define USER_READ_PREFERENCES
UNICODE_STRING OldPassword
char * strcpy(char *DstString, const char *SrcString)
SpGetExtendedInformationFn * GetExtendedInformation
SpGetCredentialsFn * GetCredentials
#define RtlZeroMemory(Destination, Length)
NTSTATUS NTAPI LsaSpFreeCredentialsHandle(_In_ LSA_SEC_HANDLE CredentialHandle)
SAMPR_USER_INTERNAL2_INFORMATION Internal2
NTSTATUS NTAPI NtQuerySystemTime(OUT PLARGE_INTEGER SystemTime)
#define RtlCopyMemory(Destination, Source, Length)
NTSTATUS NTAPI LsaApLogonUserEx2(IN PLSA_CLIENT_REQUEST ClientRequest, IN SECURITY_LOGON_TYPE LogonType, IN PVOID ProtocolSubmitBuffer, IN PVOID ClientBufferBase, IN ULONG SubmitBufferSize, OUT PVOID *ProfileBuffer, OUT PULONG ProfileBufferSize, OUT PLUID LogonId, OUT PNTSTATUS SubStatus, OUT PLSA_TOKEN_INFORMATION_TYPE TokenInformationType, OUT PVOID *TokenInformation, OUT PUNICODE_STRING *AccountName, OUT PUNICODE_STRING *AuthenticatingAuthority, OUT PUNICODE_STRING *MachineName, OUT PSECPKG_PRIMARY_CRED PrimaryCredentials, OUT PSECPKG_SUPPLEMENTAL_CRED_ARRAY *SupplementalCredentials)
enum _MSV1_0_PROTOCOL_MESSAGE_TYPE MSV1_0_PROTOCOL_MESSAGE_TYPE
SpDeleteCredentialsFn * DeleteCredentials
NTSTATUS NTAPI SamrQueryInformationUser(IN SAMPR_HANDLE UserHandle, IN USER_INFORMATION_CLASS UserInformationClass, OUT PSAMPR_USER_INFO_BUFFER *Buffer)
static PTIME_FIELDS TimeFields
_In_ PWDFDEVICE_INIT _In_ PWDF_PDO_EVENT_CALLBACKS DispatchTable
static BOOL MsvpCheckLogonHours(_In_ PSAMPR_LOGON_HOURS LogonHours, _In_ PLARGE_INTEGER LogonTime)
static NTSTATUS BuildTokenPrimaryGroup(OUT PTOKEN_PRIMARY_GROUP PrimaryGroup, IN PSID AccountDomainSid, IN ULONG RelativeId)
NTSYSAPI BOOLEAN NTAPI RtlEqualUnicodeString(PUNICODE_STRING String1, PUNICODE_STRING String2, BOOLEAN CaseInSensitive)
PLSA_AP_LOGON_TERMINATED LogonTerminated
NTSTATUS NTAPI LsaSpAcceptLsaModeContext(_In_ LSA_SEC_HANDLE CredentialHandle, _In_ LSA_SEC_HANDLE ContextHandle, _In_ PSecBufferDesc InputBuffer, _In_ ULONG ContextRequirements, _In_ ULONG TargetDataRep, _Out_ PLSA_SEC_HANDLE NewContextHandle, _Inout_ PSecBufferDesc OutputBuffer, _Out_ PULONG ContextAttributes, _Out_ PTimeStamp ExpirationTime, _Out_ PBOOLEAN MappedContext, _Out_ PSecBuffer ContextData)
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
static NTSTATUS BuildTokenUser(OUT PTOKEN_USER User, IN PSID AccountDomainSid, IN ULONG RelativeId)
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
SpAcquireCredentialsHandleFn * SpAcquireCredentialsHandle
#define STATUS_LOGON_FAILURE
SID_IDENTIFIER_AUTHORITY NtAuthority
NTSTATUS NTAPI LsaSpGetExtendedInformation(_In_ SECPKG_EXTENDED_INFORMATION_CLASS Class, _Out_ PSECPKG_EXTENDED_INFORMATION *ppInfo)
UNICODE_STRING LogonDomainName
NTSYSAPI ULONG NTAPI RtlLengthRequiredSid(IN ULONG SubAuthorityCount)
#define USER_CHANGE_PASSWORD
static SID_IDENTIFIER_AUTHORITY SystemAuthority
#define RTL_CONSTANT_STRING(s)
PULONG MinorVersion OPTIONAL