ULONG RequestBufferSize;
ULONG ResponseBufferSize = 0;
LPWSTR Ptr;
- LSA_STRING PackageName;
- HANDLE LsaHandle = NULL;
- ULONG AuthenticationPackage = 0;
BOOL res = FALSE;
NTSTATUS ProtocolStatus;
NTSTATUS Status;
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))
+ if (!ConnectToLsa(pgContext))
{
- ERR("LsaLookupAuthenticationPackage failed (Status 0x%08lx)\n", Status);
- goto done;
+ ERR("ConnectToLsa() failed\n");
+ return FALSE;
}
/* Call the authentication package */
- Status = LsaCallAuthenticationPackage(LsaHandle,
- AuthenticationPackage,
+ Status = LsaCallAuthenticationPackage(pgContext->LsaHandle,
+ pgContext->AuthenticationPackage,
RequestBuffer,
RequestBufferSize,
(PVOID*)&ResponseBuffer,
if (ResponseBuffer != NULL)
LsaFreeReturnBuffer(ResponseBuffer);
- if (LsaHandle != NULL)
- NtClose(LsaHandle);
-
return res;
}
--- /dev/null
+/*
+ * 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 */