From 01de4d33999eb1bcebbcac5ff4cfde42307b2455 Mon Sep 17 00:00:00 2001 From: Sven Baars Date: Thu, 28 Nov 2019 00:07:54 +0100 Subject: [PATCH] schannel: Update SECPKG_FUNCTION_TABLE to SECPKG_INTERFACE_VERSION_8. Signed-off-by: Sven Baars Signed-off-by: Alexandre Julliard --- dlls/schannel/lsamode.c | 6 +++++- dlls/schannel/tests/main.c | 6 +++++- include/ntsecpkg.h | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/dlls/schannel/lsamode.c b/dlls/schannel/lsamode.c index 96ca240c086..372c5800b38 100644 --- a/dlls/schannel/lsamode.c +++ b/dlls/schannel/lsamode.c @@ -116,6 +116,8 @@ static SECPKG_FUNCTION_TABLE secPkgFunctionTable[2] = NULL, /* UpdateCredentials */ NULL, /* ValidateTargetInfo */ NULL, /* PostLogonUser */ + NULL, /* GetRemoteCredGuardLogonBuffer */ + NULL, /* GetRemoteCredGuardSupplementalCreds */ }, { NULL, /* InitializePackage */ NULL, /* LsaLogonUser */ @@ -153,6 +155,8 @@ static SECPKG_FUNCTION_TABLE secPkgFunctionTable[2] = NULL, /* UpdateCredentials */ NULL, /* ValidateTargetInfo */ NULL, /* PostLogonUser */ + NULL, /* GetRemoteCredGuardLogonBuffer */ + NULL, /* GetRemoteCredGuardSupplementalCreds */ } }; @@ -164,7 +168,7 @@ NTSTATUS WINAPI SpLsaModeInitialize(ULONG LsaVersion, PULONG PackageVersion, { TRACE("(%u, %p, %p, %p)\n", LsaVersion, PackageVersion, ppTables, pcTables); - *PackageVersion = SECPKG_INTERFACE_VERSION_7; + *PackageVersion = SECPKG_INTERFACE_VERSION_8; *pcTables = 2; *ppTables = secPkgFunctionTable; diff --git a/dlls/schannel/tests/main.c b/dlls/schannel/tests/main.c index fc913c14a97..81a723c7997 100644 --- a/dlls/schannel/tests/main.c +++ b/dlls/schannel/tests/main.c @@ -45,7 +45,9 @@ ValidateTargetInfo) #define SECPKG_FUNCTION_TABLE_SIZE_6 FIELD_OFFSET(SECPKG_FUNCTION_TABLE, \ PostLogonUser) -#define SECPKG_FUNCTION_TABLE_SIZE_7 sizeof(SECPKG_FUNCTION_TABLE) +#define SECPKG_FUNCTION_TABLE_SIZE_7 FIELD_OFFSET(SECPKG_FUNCTION_TABLE, \ + GetRemoteCredGuardLogonBuffer) +#define SECPKG_FUNCTION_TABLE_SIZE_8 sizeof(SECPKG_FUNCTION_TABLE) #define LSA_BASE_CAPS ( \ SECPKG_FLAG_INTEGRITY | \ @@ -156,6 +158,8 @@ static PSECPKG_FUNCTION_TABLE getNextSecPkgTable(PSECPKG_FUNCTION_TABLE pTable, size = SECPKG_FUNCTION_TABLE_SIZE_6; else if (Version == SECPKG_INTERFACE_VERSION_7) size = SECPKG_FUNCTION_TABLE_SIZE_7; + else if (Version == SECPKG_INTERFACE_VERSION_8) + size = SECPKG_FUNCTION_TABLE_SIZE_8; else { ok(FALSE, "Unknown package version 0x%x\n", Version); return NULL; diff --git a/include/ntsecpkg.h b/include/ntsecpkg.h index 08373a2635d..99b9ec7d407 100644 --- a/include/ntsecpkg.h +++ b/include/ntsecpkg.h @@ -38,6 +38,7 @@ extern "C" { #define SECPKG_INTERFACE_VERSION_5 0x100000 #define SECPKG_INTERFACE_VERSION_6 0x200000 #define SECPKG_INTERFACE_VERSION_7 0x400000 +#define SECPKG_INTERFACE_VERSION_8 0x800000 /* enum definitions for Secure Service Provider/Authentication Packages */ typedef enum _LSA_TOKEN_INFORMATION_TYPE { @@ -305,6 +306,28 @@ typedef struct _LSA_SECPKG_FUNCTION_TABLE { } LSA_SECPKG_FUNCTION_TABLE, *PLSA_SECPKG_FUNCTION_TABLE; +/* Functions for redirected credentials */ +typedef NTSTATUS (NTAPI *PLSA_REDIRECTED_LOGON_INIT)(HANDLE, + const UNICODE_STRING *, ULONG, const LUID *); +typedef NTSTATUS (NTAPI *PLSA_REDIRECTED_LOGON_CALLBACK)(HANDLE, PVOID, ULONG, + PVOID *, ULONG *); +typedef VOID (NTAPI *PLSA_REDIRECTED_LOGON_CLEANUP_CALLBACK)(HANDLE); +typedef NTSTATUS (NTAPI *PLSA_REDIRECTED_LOGON_GET_LOGON_CREDS)(HANDLE, PBYTE *, + PULONG); +typedef NTSTATUS (NTAPI *PLSA_REDIRECTED_LOGON_GET_SUPP_CREDS)(HANDLE, + PSECPKG_SUPPLEMENTAL_CRED_ARRAY *); + +typedef struct _SECPKG_REDIRECTED_LOGON_BUFFER { + GUID RedirectedLogonGuid; + HANDLE RedirectedLogonHandle; + PLSA_REDIRECTED_LOGON_INIT Init; + PLSA_REDIRECTED_LOGON_CALLBACK Callback; + PLSA_REDIRECTED_LOGON_CLEANUP_CALLBACK CleanupCallback; + PLSA_REDIRECTED_LOGON_GET_LOGON_CREDS GetLogonCreds; + PLSA_REDIRECTED_LOGON_GET_SUPP_CREDS GetSupplementalCreds; +} SECPKG_REDIRECTED_LOGON_BUFFER, + *PSECPKG_REDIRECTED_LOGON_BUFFER; + /* LSA-mode functions implemented by SSP/AP obtainable by a dispatch table */ typedef NTSTATUS (NTAPI *PLSA_AP_INITIALIZE_PACKAGE)(ULONG, PLSA_DISPATCH_TABLE, PLSA_STRING, PLSA_STRING, PLSA_STRING *); @@ -374,6 +397,12 @@ typedef NTSTATUS (NTAPI SpUpdateCredentialsFn)(LSA_SEC_HANDLE, GUID *, ULONG, typedef NTSTATUS (NTAPI SpValidateTargetInfoFn)(PLSA_CLIENT_REQUEST, PVOID, PVOID, ULONG, PSECPKG_TARGETINFO); typedef NTSTATUS (NTAPI LSA_AP_POST_LOGON_USER)(PSECPKG_POST_LOGON_USER_INFO); +typedef NTSTATUS (NTAPI SpGetRemoteCredGuardLogonBufferFn)(LSA_SEC_HANDLE, + const UNICODE_STRING *, PHANDLE, PLSA_REDIRECTED_LOGON_CALLBACK *, + PLSA_REDIRECTED_LOGON_CLEANUP_CALLBACK *, PULONG, PVOID *); +typedef NTSTATUS (NTAPI SpGetRemoteCredGuardSupplementalCredsFn)(LSA_SEC_HANDLE, + const UNICODE_STRING *, PHANDLE, PLSA_REDIRECTED_LOGON_CALLBACK *, + PLSA_REDIRECTED_LOGON_CLEANUP_CALLBACK *, PULONG, PVOID *); /* User-mode functions implemented by SSP/AP obtainable by a dispatch table */ typedef NTSTATUS (NTAPI SpInstanceInitFn)(ULONG, PSECPKG_DLL_FUNCTIONS, @@ -446,6 +475,9 @@ typedef struct SECPKG_FUNCTION_TABLE { /* Packages with version SECPKG_INTERFACE_VERSION_6 end here */ LSA_AP_POST_LOGON_USER* PostLogonUser; /* Packages with version SECPKG_INTERFACE_VERSION_7 end here */ + SpGetRemoteCredGuardLogonBufferFn* GetRemoteCredGuardLogonBuffer; + SpGetRemoteCredGuardSupplementalCredsFn* GetRemoteCredGuardSupplementalCreds; + /* Packages with version SECPKG_INTERFACE_VERSION_8 end here */ } SECPKG_FUNCTION_TABLE, *PSECPKG_FUNCTION_TABLE;