+++ /dev/null
-#ifndef __SSPI_H__
-#define __SSPI_H__
-
-// for ntifs.h:
-#define ISSP_LEVEL 32
-#define ISSP_MODE 0
-
-#ifdef MIDL_PASS
-#define MIDL_PROP(x) x
-#else
-#define MIDL_PROP(x)
-#endif
-
-#define SEC_TEXT TEXT
-#define SEC_FAR
-#define SEC_ENTRY __stdcall
-
-#if defined(_NO_KSECDD_IMPORT_)
-#define KSECDDDECLSPEC
-#else
-#define KSECDDDECLSPEC __declspec(dllimport)
-#endif
-
-#define SECQOP_WRAP_NO_ENCRYPT 0x80000001
-#define SECQOP_WRAP_OOB_DATA 0x40000000
-
-#define SECURITY_ENTRYPOINTW SEC_TEXT("InitSecurityInterfaceW")
-#define SECURITY_ENTRYPOINT SECURITY_ENTRYPOINTW
-
-#define SECURITY_SUPPORT_PROVIDER_INTERFACE_VERSION 1
-#define SECURITY_SUPPORT_PROVIDER_INTERFACE_VERSION_2 2
-#define SECURITY_SUPPORT_PROVIDER_INTERFACE_VERSION_3 3
-#define SECURITY_SUPPORT_PROVIDER_INTERFACE_VERSION_4 4
-
-#define SECURITY_NATIVE_DREP 0x00000010
-#define SECURITY_NETWORK_DREP 0x00000000
-
-#define SECPKG_ID_NONE 0xFFFF
-
-#define SECPKG_CRED_ATTR_NAMES 1
-#define SECPKG_CRED_ATTR_SSI_PROVIDER 2
-
-#define SECPKG_ATTR_SIZES 0
-#define SECPKG_ATTR_NAMES 1
-#define SECPKG_ATTR_LIFESPAN 2
-#define SECPKG_ATTR_DCE_INFO 3
-#define SECPKG_ATTR_STREAM_SIZES 4
-#define SECPKG_ATTR_KEY_INFO 5
-#define SECPKG_ATTR_AUTHORITY 6
-#define SECPKG_ATTR_PROTO_INFO 7
-#define SECPKG_ATTR_PASSWORD_EXPIRY 8
-#define SECPKG_ATTR_SESSION_KEY 9
-#define SECPKG_ATTR_PACKAGE_INFO 10
-#define SECPKG_ATTR_USER_FLAGS 11
-#define SECPKG_ATTR_NEGOTIATION_INFO 12
-#define SECPKG_ATTR_NATIVE_NAMES 13
-#define SECPKG_ATTR_FLAGS 14
-#define SECPKG_ATTR_USE_VALIDATED 15
-#define SECPKG_ATTR_CREDENTIAL_NAME 16
-#define SECPKG_ATTR_TARGET_INFORMATION 17
-#define SECPKG_ATTR_ACCESS_TOKEN 18
-#define SECPKG_ATTR_TARGET 19
-#define SECPKG_ATTR_AUTHENTICATION_ID 20
-#define SECPKG_ATTR_LOGOFF_TIME 21
-#define SECPKG_ATTR_NEGO_KEYS 22
-#define SECPKG_ATTR_PROMPTING_NEEDED 24
-#define SECPKG_ATTR_UNIQUE_BINDINGS 25
-#define SECPKG_ATTR_ENDPOINT_BINDINGS 26
-#define SECPKG_ATTR_CLIENT_SPECIFIED_TARGET 27
-#define SECPKG_ATTR_LAST_CLIENT_TOKEN_STATUS 30
-#define SECPKG_ATTR_NEGO_PKG_INFO 31
-#define SECPKG_ATTR_NEGO_STATUS 32
-#define SECPKG_ATTR_CONTEXT_DELETED 33
-
-#define SECPKG_FLAG_INTEGRITY 0x00000001
-#define SECPKG_FLAG_PRIVACY 0x00000002
-#define SECPKG_FLAG_TOKEN_ONLY 0x00000004
-#define SECPKG_FLAG_DATAGRAM 0x00000008
-#define SECPKG_FLAG_CONNECTION 0x00000010
-#define SECPKG_FLAG_MULTI_REQUIRED 0x00000020
-#define SECPKG_FLAG_CLIENT_ONLY 0x00000040
-#define SECPKG_FLAG_EXTENDED_ERROR 0x00000080
-#define SECPKG_FLAG_IMPERSONATION 0x00000100
-#define SECPKG_FLAG_ACCEPT_WIN32_NAME 0x00000200
-#define SECPKG_FLAG_STREAM 0x00000400
-#define SECPKG_FLAG_NEGOTIABLE 0x00000800
-#define SECPKG_FLAG_GSS_COMPATIBLE 0x00001000
-#define SECPKG_FLAG_LOGON 0x00002000
-#define SECPKG_FLAG_ASCII_BUFFERS 0x00004000
-#define SECPKG_FLAG_FRAGMENT 0x00008000
-#define SECPKG_FLAG_MUTUAL_AUTH 0x00010000
-#define SECPKG_FLAG_DELEGATION 0x00020000
-#define SECPKG_FLAG_READONLY_WITH_CHECKSUM 0x00040000
-#define SECPKG_FLAG_RESTRICTED_TOKENS 0x00080000
-#define SECPKG_FLAG_NEGO_EXTENDER 0x00100000
-#define SECPKG_FLAG_NEGOTIABLE2 0x00200000
-
-#define SECPKG_CRED_INBOUND 0x00000001
-#define SECPKG_CRED_OUTBOUND 0x00000002
-#define SECPKG_CRED_BOTH 0x00000003
-#define SECPKG_CRED_DEFAULT 0x00000004
-#define SECPKG_CRED_RESERVED 0xF0000000
-#define SECPKG_CRED_AUTOLOGON_RESTRICTED 0x00000010
-#define SECPKG_CRED_PROCESS_POLICY_ONLY 0x00000020
-
-#define SECPKG_CONTEXT_EXPORT_RESET_NEW 0x00000001
-#define SECPKG_CONTEXT_EXPORT_DELETE_OLD 0x00000002
-#define SECPKG_CONTEXT_EXPORT_TO_KERNEL 0x00000004
-
-#define SECPKG_ATTR_SUBJECT_SECURITY_ATTRIBUTES 128
-#define SECPKG_ATTR_NEGO_INFO_FLAG_NO_KERBEROS 0x1
-#define SECPKG_ATTR_NEGO_INFO_FLAG_NO_NTLM 0x2
-
-#define SecPkgContext_NativeNames SecPkgContext_NativeNamesW
-#define PSecPkgContext_NativeNames PSecPkgContext_NativeNamesW
-
-#define SECBUFFER_VERSION 0
-
-#define SECBUFFER_EMPTY 0
-#define SECBUFFER_DATA 1
-#define SECBUFFER_TOKEN 2
-#define SECBUFFER_PKG_PARAMS 3
-#define SECBUFFER_MISSING 4
-#define SECBUFFER_EXTRA 5
-#define SECBUFFER_STREAM_TRAILER 6
-#define SECBUFFER_STREAM_HEADER 7
-#define SECBUFFER_NEGOTIATION_INFO 8
-#define SECBUFFER_PADDING 9
-#define SECBUFFER_STREAM 10
-#define SECBUFFER_MECHLIST 11
-#define SECBUFFER_MECHLIST_SIGNATURE 12
-#define SECBUFFER_TARGET 13
-#define SECBUFFER_CHANNEL_BINDINGS 14
-#define SECBUFFER_CHANGE_PASS_RESPONSE 15
-#define SECBUFFER_TARGET_HOST 16
-#define SECBUFFER_ALERT 17
-
-#define SECBUFFER_ATTRMASK 0xF0000000
-#define SECBUFFER_READONLY 0x80000000
-#define SECBUFFER_READONLY_WITH_CHECKSUM 0x10000000
-#define SECBUFFER_RESERVED 0x60000000
-
-#define ISC_REQ_DELEGATE 0x00000001
-#define ISC_REQ_MUTUAL_AUTH 0x00000002
-#define ISC_REQ_REPLAY_DETECT 0x00000004
-#define ISC_REQ_SEQUENCE_DETECT 0x00000008
-#define ISC_REQ_CONFIDENTIALITY 0x00000010
-#define ISC_REQ_USE_SESSION_KEY 0x00000020
-#define ISC_REQ_PROMPT_FOR_CREDS 0x00000040
-#define ISC_REQ_USE_SUPPLIED_CREDS 0x00000080
-#define ISC_REQ_ALLOCATE_MEMORY 0x00000100
-#define ISC_REQ_USE_DCE_STYLE 0x00000200
-#define ISC_REQ_DATAGRAM 0x00000400
-#define ISC_REQ_CONNECTION 0x00000800
-#define ISC_REQ_CALL_LEVEL 0x00001000
-#define ISC_REQ_FRAGMENT_SUPPLIED 0x00002000
-#define ISC_REQ_EXTENDED_ERROR 0x00004000
-#define ISC_REQ_STREAM 0x00008000
-#define ISC_REQ_INTEGRITY 0x00010000
-#define ISC_REQ_IDENTIFY 0x00020000
-#define ISC_REQ_NULL_SESSION 0x00040000
-#define ISC_REQ_MANUAL_CRED_VALIDATION 0x00080000
-#define ISC_REQ_RESERVED1 0x00100000
-#define ISC_REQ_FRAGMENT_TO_FIT 0x00200000
-#define ISC_REQ_FORWARD_CREDENTIALS 0x00400000
-#define ISC_REQ_NO_INTEGRITY 0x00800000
-#define ISC_REQ_USE_HTTP_STYLE 0x01000000
-
-#define ISC_RET_DELEGATE 0x00000001
-#define ISC_RET_MUTUAL_AUTH 0x00000002
-#define ISC_RET_REPLAY_DETECT 0x00000004
-#define ISC_RET_SEQUENCE_DETECT 0x00000008
-#define ISC_RET_CONFIDENTIALITY 0x00000010
-#define ISC_RET_USE_SESSION_KEY 0x00000020
-#define ISC_RET_USED_COLLECTED_CREDS 0x00000040
-#define ISC_RET_USED_SUPPLIED_CREDS 0x00000080
-#define ISC_RET_ALLOCATED_MEMORY 0x00000100
-#define ISC_RET_USED_DCE_STYLE 0x00000200
-#define ISC_RET_DATAGRAM 0x00000400
-#define ISC_RET_CONNECTION 0x00000800
-#define ISC_RET_INTERMEDIATE_RETURN 0x00001000
-#define ISC_RET_CALL_LEVEL 0x00002000
-#define ISC_RET_EXTENDED_ERROR 0x00004000
-#define ISC_RET_STREAM 0x00008000
-#define ISC_RET_INTEGRITY 0x00010000
-#define ISC_RET_IDENTIFY 0x00020000
-#define ISC_RET_NULL_SESSION 0x00040000
-#define ISC_RET_MANUAL_CRED_VALIDATION 0x00080000
-#define ISC_RET_RESERVED1 0x00100000
-#define ISC_RET_FRAGMENT_ONLY 0x00200000
-#define ISC_RET_FORWARD_CREDENTIALS 0x00400000
-#define ISC_RET_USED_HTTP_STYLE 0x01000000
-#define ISC_RET_NO_ADDITIONAL_TOKEN 0x02000000
-#define ISC_RET_REAUTHENTICATION 0x08000000
-
-#define ASC_REQ_DELEGATE 0x00000001
-#define ASC_REQ_MUTUAL_AUTH 0x00000002
-#define ASC_REQ_REPLAY_DETECT 0x00000004
-#define ASC_REQ_SEQUENCE_DETECT 0x00000008
-#define ASC_REQ_CONFIDENTIALITY 0x00000010
-#define ASC_REQ_USE_SESSION_KEY 0x00000020
-#define ASC_REQ_ALLOCATE_MEMORY 0x00000100
-#define ASC_REQ_USE_DCE_STYLE 0x00000200
-#define ASC_REQ_DATAGRAM 0x00000400
-#define ASC_REQ_CONNECTION 0x00000800
-#define ASC_REQ_CALL_LEVEL 0x00001000
-#define ASC_REQ_EXTENDED_ERROR 0x00008000
-#define ASC_REQ_STREAM 0x00010000
-#define ASC_REQ_INTEGRITY 0x00020000
-#define ASC_REQ_LICENSING 0x00040000
-#define ASC_REQ_IDENTIFY 0x00080000
-#define ASC_REQ_ALLOW_NULL_SESSION 0x00100000
-#define ASC_REQ_ALLOW_NON_USER_LOGONS 0x00200000
-#define ASC_REQ_ALLOW_CONTEXT_REPLAY 0x00400000
-#define ASC_REQ_FRAGMENT_TO_FIT 0x00800000
-#define ASC_REQ_FRAGMENT_SUPPLIED 0x00002000
-#define ASC_REQ_NO_TOKEN 0x01000000
-#define ASC_REQ_PROXY_BINDINGS 0x04000000
-//#define SSP_RET_REAUTHENTICATION 0x08000000 // internal
-
-#define ASC_REQ_ALLOW_MISSING_BINDINGS 0x10000000
-#define ASC_RET_DELEGATE 0x00000001
-#define ASC_RET_MUTUAL_AUTH 0x00000002
-#define ASC_RET_REPLAY_DETECT 0x00000004
-#define ASC_RET_SEQUENCE_DETECT 0x00000008
-#define ASC_RET_CONFIDENTIALITY 0x00000010
-#define ASC_RET_USE_SESSION_KEY 0x00000020
-#define ASC_RET_ALLOCATED_MEMORY 0x00000100
-#define ASC_RET_USED_DCE_STYLE 0x00000200
-#define ASC_RET_DATAGRAM 0x00000400
-#define ASC_RET_CONNECTION 0x00000800
-#define ASC_RET_CALL_LEVEL 0x00002000
-#define ASC_RET_THIRD_LEG_FAILED 0x00004000
-#define ASC_RET_EXTENDED_ERROR 0x00008000
-#define ASC_RET_STREAM 0x00010000
-#define ASC_RET_INTEGRITY 0x00020000
-#define ASC_RET_LICENSING 0x00040000
-#define ASC_RET_IDENTIFY 0x00080000
-#define ASC_RET_NULL_SESSION 0x00100000
-#define ASC_RET_ALLOW_NON_USER_LOGONS 0x00200000
-#define ASC_RET_ALLOW_CONTEXT_REPLAY 0x00400000
-#define ASC_RET_FRAGMENT_ONLY 0x00800000
-#define ASC_RET_NO_TOKEN 0x01000000
-#define ASC_RET_NO_ADDITIONAL_TOKEN 0x02000000
-#define ASC_RET_NO_PROXY_BINDINGS 0x04000000
-//#define SSP_RET_REAUTHENTICATION 0x08000000 // internal
-#define ASC_RET_MISSING_BINDINGS 0x10000000
-
-#define SEC_DELETED_HANDLE ((ULONG_PTR)(-2))
-
-#define SecInvalidateHandle(x) \
- ((PSecHandle)(x))->dwLower = ((PSecHandle)(x))->dwUpper = ((ULONG_PTR)((INT_PTR)-1));
-
-#define SecIsValidHandle(x) \
- ( ( ((PSecHandle)(x))->dwLower != (ULONG_PTR)(INT_PTR)-1 ) && \
- ( ((PSecHandle)(x))->dwUpper != (ULONG_PTR)(INT_PTR)-1 ) )
-
-typedef WCHAR SEC_WCHAR;
-typedef CHAR SEC_CHAR;
-typedef LARGE_INTEGER _SECURITY_INTEGER, SECURITY_INTEGER, *PSECURITY_INTEGER;
-typedef SECURITY_INTEGER TimeStamp, *PTimeStamp;
-typedef UNICODE_STRING SECURITY_STRING, *PSECURITY_STRING;
-#if ISSP_MODE == 0
-#define PSSPI_SEC_STRING PSECURITY_STRING
-#else
-#define PSSPI_SEC_STRING SEC_WCHAR*
-#endif
-
-typedef PVOID PSEC_WINNT_AUTH_IDENTITY_OPAQUE;
-
-#ifndef __SECSTATUS_DEFINED__
-typedef LONG SECURITY_STATUS;
-#define __SECSTATUS_DEFINED__
-#endif
-
-typedef enum _SECPKG_CRED_CLASS
-{
- SecPkgCredClass_None = 0,
- SecPkgCredClass_Ephemeral = 10,
- SecPkgCredClass_PersistedGeneric = 20,
- SecPkgCredClass_PersistedSpecific = 30,
- SecPkgCredClass_Explicit = 40,
-} SECPKG_CRED_CLASS, *PSECPKG_CRED_CLASS;
-
-typedef struct _SEC_NEGOTIATION_INFO
-{
- ULONG Size;
- ULONG NameLength;
- SEC_WCHAR *Name;
- PVOID Reserved;
-} SEC_NEGOTIATION_INFO, *PSEC_NEGOTIATION_INFO;
-
-typedef struct _SEC_CHANNEL_BINDINGS
-{
- ULONG dwInitiatorAddrType;
- ULONG cbInitiatorLength;
- ULONG dwInitiatorOffset;
- ULONG dwAcceptorAddrType;
- ULONG cbAcceptorLength;
- ULONG dwAcceptorOffset;
- ULONG cbApplicationDataLength;
- ULONG dwApplicationDataOffset;
-} SEC_CHANNEL_BINDINGS, *PSEC_CHANNEL_BINDINGS;
-
-#ifndef _AUTH_IDENTITY_EX2_DEFINED
-#define _AUTH_IDENTITY_EX2_DEFINED
-typedef struct _SEC_WINNT_AUTH_IDENTITY_EX2
-{
- ULONG Version;
- USHORT cbHeaderLength;
- ULONG cbStructureLength;
- ULONG UserOffset;
- USHORT UserLength;
- ULONG DomainOffset;
- USHORT DomainLength;
- ULONG PackedCredentialsOffset;
- USHORT PackedCredentialsLength;
- ULONG Flags;
- ULONG PackageListOffset;
- USHORT PackageListLength;
-} SEC_WINNT_AUTH_IDENTITY_EX2, *PSEC_WINNT_AUTH_IDENTITY_EX2;
-#define SEC_WINNT_AUTH_IDENTITY_VERSION_2 0x201
-#endif
-
-#ifndef _AUTH_IDENTITY_DEFINED
-#define _AUTH_IDENTITY_DEFINED
-typedef struct _SEC_WINNT_AUTH_IDENTITY_W
-{
- PUSHORT User;
- ULONG UserLength;
- PUSHORT Domain;
- ULONG DomainLength;
- PUSHORT Password;
- ULONG PasswordLength;
- ULONG Flags;
-} SEC_WINNT_AUTH_IDENTITY_W, *PSEC_WINNT_AUTH_IDENTITY_W;
-#define SEC_WINNT_AUTH_IDENTITY_ANSI 0x1
-#define SEC_WINNT_AUTH_IDENTITY_UNICODE 0x2
-#define SEC_WINNT_AUTH_IDENTITY SEC_WINNT_AUTH_IDENTITY_W
-#define PSEC_WINNT_AUTH_IDENTITY PSEC_WINNT_AUTH_IDENTITY_W
-#define _SEC_WINNT_AUTH_IDENTITY _SEC_WINNT_AUTH_IDENTITY_W
-#endif
-
-#ifndef SEC_WINNT_AUTH_IDENTITY_VERSION
-#define SEC_WINNT_AUTH_IDENTITY_VERSION 0x200
-typedef struct _SEC_WINNT_AUTH_IDENTITY_EXW
-{
- ULONG Version;
- ULONG Length;
- PUSHORT User;
- ULONG UserLength;
- PUSHORT Domain;
- ULONG DomainLength;
- PUSHORT Password;
- ULONG PasswordLength;
- ULONG Flags;
- PUSHORT PackageList;
- ULONG PackageListLength;
-} SEC_WINNT_AUTH_IDENTITY_EXW, *PSEC_WINNT_AUTH_IDENTITY_EXW;
-#define SEC_WINNT_AUTH_IDENTITY_EX SEC_WINNT_AUTH_IDENTITY_EXW
-#define PSEC_WINNT_AUTH_IDENTITY_EX PSEC_WINNT_AUTH_IDENTITY_EXW
-#endif
-
-#ifndef __SECHANDLE_DEFINED__
-typedef struct _SecHandle
-{
- ULONG_PTR dwLower;
- ULONG_PTR dwUpper;
-} SecHandle, *PSecHandle;
-#define __SECHANDLE_DEFINED__
-#endif
-
-typedef SecHandle CredHandle, *PCredHandle, CtxtHandle, *PCtxtHandle;
-
-typedef struct _SecBuffer
-{
- ULONG cbBuffer;
- ULONG BufferType;
-#ifdef MIDL_PASS
- MIDL_PROP([size_is(cbBuffer)]) PCHAR pvBuffer;
-#else
- _Field_size_bytes_(cbBuffer) void SEC_FAR *pvBuffer;
-#endif
-} SecBuffer, *PSecBuffer;
-
-typedef struct _SecBufferDesc
-{
- ULONG ulVersion;
- ULONG cBuffers;
- MIDL_PROP([size_is(cBuffers)]) _Field_size_(cBuffers) PSecBuffer pBuffers;
-} SecBufferDesc, SEC_FAR *PSecBufferDesc;
-
-typedef struct _SecPkgInfoW
-{
- ULONG fCapabilities;
- USHORT wVersion;
- USHORT wRPCID;
- ULONG cbMaxToken;
- MIDL_PROP([string]) SEC_WCHAR *Name;
- MIDL_PROP([string]) SEC_WCHAR *Comment;
-} SecPkgInfoW, *PSecPkgInfoW;
-#define SecPkgInfo SecPkgInfoW
-#define PSecPkgInfo PSecPkgInfoW
-
-typedef struct _SecPkgCredentials_NamesW
-{
- MIDL_PROP([string]) SEC_WCHAR *sUserName;
-} SecPkgCredentials_NamesW, *PSecPkgCredentials_NamesW;
-#define SecPkgCredentials_Names SecPkgCredentials_NamesW
-#define PSecPkgCredentials_Names PSecPkgCredentials_NamesW
-
-typedef struct _SecPkgContext_NamesW
-{
- SEC_WCHAR *sUserName;
-} SecPkgContext_NamesW, *PSecPkgContext_NamesW;
-#define SecPkgContext_Names SecPkgContext_NamesW
-#define PSecPkgContext_Names PSecPkgContext_NamesW
-
-#if OSVER(NTDDI_VERSION) > NTDDI_WIN2K
-typedef struct _SecPkgContext_CredentialNameW
-{
- ULONG CredentialType;
- SEC_WCHAR *sCredentialName;
-} SecPkgContext_CredentialNameW, *PSecPkgContext_CredentialNameW;
-#endif
-#define SecPkgContext_CredentialName SecPkgContext_CredentialNameW
-#define PSecPkgContext_CredentialName PSecPkgContext_CredentialNameW
-
-typedef struct _SecPkgContext_SubjectAttributes
-{
- PVOID AttributeInfo;
-} SecPkgContext_SubjectAttributes, *PSecPkgContext_SubjectAttributes;
-
-typedef struct _SecPkgContext_CredInfo
-{
- SECPKG_CRED_CLASS CredClass;
- ULONG IsPromptingNeeded;
-} SecPkgContext_CredInfo, *PSecPkgContext_CredInfo;
-
-typedef struct _SecPkgContext_NegoPackageInfo
-{
- ULONG PackageMask;
-} SecPkgContext_NegoPackageInfo, *PSecPkgContext_NegoPackageInfo;
-
-typedef struct _SecPkgContext_NegoStatus
-{
- ULONG LastStatus;
-} SecPkgContext_NegoStatus, *PSecPkgContext_NegoStatus;
-
-typedef struct _SecPkgContext_Sizes
-{
- ULONG cbMaxToken;
- ULONG cbMaxSignature;
- ULONG cbBlockSize;
- ULONG cbSecurityTrailer;
-} SecPkgContext_Sizes, *PSecPkgContext_Sizes;
-
-typedef struct _SecPkgContext_StreamSizes
-{
- ULONG cbHeader;
- ULONG cbTrailer;
- ULONG cbMaximumMessage;
- ULONG cBuffers;
- ULONG cbBlockSize;
-} SecPkgContext_StreamSizes, *PSecPkgContext_StreamSizes;
-
-typedef struct _SecPkgContext_Lifespan
-{
- TimeStamp tsStart;
- TimeStamp tsExpiry;
-} SecPkgContext_Lifespan, *PSecPkgContext_Lifespan;
-
-typedef struct _SecPkgContext_PasswordExpiry
-{
- TimeStamp tsPasswordExpires;
-} SecPkgContext_PasswordExpiry, *PSecPkgContext_PasswordExpiry;
-
-typedef struct _SecPkgContext_ProtoInfoW
-{
- SEC_WCHAR *sProtocolName;
- ULONG majorVersion;
- ULONG minorVersion;
-} SecPkgContext_ProtoInfoW, *PSecPkgContext_ProtoInfoW;
-#define SecPkgContext_ProtoInfo SecPkgContext_ProtoInfoW
-#define PSecPkgContext_ProtoInfo PSecPkgContext_ProtoInfoW
-
-typedef struct _SecPkgContext_KeyInfoW
-{
- SEC_WCHAR *sSignatureAlgorithmName;
- SEC_WCHAR *sEncryptAlgorithmName;
- ULONG KeySize;
- ULONG SignatureAlgorithm;
- ULONG EncryptAlgorithm;
-} SecPkgContext_KeyInfoW, *PSecPkgContext_KeyInfoW;
-#define SecPkgContext_KeyInfo SecPkgContext_KeyInfoW
-#define PSecPkgContext_KeyInfo PSecPkgContext_KeyInfoW
-
-typedef struct _SecPkgContext_SessionKey
-{
- ULONG SessionKeyLength;
- _Field_size_bytes_(SessionKeyLength) PUCHAR SessionKey;
-} SecPkgContext_SessionKey, *PSecPkgContext_SessionKey;
-
-typedef struct _SecPkgContext_NegoKeys
-{
- ULONG KeyType;
- USHORT KeyLength;
- _Field_size_bytes_(KeyLength) PUCHAR KeyValue;
- ULONG VerifyKeyType;
- USHORT VerifyKeyLength;
- _Field_size_bytes_(VerifyKeyLength) PUCHAR VerifyKeyValue;
-} SecPkgContext_NegoKeys, *PSecPkgContext_NegoKeys;
-
-typedef struct _SecPkgContext_DceInfo
-{
- ULONG AuthzSvc;
- PVOID pPac;
-} SecPkgContext_DceInfo, *PSecPkgContext_DceInfo;
-
-typedef struct _SecPkgContext_PackageInfoW
-{
- PSecPkgInfoW PackageInfo;
-} SecPkgContext_PackageInfoW, *PSecPkgContext_PackageInfoW;
-#define SecPkgContext_PackageInfo SecPkgContext_PackageInfoW
-#define PSecPkgContext_PackageInfo PSecPkgContext_PackageInfoW
-
-typedef struct _SecPkgContext_UserFlags
-{
- ULONG UserFlags;
-} SecPkgContext_UserFlags, *PSecPkgContext_UserFlags;
-
-typedef struct _SecPkgContext_Flags
-{
- ULONG Flags;
-} SecPkgContext_Flags, *PSecPkgContext_Flags;
-
-typedef struct _SecPkgContext_NegotiationInfoW
-{
- PSecPkgInfoW PackageInfo ;
- ULONG NegotiationState ;
-} SecPkgContext_NegotiationInfoW, *PSecPkgContext_NegotiationInfoW;
-
-typedef struct _SecPkgContext_AuthorityW
-{
- SEC_WCHAR *sAuthorityName;
-} SecPkgContext_AuthorityW, *PSecPkgContext_AuthorityW;
-#define SecPkgContext_Authority SecPkgContext_AuthorityW
-#define PSecPkgContext_Authority PSecPkgContext_AuthorityW
-
-
-#if NTDDI_VERSION > NTDDI_WS03
-typedef struct _SecPkgCredentials_SSIProviderW
-{
- SEC_WCHAR *sProviderName;
- ULONG ProviderInfoLength;
- PCHAR ProviderInfo;
-} SecPkgCredentials_SSIProviderW, *PSecPkgCredentials_SSIProviderW;
-#define SecPkgCredentials_SSIProvider SecPkgCredentials_SSIProviderW
-#define PSecPkgCredentials_SSIProvider PSecPkgCredentials_SSIProviderW
-
-typedef struct _SecPkgContext_LogoffTime
-{
- TimeStamp tsLogoffTime;
-} SecPkgContext_LogoffTime, *PSecPkgContext_LogoffTime;
-#endif
-
-/* forward declaration */
-typedef struct _SECURITY_FUNCTION_TABLE_W SecurityFunctionTableW, *PSecurityFunctionTableW;
-#define SecurityFunctionTable SecurityFunctionTableW
-#define PSecurityFunctionTable PSecurityFunctionTableW
-
-typedef
-VOID
-(SEC_ENTRY * SEC_GET_KEY_FN)(
- PVOID Arg,
- PVOID Principal,
- ULONG KeyVer,
- PVOID *Key,
- SECURITY_STATUS *Status);
-
-KSECDDDECLSPEC
-SECURITY_STATUS
-SEC_ENTRY
-AcceptSecurityContext(
- _In_opt_ PCredHandle phCredential,
- _In_opt_ PCtxtHandle phContext,
- _In_opt_ PSecBufferDesc pInput,
- _In_ ULONG fContextReq,
- _In_ ULONG TargetDataRep,
- _In_opt_ PCtxtHandle phNewContext,
- _In_opt_ PSecBufferDesc pOutput,
- _Out_ PULONG pfContextAttr,
- _Out_opt_ PTimeStamp ptsExpiry);
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * ACCEPT_SECURITY_CONTEXT_FN)(
- PCredHandle,
- PCtxtHandle,
- PSecBufferDesc,
- ULONG,
- ULONG,
- PCtxtHandle,
- PSecBufferDesc,
- PULONG,
- PTimeStamp);
-
-KSECDDDECLSPEC
-SECURITY_STATUS
-SEC_ENTRY
-AcquireCredentialsHandleW(
- _In_opt_ PSSPI_SEC_STRING pPrincipal,
- _In_ PSSPI_SEC_STRING pPackage,
- _In_ ULONG fCredentialUse,
- _In_opt_ PVOID pvLogonId,
- _In_opt_ PVOID pAuthData,
- _In_opt_ SEC_GET_KEY_FN pGetKeyFn,
- _In_opt_ PVOID pvGetKeyArgument,
- _Out_ PCredHandle phCredential,
- _Out_opt_ PTimeStamp ptsExpiry);
-#define AcquireCredentialsHandle AcquireCredentialsHandleW
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * ACQUIRE_CREDENTIALS_HANDLE_FN_W)(
- PSSPI_SEC_STRING,
- PSSPI_SEC_STRING,
- ULONG,
- PVOID,
- PVOID,
- SEC_GET_KEY_FN,
- PVOID,
- PCredHandle,
- PTimeStamp);
-#define ACQUIRE_CREDENTIALS_HANDLE_FN ACQUIRE_CREDENTIALS_HANDLE_FN_W
-
-SECURITY_STATUS
-SEC_ENTRY
-AddCredentialsA(
- _In_ PCredHandle hCredentials,
- _In_opt_ LPSTR pszPrincipal,
- _In_ LPSTR pszPackage,
- _In_ ULONG fCredentialUse,
- _In_opt_ PVOID pAuthData,
- _In_opt_ SEC_GET_KEY_FN pGetKeyFn,
- _In_opt_ PVOID pvGetKeyArgument,
- _Out_opt_ PTimeStamp ptsExpiry);
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * ADD_CREDENTIALS_FN_A)(
- PCredHandle,
- SEC_CHAR *,
- SEC_CHAR *,
- ULONG,
- PVOID,
- SEC_GET_KEY_FN,
- PVOID,
- PTimeStamp);
-
-KSECDDDECLSPEC
-SECURITY_STATUS
-SEC_ENTRY
-AddCredentialsW(
- _In_ PCredHandle hCredentials,
- _In_opt_ PSSPI_SEC_STRING pPrincipal,
- _In_ PSSPI_SEC_STRING pPackage,
- _In_ ULONG fCredentialUse,
- _In_opt_ PVOID pAuthData,
- _In_opt_ SEC_GET_KEY_FN pGetKeyFn,
- _In_opt_ PVOID pvGetKeyArgument,
- _Out_opt_ PTimeStamp ptsExpiry);
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * ADD_CREDENTIALS_FN_W)(
- PCredHandle,
- PSSPI_SEC_STRING,
- PSSPI_SEC_STRING,
- ULONG,
- PVOID,
- SEC_GET_KEY_FN,
- PVOID,
- PTimeStamp);
-
-#ifdef UNICODE
-#define AddCredentials AddCredentialsW
-#define ADD_CREDENTIALS_FN ADD_CREDENTIALS_FN_W
-#else
-#define AddCredentials AddCredentialsA
-#define ADD_CREDENTIALS_FN ADD_CREDENTIALS_FN_A
-#endif
-
-KSECDDDECLSPEC
-SECURITY_STATUS
-SEC_ENTRY
-ApplyControlToken(
- _In_ PCtxtHandle phContext,
- _In_ PSecBufferDesc pInput);
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * APPLY_CONTROL_TOKEN_FN)(
- PCtxtHandle, PSecBufferDesc);
-
-#if (ISSP_MODE != 0)
-
-SECURITY_STATUS
-SEC_ENTRY
-ChangeAccountPasswordA(
- _In_ SEC_CHAR* pszPackageName,
- _In_ SEC_CHAR* pszDomainName,
- _In_ SEC_CHAR* pszAccountName,
- _In_ SEC_CHAR* pszOldPassword,
- _In_ SEC_CHAR* pszNewPassword,
- _In_ BOOLEAN bImpersonating,
- _In_ ULONG dwReserved,
- _Inout_ PSecBufferDesc pOutput);
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * CHANGE_PASSWORD_FN_A)(
- SEC_CHAR *,
- SEC_CHAR *,
- SEC_CHAR *,
- SEC_CHAR *,
- SEC_CHAR *,
- BOOLEAN,
- ULONG,
- PSecBufferDesc);
-
-SECURITY_STATUS
-SEC_ENTRY
-ChangeAccountPasswordW(
- _In_ SEC_WCHAR* pszPackageName,
- _In_ SEC_WCHAR* pszDomainName,
- _In_ SEC_WCHAR* pszAccountName,
- _In_ SEC_WCHAR* pszOldPassword,
- _In_ SEC_WCHAR* pszNewPassword,
- _In_ BOOLEAN bImpersonating,
- _In_ ULONG dwReserved,
- _Inout_ PSecBufferDesc pOutput);
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * CHANGE_PASSWORD_FN_W)(
- SEC_WCHAR *,
- SEC_WCHAR *,
- SEC_WCHAR *,
- SEC_WCHAR *,
- SEC_WCHAR *,
- BOOLEAN,
- ULONG,
- PSecBufferDesc);
-
-#ifdef UNICODE
-#define ChangeAccountPassword ChangeAccountPasswordW
-#define CHANGE_PASSWORD_FN CHANGE_PASSWORD_FN_W
-#else
-#define ChangeAccountPassword ChangeAccountPasswordA
-#define CHANGE_PASSWORD_FN CHANGE_PASSWORD_FN_A
-#endif
-
-#endif /* ISSP_MODE != 0 */
-
-SECURITY_STATUS
-SEC_ENTRY
-CompleteAuthToken(
- _In_ PCtxtHandle phContext,
- _In_ PSecBufferDesc pToken);
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * COMPLETE_AUTH_TOKEN_FN)(
- PCtxtHandle,
- PSecBufferDesc);
-
-SECURITY_STATUS
-SEC_ENTRY
-DecryptMessage(
- _In_ PCtxtHandle phContext,
- _Inout_ PSecBufferDesc pMessage,
- _In_ ULONG MessageSeqNo,
- _Out_opt_ PULONG pfQOP);
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * DECRYPT_MESSAGE_FN)(
- PCtxtHandle,
- PSecBufferDesc,
- ULONG,
- PULONG);
-
-KSECDDDECLSPEC
-SECURITY_STATUS
-SEC_ENTRY
-DeleteSecurityContext(
- _In_ PCtxtHandle phContext);
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * DELETE_SECURITY_CONTEXT_FN)(
- PCtxtHandle);
-
-SECURITY_STATUS
-SEC_ENTRY
-EncryptMessage(
- _In_ PCtxtHandle phContext,
- _In_ ULONG fQOP,
- _Inout_ PSecBufferDesc pMessage,
- _In_ ULONG MessageSeqNo);
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * ENCRYPT_MESSAGE_FN)(
- PCtxtHandle,
- ULONG,
- PSecBufferDesc,
- ULONG);
-
-KSECDDDECLSPEC
-SECURITY_STATUS
-SEC_ENTRY
-EnumerateSecurityPackagesW(
- _Out_ PULONG pcPackages,
- _Deref_out_ PSecPkgInfoW* ppPackageInfo);
-#define EnumerateSecurityPackages EnumerateSecurityPackagesW
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * ENUMERATE_SECURITY_PACKAGES_FN_W)(
- PULONG,
- PSecPkgInfoW*);
-#define ENUMERATE_SECURITY_PACKAGES_FN ENUMERATE_SECURITY_PACKAGES_FN_W
-
-KSECDDDECLSPEC
-SECURITY_STATUS
-SEC_ENTRY
-ExportSecurityContext(
- _In_ PCtxtHandle phContext,
- _In_ ULONG fFlags,
- _Out_ PSecBuffer pPackedContext,
- _Out_ PVOID* pToken);
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * EXPORT_SECURITY_CONTEXT_FN)(
- PCtxtHandle,
- ULONG,
- PSecBuffer,
- PVOID*);
-
-SECURITY_STATUS
-SEC_ENTRY
-FreeContextBuffer(
- _Inout_ PVOID pvContextBuffer);
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * FREE_CONTEXT_BUFFER_FN)(
- _Inout_ PVOID);
-
-KSECDDDECLSPEC
-SECURITY_STATUS
-SEC_ENTRY
-FreeCredentialsHandle(
- _In_ PCredHandle phCredential);
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * FREE_CREDENTIALS_HANDLE_FN)(
- PCredHandle);
-
-KSECDDDECLSPEC
-SECURITY_STATUS
-SEC_ENTRY
-ImpersonateSecurityContext(
- _In_ PCtxtHandle phContext);
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * IMPERSONATE_SECURITY_CONTEXT_FN)(
- PCtxtHandle);
-
-KSECDDDECLSPEC
-SECURITY_STATUS
-SEC_ENTRY
-ImportSecurityContextW(
- _In_ PSSPI_SEC_STRING pszPackage,
- _In_ PSecBuffer pPackedContext,
- _In_ PVOID Token,
- _Out_ PCtxtHandle phContext);
-#define ImportSecurityContext ImportSecurityContextW
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * IMPORT_SECURITY_CONTEXT_FN_W)(
- PSSPI_SEC_STRING,
- PSecBuffer,
- PVOID,
- PCtxtHandle);
-#define IMPORT_SECURITY_CONTEXT_FN IMPORT_SECURITY_CONTEXT_FN_W
-
-KSECDDDECLSPEC
-SECURITY_STATUS
-SEC_ENTRY
-InitializeSecurityContextW(
- _In_opt_ PCredHandle phCredential,
- _In_opt_ PCtxtHandle phContext,
- _In_opt_ PSSPI_SEC_STRING pTargetName,
- _In_ ULONG fContextReq,
- _In_ ULONG Reserved1,
- _In_ ULONG TargetDataRep,
- _In_opt_ PSecBufferDesc pInput,
- _In_ ULONG Reserved2,
- _Inout_opt_ PCtxtHandle phNewContext,
- _Inout_opt_ PSecBufferDesc pOutput,
- _Out_ PULONG pfContextAttr,
- _Out_opt_ PTimeStamp ptsExpiry);
-#define InitializeSecurityContext InitializeSecurityContextW
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * INITIALIZE_SECURITY_CONTEXT_FN_W)(
- PCredHandle,
- PCtxtHandle,
- PSSPI_SEC_STRING,
- ULONG,
- ULONG,
- ULONG,
- PSecBufferDesc,
- ULONG,
- PCtxtHandle,
- PSecBufferDesc,
- PULONG,
- PTimeStamp);
-#define INITIALIZE_SECURITY_CONTEXT_FN INITIALIZE_SECURITY_CONTEXT_FN_W
-
-KSECDDDECLSPEC
-PSecurityFunctionTableW
-SEC_ENTRY
-InitSecurityInterfaceW(VOID);
-#define InitSecurityInterface InitSecurityInterfaceW
-
-typedef
-PSecurityFunctionTableW
-(SEC_ENTRY * INIT_SECURITY_INTERFACE_W)(VOID);
-#define INIT_SECURITY_INTERFACE INIT_SECURITY_INTERFACE_W
-
-KSECDDDECLSPEC
-SECURITY_STATUS
-SEC_ENTRY
-MakeSignature(
- _In_ PCtxtHandle phContext,
- _In_ ULONG fQOP,
- _In_ PSecBufferDesc pMessage,
- _In_ ULONG MessageSeqNo);
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * MAKE_SIGNATURE_FN)(
- PCtxtHandle,
- ULONG,
- PSecBufferDesc,
- ULONG);
-
-KSECDDDECLSPEC
-SECURITY_STATUS
-SEC_ENTRY
-QueryContextAttributesW(
- _In_ PCtxtHandle phContext,
- _In_ ULONG ulAttribute,
- _Out_ PVOID pBuffer);
-#define QueryContextAttributes QueryContextAttributesW
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * QUERY_CONTEXT_ATTRIBUTES_FN_W)(
- PCtxtHandle,
- ULONG,
- PVOID);
-#define QUERY_CONTEXT_ATTRIBUTES_FN QUERY_CONTEXT_ATTRIBUTES_FN_W
-
-KSECDDDECLSPEC
-SECURITY_STATUS
-SEC_ENTRY
-QueryCredentialsAttributesW(
- _In_ PCredHandle phCredential,
- _In_ ULONG ulAttribute,
- _Inout_ PVOID pBuffer);
-#define QueryCredentialsAttributes QueryCredentialsAttributesW
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * QUERY_CREDENTIALS_ATTRIBUTES_FN_W)(
- PCredHandle,
- ULONG,
- PVOID);
-#define QUERY_CREDENTIALS_ATTRIBUTES_FN QUERY_CREDENTIALS_ATTRIBUTES_FN_W
-
-KSECDDDECLSPEC
-SECURITY_STATUS
-SEC_ENTRY
-QuerySecurityContextToken(
- _In_ PCtxtHandle phContext,
- _Out_ PVOID* Token);
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * QUERY_SECURITY_CONTEXT_TOKEN_FN)(
- PCtxtHandle, PVOID *);
-
-KSECDDDECLSPEC
-SECURITY_STATUS
-SEC_ENTRY
-QuerySecurityPackageInfoW(
- _In_ PSSPI_SEC_STRING pPackageName,
- _Deref_out_ PSecPkgInfoW *ppPackageInfo);
-#define QuerySecurityPackageInfo QuerySecurityPackageInfoW
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * QUERY_SECURITY_PACKAGE_INFO_FN_W)(
- PSSPI_SEC_STRING,
- PSecPkgInfoW *);
-#define QUERY_SECURITY_PACKAGE_INFO_FN QUERY_SECURITY_PACKAGE_INFO_FN_W
-
-KSECDDDECLSPEC
-SECURITY_STATUS
-SEC_ENTRY
-RevertSecurityContext(
- _In_ PCtxtHandle phContext);
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * REVERT_SECURITY_CONTEXT_FN)(
- PCtxtHandle);
-
-#if (OSVER(NTDDI_VERSION) > NTDDI_WIN2K)
-SECURITY_STATUS
-SEC_ENTRY
-SetContextAttributesW(
- _In_ PCtxtHandle phContext,
- _In_ ULONG ulAttribute,
- _In_bytecount_(cbBuffer) PVOID pBuffer,
- _In_ ULONG cbBuffer);
-#define SetContextAttributes SetContextAttributesW
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * SET_CONTEXT_ATTRIBUTES_FN_W)(
- PCtxtHandle,
- ULONG,
- PVOID,
- ULONG);
-#define SET_CONTEXT_ATTRIBUTES_FN SET_CONTEXT_ATTRIBUTES_FN_W
-#endif
-
-#if (NTDDI_VERSION > NTDDI_WS03)
-KSECDDDECLSPEC
-SECURITY_STATUS
-SEC_ENTRY
-SetCredentialsAttributesW(
- _In_ PCredHandle phCredential,
- _In_ ULONG ulAttribute,
- _In_bytecount_(cbBuffer) PVOID pBuffer,
- _In_ ULONG cbBuffer);
-#define SetCredentialsAttributes SetCredentialsAttributesW
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * SET_CREDENTIALS_ATTRIBUTES_FN_W)(
- PCredHandle,
- ULONG,
- PVOID,
- ULONG);
-#define SET_CREDENTIALS_ATTRIBUTES_FN SET_CREDENTIALS_ATTRIBUTES_FN_W
-#endif /* NTDDI_VERSION > NTDDI_WS03 */
-
-KSECDDDECLSPEC
-SECURITY_STATUS
-SEC_ENTRY
-VerifySignature(
- _In_ PCtxtHandle phContext,
- _In_ PSecBufferDesc pMessage,
- _In_ ULONG MessageSeqNo,
- _Out_ PULONG pfQOP);
-
-typedef
-SECURITY_STATUS
-(SEC_ENTRY * VERIFY_SIGNATURE_FN)(
- PCtxtHandle,
- PSecBufferDesc,
- ULONG,
- PULONG);
-
-#if (ISSP_MODE == 0)
-
-KSECDDDECLSPEC
-NTSTATUS
-NTAPI
-SecMakeSPN(
- _In_ PUNICODE_STRING ServiceClass,
- _In_ PUNICODE_STRING ServiceName,
- _In_opt_ PUNICODE_STRING InstanceName,
- _In_opt_ USHORT InstancePort,
- _In_opt_ PUNICODE_STRING Referrer,
- _Inout_ PUNICODE_STRING Spn,
- _Out_opt_ PULONG Length,
- _In_ BOOLEAN Allocate);
-
-#if (NTDDI_VERSION >= NTDDI_WINXP)
-KSECDDDECLSPEC
-NTSTATUS
-NTAPI
-SecMakeSPNEx(
- _In_ PUNICODE_STRING ServiceClass,
- _In_ PUNICODE_STRING ServiceName,
- _In_opt_ PUNICODE_STRING InstanceName,
- _In_opt_ USHORT InstancePort,
- _In_opt_ PUNICODE_STRING Referrer,
- _In_opt_ PUNICODE_STRING TargetInfo,
- _Inout_ PUNICODE_STRING Spn,
- _Out_ PULONG Length OPTIONAL,
- _In_ BOOLEAN Allocate);
-
-KSECDDDECLSPEC
-NTSTATUS
-SEC_ENTRY
-SecLookupAccountSid(
- _In_ PSID Sid,
- _Out_ PULONG NameSize,
- _Inout_ PUNICODE_STRING NameBuffer,
- _Out_ PULONG DomainSize OPTIONAL,
- _Out_opt_ PUNICODE_STRING DomainBuffer,
- _Out_ PSID_NAME_USE NameUse);
-
-KSECDDDECLSPEC
-NTSTATUS
-SEC_ENTRY
-SecLookupAccountName(
- _In_ PUNICODE_STRING Name,
- _Inout_ PULONG SidSize,
- _Out_ PSID Sid,
- _Out_ PSID_NAME_USE NameUse,
- _Out_opt_ PULONG DomainSize, // WDK says _Out_ only + ... OPTIONAL
- _Inout_opt_ PUNICODE_STRING ReferencedDomain);
-#endif
-
-#if (NTDDI_VERSION >= NTDDI_WS03)
-KSECDDDECLSPEC
-NTSTATUS
-SEC_ENTRY
-SecLookupWellKnownSid(
- _In_ WELL_KNOWN_SID_TYPE SidType,
- _Out_ PSID Sid,
- _In_ ULONG SidBufferSize,
- _Inout_opt_ PULONG SidSize);
-#endif
-
-#if (NTDDI_VERSION >= NTDDI_VISTA)
-KSECDDDECLSPEC
-NTSTATUS
-NTAPI
-SecMakeSPNEx2(
- _In_ PUNICODE_STRING ServiceClass,
- _In_ PUNICODE_STRING ServiceName,
- _In_opt_ PUNICODE_STRING InstanceName,
- _In_opt_ USHORT InstancePort,
- _In_opt_ PUNICODE_STRING Referrer,
- _In_opt_ PUNICODE_STRING InTargetInfo,
- _Inout_ PUNICODE_STRING Spn,
- _Out_opt_ PULONG TotalSize,
- _In_ BOOLEAN Allocate,
- _In_ BOOLEAN IsTargetInfoMarshaled);
-#endif
-
-#endif /* ISSP_MODE == 0 */
-
-#if (NTDDI_VERSION >= NTDDI_WIN7)
-
-SECURITY_STATUS
-SEC_ENTRY
-SspiEncodeAuthIdentityAsStrings(
- _In_ PSEC_WINNT_AUTH_IDENTITY_OPAQUE pAuthIdentity,
- _Deref_out_opt_ PCWSTR* ppszUserName,
- _Deref_out_opt_ PCWSTR* ppszDomainName,
- _Deref_opt_out_opt_ PCWSTR* ppszPackedCredentialsString);
-
-SECURITY_STATUS
-SEC_ENTRY
-SspiValidateAuthIdentity(
- _In_ PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthData);
-
-SECURITY_STATUS
-SEC_ENTRY
-SspiCopyAuthIdentity(
- _In_ PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthData,
- _Deref_out_ PSEC_WINNT_AUTH_IDENTITY_OPAQUE* AuthDataCopy);
-
-VOID
-SEC_ENTRY
-SspiFreeAuthIdentity(
- _In_opt_ PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthData);
-
-VOID
-SEC_ENTRY
-SspiZeroAuthIdentity(
- _In_opt_ PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthData);
-
-VOID
-SEC_ENTRY
-SspiLocalFree(
- _In_opt_ PVOID DataBuffer);
-
-SECURITY_STATUS
-SEC_ENTRY
-SspiEncodeStringsAsAuthIdentity(
- _In_opt_ PCWSTR pszUserName,
- _In_opt_ PCWSTR pszDomainName,
- _In_opt_ PCWSTR pszPackedCredentialsString,
- _Deref_out_ PSEC_WINNT_AUTH_IDENTITY_OPAQUE* ppAuthIdentity);
-
-SECURITY_STATUS
-SEC_ENTRY
-SspiCompareAuthIdentities(
- _In_opt_ PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthIdentity1,
- _In_opt_ PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthIdentity2,
- _Out_opt_ PBOOLEAN SameSuppliedUser,
- _Out_opt_ PBOOLEAN SameSuppliedIdentity);
-
-SECURITY_STATUS
-SEC_ENTRY
-SspiMarshalAuthIdentity(
- _In_ PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthIdentity,
- _Out_ PULONG AuthIdentityLength,
- _Outptr_result_bytebuffer_(*AuthIdentityLength) PCHAR* AuthIdentityByteArray);
-
-SECURITY_STATUS
-SEC_ENTRY
-SspiUnmarshalAuthIdentity(
- _In_ PULONG AuthIdentityLength,
- _In_reads_bytes_(AuthIdentityLength) PCHAR AuthIdentityByteArray,
- _Outptr_ PSEC_WINNT_AUTH_IDENTITY_OPAQUE* ppAuthIdentity);
-
-BOOLEAN
-SEC_ENTRY
-SspiIsPromptingNeeded(
- _In_ PULONG ErrorOrNtStatus);
-
-SECURITY_STATUS
-SEC_ENTRY
-SspiGetTargetHostName(
- _In_ PCWSTR pszTargetName,
- _Outptr_ PWSTR* pszHostName);
-
-SECURITY_STATUS
-SEC_ENTRY
-SspiExcludePackage(
- _In_opt_ PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthIdentity,
- _In_ PCWSTR pszPackageName,
- _Outptr_ PSEC_WINNT_AUTH_IDENTITY_OPAQUE* ppNewAuthIdentity);
-
-#define SEC_WINNT_AUTH_IDENTITY_MARSHALLED 0x04
-#define SEC_WINNT_AUTH_IDENTITY_ONLY 0x08
-
-#endif /* NTDDI_VERSION >= NTDDI_WIN7 */
-
-#define FreeCredentialHandle FreeCredentialsHandle
-struct _SECURITY_FUNCTION_TABLE_W
-{
- ULONG dwVersion;
- ENUMERATE_SECURITY_PACKAGES_FN_W EnumerateSecurityPackagesW;
- QUERY_CREDENTIALS_ATTRIBUTES_FN_W QueryCredentialsAttributesW;
- ACQUIRE_CREDENTIALS_HANDLE_FN_W AcquireCredentialsHandleW;
- FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle;
- PVOID Reserved2;
- INITIALIZE_SECURITY_CONTEXT_FN_W InitializeSecurityContextW;
- ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext;
- COMPLETE_AUTH_TOKEN_FN CompleteAuthToken;
- DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext;
- APPLY_CONTROL_TOKEN_FN ApplyControlToken;
- QUERY_CONTEXT_ATTRIBUTES_FN_W QueryContextAttributesW;
- IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext;
- REVERT_SECURITY_CONTEXT_FN RevertSecurityContext;
- MAKE_SIGNATURE_FN MakeSignature;
- VERIFY_SIGNATURE_FN VerifySignature;
- FREE_CONTEXT_BUFFER_FN FreeContextBuffer;
- QUERY_SECURITY_PACKAGE_INFO_FN_W QuerySecurityPackageInfoW;
- PVOID Reserved3;
- PVOID Reserved4;
- EXPORT_SECURITY_CONTEXT_FN ExportSecurityContext;
- IMPORT_SECURITY_CONTEXT_FN_W ImportSecurityContextW;
- ADD_CREDENTIALS_FN_W AddCredentialsW ;
- PVOID Reserved8;
- QUERY_SECURITY_CONTEXT_TOKEN_FN QuerySecurityContextToken;
- ENCRYPT_MESSAGE_FN EncryptMessage;
- DECRYPT_MESSAGE_FN DecryptMessage;
-#if OSVER(NTDDI_VERSION) > NTDDI_WIN2K
- SET_CONTEXT_ATTRIBUTES_FN_W SetContextAttributesW;
-#endif
-#if NTDDI_VERSION > NTDDI_WS03SP1
- SET_CREDENTIALS_ATTRIBUTES_FN_W SetCredentialsAttributesW;
-#endif
-#if ISSP_MODE != 0
- CHANGE_PASSWORD_FN_W ChangeAccountPasswordW;
-#else
- PVOID Reserved9;
-#endif
-};
-
-#endif /* !__SSPI_H__ */