Author: ekohl Date: Sun Feb 2 12:12:59 2014 New Revision: 61919 URL: http://svn.reactos.org/svn/reactos?rev=61919&view=rev Log: [MSGINA] Move the LSA connection code into a separate file. This connection code will later be used by the logon code too.
Added: trunk/reactos/dll/win32/msgina/lsa.c (with props) Modified: trunk/reactos/dll/win32/msgina/CMakeLists.txt trunk/reactos/dll/win32/msgina/gui.c trunk/reactos/dll/win32/msgina/msgina.h Modified: trunk/reactos/dll/win32/msgina/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msgina/CMakeLists.txt?rev=61919&r1=61918&r2=61919&view=diff ============================================================================== --- trunk/reactos/dll/win32/msgina/CMakeLists.txt [iso-8859-1] (original) +++ trunk/reactos/dll/win32/msgina/CMakeLists.txt [iso-8859-1] Sun Feb 2 12:12:59 2014 @@ -7,6 +7,7 @@ list(APPEND SOURCE gui.c + lsa.c msgina.c stubs.c tui.c Modified: trunk/reactos/dll/win32/msgina/gui.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msgina/gui.c?rev=61919&r1=61918&r2=61919&view=diff ============================================================================== --- trunk/reactos/dll/win32/msgina/gui.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/msgina/gui.c [iso-8859-1] Sun Feb 2 12:12:59 2014 @@ -259,9 +259,6 @@ ULONG RequestBufferSize; ULONG ResponseBufferSize = 0; LPWSTR Ptr; - LSA_STRING PackageName; - HANDLE LsaHandle = NULL; - ULONG AuthenticationPackage = 0; BOOL res = FALSE; NTSTATUS ProtocolStatus; NTSTATUS Status; @@ -349,29 +346,15 @@ RequestBuffer->NewPassword.MaximumLength); /* Connect to the LSA server */ - Status = LsaConnectUntrusted(&LsaHandle); - if (!NT_SUCCESS(Status)) - { - ERR("LsaConnectUntrusted failed (Status 0x%08lx)\n", Status); - goto done; - } - - /* Get the authentication package */ - RtlInitAnsiString((PANSI_STRING)&PackageName, - MSV1_0_PACKAGE_NAME); - - Status = LsaLookupAuthenticationPackage(LsaHandle, - &PackageName, - &AuthenticationPackage); - if (!NT_SUCCESS(Status)) - { - ERR("LsaLookupAuthenticationPackage failed (Status 0x%08lx)\n", Status); - goto done; + if (!ConnectToLsa(pgContext)) + { + ERR("ConnectToLsa() failed\n"); + return FALSE; } /* Call the authentication package */ - Status = LsaCallAuthenticationPackage(LsaHandle, - AuthenticationPackage, + Status = LsaCallAuthenticationPackage(pgContext->LsaHandle, + pgContext->AuthenticationPackage, RequestBuffer, RequestBufferSize, (PVOID*)&ResponseBuffer, @@ -403,9 +386,6 @@ if (ResponseBuffer != NULL) LsaFreeReturnBuffer(ResponseBuffer); - - if (LsaHandle != NULL) - NtClose(LsaHandle); return res; } Added: trunk/reactos/dll/win32/msgina/lsa.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msgina/lsa.c?rev=61919 ============================================================================== --- trunk/reactos/dll/win32/msgina/lsa.c (added) +++ trunk/reactos/dll/win32/msgina/lsa.c [iso-8859-1] Sun Feb 2 12:12:59 2014 @@ -0,0 +1,52 @@ +/* + * PROJECT: ReactOS msgina.dll + * FILE: dll/win32/msgina/gui.c + * PURPOSE: ReactOS Logon GINA DLL + * PROGRAMMER: Eric Kohl + */ + +#include "msgina.h" + +BOOL +ConnectToLsa( + PGINA_CONTEXT pgContext) +{ + LSA_STRING LogonProcessName; + LSA_STRING PackageName; + LSA_OPERATIONAL_MODE SecurityMode = 0; + NTSTATUS Status; + + /* We are already connected to the LSA */ + if (pgContext->LsaHandle != NULL) + return TRUE; + + /* Connect to the LSA server */ + RtlInitAnsiString((PANSI_STRING)&LogonProcessName, + "MSGINA"); + + Status = LsaRegisterLogonProcess(&LogonProcessName, + &pgContext->LsaHandle, + &SecurityMode); + if (!NT_SUCCESS(Status)) + { + ERR("LsaRegisterLogonProcess failed (Status 0x%08lx)\n", Status); + return FALSE; + } + + /* Get the authentication package */ + RtlInitAnsiString((PANSI_STRING)&PackageName, + MSV1_0_PACKAGE_NAME); + + Status = LsaLookupAuthenticationPackage(pgContext->LsaHandle, + &PackageName, + &pgContext->AuthenticationPackage); + if (!NT_SUCCESS(Status)) + { + ERR("LsaLookupAuthenticationPackage failed (Status 0x%08lx)\n", Status); + return FALSE; + } + + return TRUE; +} + +/* EOF */ Propchange: trunk/reactos/dll/win32/msgina/lsa.c ------------------------------------------------------------------------------ svn:eol-style = native Modified: trunk/reactos/dll/win32/msgina/msgina.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msgina/msgina.h?rev=61919&r1=61918&r2=61919&view=diff ============================================================================== --- trunk/reactos/dll/win32/msgina/msgina.h [iso-8859-1] (original) +++ trunk/reactos/dll/win32/msgina/msgina.h [iso-8859-1] Sun Feb 2 12:12:59 2014 @@ -38,6 +38,8 @@ PWLX_DISPATCH_VERSION_1_3 pWlxFuncs; HANDLE hDllInstance; HWND hStatusWindow; + HANDLE LsaHandle; + ULONG AuthenticationPackage; DWORD AutoLogonState; BOOL bDisableCAD; BOOL bAutoAdminLogon; @@ -82,6 +84,12 @@ PFGINA_DISPLAYLOCKEDNOTICE DisplayLockedNotice; } GINA_UI, *PGINA_UI; +/* lsa.c */ + +BOOL +ConnectToLsa( + PGINA_CONTEXT pgContext); + /* msgina.c */ BOOL