https://git.reactos.org/?p=reactos.git;a=commitdiff;h=11fe17c3a1dfcdcbdff8f…
commit 11fe17c3a1dfcdcbdff8fe872c7c91fc58546a86
Author: Andreas Maier <staubim(a)quantentunnel.de>
AuthorDate: Tue Jan 7 19:06:37 2020 +0100
Commit: Thomas Faber <thomas.faber(a)reactos.org>
CommitDate: Wed Mar 4 07:02:37 2020 +0100
[PSDK] Extend struct _SECPKG_DLL_FUNCTIONS, fix definitions.
* Add missing enums to MSV1_0_PROTOCOL_MESSAGE_TYPE and
SECPKG_EXTENDED_INFORMATION_CLASS
* Add missing function entries to LSA_SECPKG_FUNCTION_TABLE and add needed
definitions.
* Fix params of PLSA_AP_CALL_PACKAGE
* Fix SpInitializeFn (+ NTAPI)
---
sdk/include/psdk/ntsecapi.h | 5 +++-
sdk/include/psdk/ntsecpkg.h | 58 ++++++++++++++++++++++++++++++++++++++-------
sdk/include/psdk/sspi.h | 13 ++++++++++
3 files changed, 66 insertions(+), 10 deletions(-)
diff --git a/sdk/include/psdk/ntsecapi.h b/sdk/include/psdk/ntsecapi.h
index 52e9407dc06..c9f6073f4c8 100644
--- a/sdk/include/psdk/ntsecapi.h
+++ b/sdk/include/psdk/ntsecapi.h
@@ -226,7 +226,10 @@ typedef enum _MSV1_0_PROTOCOL_MESSAGE_TYPE {
MsV1_0CacheLogon,
MsV1_0SubAuth,
MsV1_0DeriveCredential,
- MsV1_0CacheLookup
+ MsV1_0CacheLookup,
+#if (_WIN32_WINNT >= _WIN32_WINNT_WINXP)
+ MsV1_0SetProcessOption,
+#endif
} MSV1_0_PROTOCOL_MESSAGE_TYPE, *PMSV1_0_PROTOCOL_MESSAGE_TYPE;
typedef enum _POLICY_LSA_SERVER_ROLE {
PolicyServerRoleBackup = 2,
diff --git a/sdk/include/psdk/ntsecpkg.h b/sdk/include/psdk/ntsecpkg.h
index c10f26b7e38..213fab3c486 100644
--- a/sdk/include/psdk/ntsecpkg.h
+++ b/sdk/include/psdk/ntsecpkg.h
@@ -51,6 +51,8 @@ typedef enum _SECPKG_EXTENDED_INFORMATION_CLASS
SecpkgGssInfo = 1,
SecpkgContextThunks,
SecpkgMutualAuthLevel,
+ SecpkgWowClientDll,
+ SecpkgExtraOids,
SecpkgMaxInfo
} SECPKG_EXTENDED_INFORMATION_CLASS;
@@ -131,9 +133,9 @@ typedef struct _SECPKG_CLIENT_INFO {
*PSECPKG_CLIENT_INFO;
typedef struct _SECURITY_USER_DATA {
- UNICODE_STRING UserName;
- UNICODE_STRING LogonDomainName;
- UNICODE_STRING LogonServer;
+ SECURITY_STRING UserName;
+ SECURITY_STRING LogonDomainName;
+ SECURITY_STRING LogonServer;
PSID pSid;
} SECURITY_USER_DATA, *PSECURITY_USER_DATA,
SecurityUserData, *PSecurityUserData;
@@ -152,6 +154,22 @@ typedef struct _SECPKG_MUTUAL_AUTH_LEVEL {
ULONG MutualAuthLevel;
} SECPKG_MUTUAL_AUTH_LEVEL, *PSECPKG_MUTUAL_AUTH_LEVEL;
+typedef struct _SECPKG_WOW_CLIENT_DLL {
+ SECURITY_STRING WowClientDllPath;
+} SECPKG_WOW_CLIENT_DLL, *PSECPKG_WOW_CLIENT_DLL;
+
+#define SECPKG_MAX_OID_LENGTH 32
+typedef struct _SECPKG_SERIALIZED_OID {
+ ULONG OidLength;
+ ULONG OidAttributes;
+ UCHAR OidValue[SECPKG_MAX_OID_LENGTH];
+} SECPKG_SERIALIZED_OID, *PSECPKG_SERIALIZED_OID;
+
+typedef struct _SECPKG_EXTRA_OIDS {
+ ULONG OidCount;
+ SECPKG_SERIALIZED_OID Oids[1];
+} SECPKG_EXTRA_OIDS, *PSECPKG_EXTRA_OIDS;
+
typedef struct _SECPKG_CALL_INFO {
ULONG ProcessId;
ULONG ThreadId;
@@ -165,6 +183,8 @@ typedef struct _SECPKG_EXTENDED_INFORMATION {
SECPKG_GSS_INFO GssInfo;
SECPKG_CONTEXT_THUNKS ContextThunks;
SECPKG_MUTUAL_AUTH_LEVEL MutualAuthLevel;
+ SECPKG_WOW_CLIENT_DLL WowClientDll;
+ SECPKG_EXTRA_OIDS ExtraOids;
} Info;
} SECPKG_EXTENDED_INFORMATION, *PSECPKG_EXTENDED_INFORMATION;
@@ -235,8 +255,8 @@ typedef PVOID (NTAPI *PLSA_CREATE_SHARED_MEMORY)(ULONG, ULONG);
typedef PVOID (NTAPI *PLSA_ALLOCATE_SHARED_MEMORY)(PVOID, ULONG);
typedef VOID (NTAPI *PLSA_FREE_SHARED_MEMORY)(PVOID, PVOID);
typedef BOOLEAN (NTAPI *PLSA_DELETE_SHARED_MEMORY)(PVOID);
-typedef NTSTATUS (NTAPI *PLSA_OPEN_SAM_USER)(PUNICODE_STRING, SECPKG_NAME_TYPE,
- PUNICODE_STRING, BOOLEAN, ULONG, PVOID*);
+typedef NTSTATUS (NTAPI *PLSA_OPEN_SAM_USER)(PSECURITY_STRING, SECPKG_NAME_TYPE,
+ PSECURITY_STRING, BOOLEAN, ULONG, PVOID*);
typedef NTSTATUS (NTAPI *PLSA_GET_USER_CREDENTIALS)(PVOID, PVOID *, PULONG,
PVOID *, PULONG);
typedef NTSTATUS (NTAPI *PLSA_GET_USER_AUTH_DATA)(PVOID, PUCHAR *, PULONG);
@@ -247,8 +267,8 @@ typedef NTSTATUS (NTAPI *PLSA_CONVERT_AUTH_DATA_TO_TOKEN)(PVOID,
ULONG,
typedef NTSTATUS (NTAPI *PLSA_CLIENT_CALLBACK)(PCHAR, ULONG_PTR, ULONG_PTR,
PSecBuffer, PSecBuffer);
typedef NTSTATUS (NTAPI *PLSA_UPDATE_PRIMARY_CREDENTIALS)(PSECPKG_PRIMARY_CRED,
PSECPKG_SUPPLEMENTAL_CRED_ARRAY);
-typedef NTSTATUS (NTAPI *PLSA_GET_AUTH_DATA_FOR_USER)(PUNICODE_STRING,
- SECPKG_NAME_TYPE, PUNICODE_STRING, PUCHAR *, PULONG, PUNICODE_STRING);
+typedef NTSTATUS (NTAPI *PLSA_GET_AUTH_DATA_FOR_USER)(PSECURITY_STRING,
+ SECPKG_NAME_TYPE, PSECURITY_STRING, PUCHAR *, PULONG, PUNICODE_STRING);
typedef NTSTATUS (NTAPI *PLSA_CRACK_SINGLE_NAME)(ULONG, BOOLEAN,
PUNICODE_STRING, PUNICODE_STRING, ULONG, PUNICODE_STRING, PUNICODE_STRING,
PULONG);
@@ -256,6 +276,11 @@ typedef NTSTATUS (NTAPI *PLSA_AUDIT_ACCOUNT_LOGON)(ULONG, BOOLEAN,
PUNICODE_STRING, PUNICODE_STRING, PUNICODE_STRING, NTSTATUS);
typedef NTSTATUS (NTAPI *PLSA_CALL_PACKAGE_PASSTHROUGH)(PUNICODE_STRING, PVOID,
PVOID, ULONG, PVOID*, PULONG, PNTSTATUS);
+typedef VOID (NTAPI *PLSA_PROTECT_MEMORY)(PVOID, ULONG);
+typedef NTSTATUS (NTAPI *PLSA_OPEN_TOKEN_BY_LOGON_ID)(PLUID, HANDLE *);
+typedef NTSTATUS (NTAPI *PLSA_EXPAND_AUTH_DATA_FOR_DOMAIN)(PUCHAR, ULONG, PVOID, PUCHAR
*, PULONG);
+typedef PVOID (NTAPI *PLSA_ALLOCATE_PRIVATE_HEAP)(SIZE_T);
+typedef VOID (NTAPI *PLSA_FREE_PRIVATE_HEAP)(PVOID);
/* Dispatch tables of functions used by SSP/AP */
typedef struct _SECPKG_DLL_FUNCTIONS {
@@ -322,6 +347,21 @@ typedef struct _LSA_SECPKG_FUNCTION_TABLE {
PLSA_CRACK_SINGLE_NAME CrackSingleName;
PLSA_AUDIT_ACCOUNT_LOGON AuditAccountLogon;
PLSA_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough;
+#ifdef _WINCRED_H_
+ CredReadFn *CrediRead;
+ CredReadDomainCredentialsFn *CrediReadDomainCredentials;
+ CredFreeCredentialsFn *CrediFreeCredentials;
+#else
+ PLSA_PROTECT_MEMORY DummyFunction1;
+ PLSA_PROTECT_MEMORY DummyFunction2;
+ PLSA_PROTECT_MEMORY DummyFunction3;
+#endif
+ PLSA_PROTECT_MEMORY LsaProtectMemory;
+ PLSA_PROTECT_MEMORY LsaUnprotectMemory;
+ PLSA_OPEN_TOKEN_BY_LOGON_ID OpenTokenByLogonId;
+ PLSA_EXPAND_AUTH_DATA_FOR_DOMAIN ExpandAuthDataForDomain;
+ PLSA_ALLOCATE_PRIVATE_HEAP AllocatePrivateHeap;
+ PLSA_FREE_PRIVATE_HEAP FreePrivateHeap;
} LSA_SECPKG_FUNCTION_TABLE,
*PLSA_SECPKG_FUNCTION_TABLE;
@@ -330,7 +370,7 @@ typedef NTSTATUS (NTAPI *PLSA_AP_INITIALIZE_PACKAGE)(ULONG,
PLSA_DISPATCH_TABLE,
PLSA_STRING, PLSA_STRING, PLSA_STRING *);
typedef NTSTATUS (NTAPI *PLSA_AP_LOGON_USER)(LPWSTR, LPWSTR, LPWSTR, LPWSTR,
DWORD, DWORD, PHANDLE);
-typedef NTSTATUS (NTAPI *PLSA_AP_CALL_PACKAGE)(PUNICODE_STRING, PVOID, ULONG,
+typedef NTSTATUS (NTAPI *PLSA_AP_CALL_PACKAGE)(PLSA_CLIENT_REQUEST, PVOID, PVOID, ULONG,
PVOID *, PULONG, PNTSTATUS);
typedef VOID (NTAPI *PLSA_AP_LOGON_TERMINATED)(PLUID);
typedef NTSTATUS (NTAPI *PLSA_AP_CALL_PACKAGE_UNTRUSTED)(PLSA_CLIENT_REQUEST,
@@ -345,7 +385,7 @@ typedef NTSTATUS (NTAPI *PLSA_AP_LOGON_USER_EX2)(PLSA_CLIENT_REQUEST,
SECURITY_LOGON_TYPE, PVOID, PVOID, ULONG, PVOID *, PULONG, PLUID, PNTSTATUS,
PLSA_TOKEN_INFORMATION_TYPE, PVOID *, PUNICODE_STRING *, PUNICODE_STRING *,
PUNICODE_STRING *, PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED_ARRAY *);
-typedef NTSTATUS (SpInitializeFn)(ULONG_PTR, PSECPKG_PARAMETERS,
+typedef NTSTATUS (NTAPI SpInitializeFn)(ULONG_PTR, PSECPKG_PARAMETERS,
PLSA_SECPKG_FUNCTION_TABLE);
typedef NTSTATUS (NTAPI SpShutDownFn)(void);
typedef NTSTATUS (NTAPI SpGetInfoFn)(PSecPkgInfoW);
diff --git a/sdk/include/psdk/sspi.h b/sdk/include/psdk/sspi.h
index c436fd85724..648ea3e160c 100644
--- a/sdk/include/psdk/sspi.h
+++ b/sdk/include/psdk/sspi.h
@@ -77,6 +77,19 @@ typedef struct _SECURITY_INTEGER
} SECURITY_INTEGER, *PSECURITY_INTEGER;
typedef SECURITY_INTEGER TimeStamp, *PTimeStamp;
+// UNICODE_STRING should have the same memory layout in 32 bit and 64 bit mode.
+// In 32 bit mode SECURITY_STRING is simply a clone of UNICODE_STRING.
+// It is used internal in kernel an security components.
+#ifndef _NTDEF_
+typedef struct _SECURITY_STRING {
+ unsigned short Length;
+ unsigned short MaximumLength;
+ unsigned short *Buffer;
+} SECURITY_STRING, *PSECURITY_STRING;
+#else
+typedef UNICODE_STRING SECURITY_STRING, *PSECURITY_STRING;
+#endif
+
#define SSPIPFC_CREDPROV_DO_NOT_SAVE 0x00000001
#define SSPIPFC_NO_CHECKBOX 0x00000002