diff --git a/mingw-w64-headers/include/sspi.h b/mingw-w64-headers/include/sspi.h
index 9db0ba6..e39e04f 100644
--- a/mingw-w64-headers/include/sspi.h
+++ b/mingw-w64-headers/include/sspi.h
@@ -87,6 +87,8 @@
 #define SecInvalidateHandle(x) ((PSecHandle) x)->dwLower = ((ULONG_PTR) ((INT_PTR)-1)); ((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))))
 
+#define SEC_DELETED_HANDLE ((ULONG_PTR)(-2))
+
   typedef SecHandle CredHandle;
   typedef PSecHandle PCredHandle;
 
@@ -164,9 +166,21 @@
 #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_FLAG_APPCONTAINER_PASSTHROUGH 0x00400000
+#define SECPKG_FLAG_APPCONTAINER_CHECKS 0x00800000
+#define SECPKG_FLAG_CREDENTIAL_ISOLATION_ENABLED 0x01000000
+#define SECPKG_FLAG_APPLY_LOOPBACK 0x02000000
 
 #define SECPKG_ID_NONE 0xFFFF
 
+#define SECPKG_CALLFLAGS_APPCONTAINER 0x00000001
+#define SECPKG_CALLFLAGS_APPCONTAINER_AUTHCAPABLE 0x00000002
+#define SECPKG_CALLFLAGS_FORCE_SUPPLIED 0x00000004
+#define SECPKG_CALLFLAGS_APPCONTAINER_UPNCAPABLE 0x00000008
+
   typedef struct _SecBuffer {
     unsigned __LONG32 cbBuffer;
     unsigned __LONG32 BufferType;
@@ -196,6 +210,20 @@
 #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_APPLICATION_PROTOCOLS 18
+#define SECBUFFER_SRTP_PROTECTION_PROFILES 19
+#define SECBUFFER_SRTP_MASTER_KEY_IDENTIFIER 20
+#define SECBUFFER_TOKEN_BINDING 21
+#define SECBUFFER_PRESHARED_KEY 22
+#define SECBUFFER_PRESHARED_KEY_IDENTITY 23
+#define SECBUFFER_DTLS_MTU 24
+#define SECBUFFER_SEND_GENERIC_TLS_EXTENSION 25
+#define SECBUFFER_SUBSCRIBE_GENERIC_TLS_EXTENSION 26
+#define SECBUFFER_FLAGS 27
+#define SECBUFFER_TRAFFIC_SECRETS 28
 
 #define SECBUFFER_ATTRMASK 0xF0000000
 #define SECBUFFER_READONLY 0x80000000
@@ -220,6 +248,79 @@
     unsigned __LONG32 dwApplicationDataOffset;
   } SEC_CHANNEL_BINDINGS,*PSEC_CHANNEL_BINDINGS;
 
+  typedef enum _SEC_APPLICATION_PROTOCOL_NEGOTIATION_EXT {
+    SecApplicationProtocolNegotiationExt_None,
+    SecApplicationProtocolNegotiationExt_NPN,
+    SecApplicationProtocolNegotiationExt_ALPN
+  } SEC_APPLICATION_PROTOCOL_NEGOTIATION_EXT,*PSEC_APPLICATION_PROTOCOL_NEGOTIATION_EXT;
+
+  typedef struct _SEC_APPLICATION_PROTOCOL_LIST {
+    SEC_APPLICATION_PROTOCOL_NEGOTIATION_EXT ProtoNegoExt;
+    unsigned short ProtocolListSize;
+    unsigned char ProtocolList[ANYSIZE_ARRAY];
+  } SEC_APPLICATION_PROTOCOL_LIST,*PSEC_APPLICATION_PROTOCOL_LIST;
+
+  typedef struct _SEC_APPLICATION_PROTOCOLS {
+    unsigned __LONG32 ProtocolListsSize;
+    SEC_APPLICATION_PROTOCOL_LIST ProtocolLists[ANYSIZE_ARRAY];
+  } SEC_APPLICATION_PROTOCOLS,*PSEC_APPLICATION_PROTOCOLS;
+
+  typedef struct _SEC_SRTP_PROTECTION_PROFILES {
+    unsigned short ProfilesSize;
+    unsigned short ProfilesList[ANYSIZE_ARRAY];
+  } SEC_SRTP_PROTECTION_PROFILES,*PSEC_SRTP_PROTECTION_PROFILES;
+
+  typedef struct _SEC_SRTP_MASTER_KEY_IDENTIFIER {
+    unsigned char MasterKeyIdentifierSize;
+    unsigned char MasterKeyIdentifier[ANYSIZE_ARRAY];
+  } SEC_SRTP_MASTER_KEY_IDENTIFIER,*PSEC_SRTP_MASTER_KEY_IDENTIFIER;
+
+  typedef struct _SEC_TOKEN_BINDING {
+    unsigned char MajorVersion;
+    unsigned char MinorVersion;
+    unsigned short KeyParametersSize;
+    unsigned char KeyParameters[ANYSIZE_ARRAY];
+  } SEC_TOKEN_BINDING,*PSEC_TOKEN_BINDING;
+
+  typedef struct _SEC_PRESHAREDKEY {
+    unsigned short KeySize;
+    unsigned char Key[ANYSIZE_ARRAY];
+  } SEC_PRESHAREDKEY,*PSEC_PRESHAREDKEY;
+
+  typedef struct _SEC_PRESHAREDKEY_IDENTITY {
+    unsigned short KeyIdentitySize;
+    unsigned char KeyIdentity[ANYSIZE_ARRAY];
+  } SEC_PRESHAREDKEY_IDENTITY,*PSEC_PRESHAREDKEY_IDENTITY;
+
+  typedef struct _SEC_DTLS_MTU {
+    unsigned short PathMTU;
+  } SEC_DTLS_MTU,*PSEC_DTLS_MTU;
+
+  typedef struct _SEC_FLAGS {
+    unsigned long long Flags;
+  } SEC_FLAGS,*PSEC_FLAGS;
+
+  typedef enum _SEC_TRAFFIC_SECRET_TYPE {
+    SecTrafficSecret_None,
+    SecTrafficSecret_Client,
+    SecTrafficSecret_Server
+  } SEC_TRAFFIC_SECRET_TYPE,*PSEC_TRAFFIC_SECRET_TYPE;
+
+#define SZ_ALG_MAX_SIZE 64
+
+  typedef struct _SEC_TRAFFIC_SECRETS {
+    wchar_t SymmetricAlgId[SZ_ALG_MAX_SIZE];
+    wchar_t ChainingMode[SZ_ALG_MAX_SIZE];
+    wchar_t HashAlgId[SZ_ALG_MAX_SIZE];
+    unsigned short KeySize;
+    unsigned short IvSize;
+    unsigned short MsgSequenceStart;
+    unsigned short MsgSequenceEnd;
+    SEC_TRAFFIC_SECRET_TYPE TrafficSecretType;
+    unsigned short TrafficSecretSize;
+    unsigned char TrafficSecret[ANYSIZE_ARRAY];
+} SEC_TRAFFIC_SECRETS,*PSEC_TRAFFIC_SECRETS;
+
 #define SECURITY_NATIVE_DREP 0x00000010
 #define SECURITY_NETWORK_DREP 0x00000000
 
@@ -229,6 +330,9 @@
 #define SECPKG_CRED_DEFAULT 0x00000004
 #define SECPKG_CRED_RESERVED 0xF0000000
 
+#define SECPKG_CRED_AUTOLOGON_RESTRICTED 0x00000010
+#define SECPKG_CRED_PROCESS_POLICY_ONLY 0x00000020
+
 #define ISC_REQ_DELEGATE 0x00000001
 #define ISC_REQ_MUTUAL_AUTH 0x00000002
 #define ISC_REQ_REPLAY_DETECT 0x00000004
@@ -251,6 +355,12 @@
 #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_REQ_UNVERIFIED_TARGET_NAME 0x20000000
+#define ISC_REQ_CONFIDENTIALITY_ONLY 0x40000000
+#define ISC_REQ_MESSAGES 0x0000000100000000
 
 #define ISC_RET_DELEGATE 0x00000001
 #define ISC_RET_MUTUAL_AUTH 0x00000002
@@ -274,6 +384,12 @@
 #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 ISC_RET_CONFIDENTIALITY_ONLY 0x40000000
+#define ISC_RET_MESSAGES 0x0000000100000000
 
 #define ASC_REQ_DELEGATE 0x00000001
 #define ASC_REQ_MUTUAL_AUTH 0x00000002
@@ -281,11 +397,13 @@
 #define ASC_REQ_SEQUENCE_DETECT 0x00000008
 #define ASC_REQ_CONFIDENTIALITY 0x00000010
 #define ASC_REQ_USE_SESSION_KEY 0x00000020
+#define ASC_REQ_SESSION_TICKET 0x00000040
 #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_FRAGMENT_SUPPLIED 0x00002000
 #define ASC_REQ_EXTENDED_ERROR 0x00008000
 #define ASC_REQ_STREAM 0x00010000
 #define ASC_REQ_INTEGRITY 0x00020000
@@ -295,8 +413,10 @@
 #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 ASC_REQ_ALLOW_MISSING_BINDINGS 0x10000000
+#define ASC_REQ_MESSAGES 0x0000000100000000
 
 #define ASC_RET_DELEGATE 0x00000001
 #define ASC_RET_MUTUAL_AUTH 0x00000002
@@ -304,6 +424,7 @@
 #define ASC_RET_SEQUENCE_DETECT 0x00000008
 #define ASC_RET_CONFIDENTIALITY 0x00000010
 #define ASC_RET_USE_SESSION_KEY 0x00000020
+#define ASC_RET_SESSION_TICKET 0x00000040
 #define ASC_RET_ALLOCATED_MEMORY 0x00000100
 #define ASC_RET_USED_DCE_STYLE 0x00000200
 #define ASC_RET_DATAGRAM 0x00000400
@@ -320,9 +441,14 @@
 #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_MESSAGES 0x0000000100000000
 
 #define SECPKG_CRED_ATTR_NAMES 1
 #define SECPKG_CRED_ATTR_SSI_PROVIDER 2
+#define SECPKG_CRED_ATTR_KDC_PROXY_SETTINGS 3
+#define SECPKG_CRED_ATTR_CERT 4
+#define SECPKG_CRED_ATTR_PAC_BYPASS 5
 
   typedef struct _SecPkgCredentials_NamesW
   {
@@ -352,6 +478,23 @@
 #define SecPkgCredentials_SSIProvider __MINGW_NAME_AW(SecPkgCredentials_SSIProvider)
 #define PSecPkgCredentials_SSIProvider __MINGW_NAME_AW(PSecPkgCredentials_SSIProvider)
 
+#define KDC_PROXY_SETTINGS_V1 1
+#define KDC_PROXY_SETTINGS_FLAGS_FORCEPROXY 0x1
+
+  typedef struct _SecPkgCredentials_KdcProxySettingsW {
+    ULONG Version;
+    ULONG Flags;
+    USHORT ProxyServerOffset;
+    USHORT ProxyServerLength;
+    USHORT ClientTlsCredOffset;
+    USHORT ClientTlsCredLength;
+  } SecPkgCredentials_KdcProxySettingsW,*PSecPkgCredentials_KdcProxySettingsW;
+
+  typedef struct _SecPkgCredentials_Cert {
+    unsigned __LONG32 EncodedCertSize;
+    unsigned char *EncodedCert;
+  } SecPkgCredentials_Cert,*PSecPkgCredentials_Cert;
+
 #define SECPKG_ATTR_SIZES 0
 #define SECPKG_ATTR_NAMES 1
 #define SECPKG_ATTR_LIFESPAN 2
@@ -374,6 +517,49 @@
 #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_ATTR_DTLS_MTU 34
+#define SECPKG_ATTR_DATAGRAM_SIZES SECPKG_ATTR_STREAM_SIZES
+#define SECPKG_ATTR_SUBJECT_SECURITY_ATTRIBUTES 128
+#define SECPKG_ATTR_APPLICATION_PROTOCOL 35
+#define SECPKG_ATTR_NEGOTIATED_TLS_EXTENSIONS 36
+#define SECPKG_ATTR_IS_LOOPBACK 37
+
+  typedef struct _SecPkgContext_SubjectAttributes {
+    void *AttributeInfo;
+  } SecPkgContext_SubjectAttributes,*PSecPkgContext_SubjectAttributes;
+
+#define SECPKG_ATTR_NEGO_INFO_FLAG_NO_KERBEROS 0x1
+#define SECPKG_ATTR_NEGO_INFO_FLAG_NO_NTLM 0x2
+
+  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 _SecPkgContext_CredInfo {
+    SECPKG_CRED_CLASS CredClass;
+    unsigned __LONG32 IsPromptingNeeded;
+  } SecPkgContext_CredInfo,*PSecPkgContext_CredInfo;
+
+  typedef struct _SecPkgContext_NegoPackageInfo {
+    unsigned __LONG32 PackageMask;
+  } SecPkgContext_NegoPackageInfo,*PSecPkgContext_NegoPackageInfo;
+
+  typedef struct _SecPkgContext_NegoStatus {
+    unsigned __LONG32 LastStatus;
+  } SecPkgContext_NegoStatus,*PSecPkgContext_NegoStatus;
 
   typedef struct _SecPkgContext_Sizes {
     unsigned __LONG32 cbMaxToken;
@@ -390,10 +576,23 @@
     unsigned __LONG32 cbBlockSize;
   } SecPkgContext_StreamSizes,*PSecPkgContext_StreamSizes;
 
+typedef SecPkgContext_StreamSizes SecPkgContext_DatagramSizes;
+typedef PSecPkgContext_StreamSizes PSecPkgContext_DatagramSizes;
+
   typedef struct _SecPkgContext_NamesW {
     SEC_WCHAR *sUserName;
   } SecPkgContext_NamesW,*PSecPkgContext_NamesW;
 
+  typedef enum _SECPKG_ATTR_LCT_STATUS {
+    SecPkgAttrLastClientTokenYes,
+    SecPkgAttrLastClientTokenNo,
+    SecPkgAttrLastClientTokenMaybe
+  } SECPKG_ATTR_LCT_STATUS,*PSECPKG_ATTR_LCT_STATUS;
+
+  typedef struct _SecPkgContext_LastClientTokenStatus {
+    SECPKG_ATTR_LCT_STATUS LastClientTokenStatus;
+  } SecPkgContext_LastClientTokenStatus,*PSecPkgContext_LastClientTokenStatus;
+
   typedef struct _SecPkgContext_NamesA {
     SEC_CHAR *sUserName;
   } SecPkgContext_NamesA,*PSecPkgContext_NamesA;
@@ -469,6 +668,15 @@
     unsigned char *SessionKey;
   } SecPkgContext_SessionKey,*PSecPkgContext_SessionKey;
 
+  typedef struct _SecPkgContext_NegoKeys {
+    unsigned __LONG32 KeyType;
+    unsigned short KeyLength;
+    unsigned char *KeyValue;
+    unsigned __LONG32 VerifyKeyType;
+    unsigned short VerifyKeyLength;
+    unsigned char *VerifyKeyValue;
+  } SecPkgContext_NegoKeys,*PSecPkgContext_NegoKeys;
+
   typedef struct _SecPkgContext_PackageInfoW {
     PSecPkgInfoW PackageInfo;
   } SecPkgContext_PackageInfoW,*PSecPkgContext_PackageInfoW;
@@ -552,6 +760,43 @@
     char *Target;
   } SecPkgContext_Target,*PSecPkgContext_Target;
 
+  typedef struct _SecPkgContext_ClientSpecifiedTarget {
+    SEC_WCHAR *sTargetName;
+  } SecPkgContext_ClientSpecifiedTarget,*PSecPkgContext_ClientSpecifiedTarget;
+
+  typedef struct _SecPkgContext_Bindings {
+    unsigned __LONG32 BindingsLength;
+    SEC_CHANNEL_BINDINGS *Bindings;
+  } SecPkgContext_Bindings,*PSecPkgContext_Bindings;
+
+  typedef enum _SEC_APPLICATION_PROTOCOL_NEGOTIATION_STATUS {
+    SecApplicationProtocolNegotiationStatus_None,
+    SecApplicationProtocolNegotiationStatus_Success,
+    SecApplicationProtocolNegotiationStatus_SelectedClientOnly
+  } SEC_APPLICATION_PROTOCOL_NEGOTIATION_STATUS,*PSEC_APPLICATION_PROTOCOL_NEGOTIATION_STATUS;
+
+#define MAX_PROTOCOL_ID_SIZE 0xff
+
+  typedef struct _SecPkgContext_ApplicationProtocol {
+    SEC_APPLICATION_PROTOCOL_NEGOTIATION_STATUS ProtoNegoStatus;
+    SEC_APPLICATION_PROTOCOL_NEGOTIATION_EXT ProtoNegoExt;
+    unsigned char ProtocolIdSize;
+    unsigned char ProtocolId[MAX_PROTOCOL_ID_SIZE];
+  } SecPkgContext_ApplicationProtocol,*PSecPkgContext_ApplicationProtocol;
+
+  typedef struct _SecPkgContext_NegotiatedTlsExtensions {
+    unsigned __LONG32 ExtensionsCount;
+    unsigned short *Extensions;
+  } SecPkgContext_NegotiatedTlsExtensions,*PSecPkgContext_NegotiatedTlsExtensions;
+
+  typedef struct _SECPKG_APP_MODE_INFO {
+    ULONG UserFunction;
+    ULONG_PTR Argument1;
+    ULONG_PTR Argument2;
+    SecBuffer UserData;
+    BOOLEAN ReturnToLsa;
+  } SECPKG_APP_MODE_INFO,*PSECPKG_APP_MODE_INFO;
+
   typedef void (WINAPI *SEC_GET_KEY_FN) (void *Arg,void *Principal,unsigned __LONG32 KeyVer,void **Key,SECURITY_STATUS *Status);
 
 #define SECPKG_CONTEXT_EXPORT_RESET_NEW 0x00000001
@@ -670,6 +915,17 @@
 #define QueryContextAttributes __MINGW_NAME_AW(QueryContextAttributes)
 #define QUERY_CONTEXT_ATTRIBUTES_FN __MINGW_NAME_UAW(QUERY_CONTEXT_ATTRIBUTES_FN)
 
+  SECURITY_STATUS WINAPI QueryContextAttributesExW(PCtxtHandle phContext,unsigned __LONG32 ulAttribute,void *pBuffer,unsigned __LONG32 cbBuffer);
+
+  typedef SECURITY_STATUS (WINAPI *QUERY_CONTEXT_ATTRIBUTES_EX_FN_W)(PCtxtHandle,unsigned __LONG32,void*,unsigned __LONG32);
+
+  SECURITY_STATUS WINAPI QueryContextAttributesExA(PCtxtHandle phContext,unsigned __LONG32 ulAttribute,void *pBuffer,unsigned __LONG32 cbBuffer);
+
+  typedef SECURITY_STATUS (WINAPI *QUERY_CONTEXT_ATTRIBUTES_EX_FN_A)(PCtxtHandle,unsigned __LONG32,void*,unsigned __LONG32);
+
+#define QueryContextAttributesEx __MINGW_NAME_AW(QueryContextAttributesEx)
+#define QUERY_CONTEXT_ATTRIBUTES_EX_FN __MINGW_NAME_UAW(QUERY_CONTEXT_ATTRIBUTES_EX_FN)
+
   SECURITY_STATUS WINAPI SetContextAttributesW(PCtxtHandle phContext,unsigned __LONG32 ulAttribute,void *pBuffer,unsigned __LONG32 cbBuffer);
 
   typedef SECURITY_STATUS (WINAPI *SET_CONTEXT_ATTRIBUTES_FN_W)(PCtxtHandle,unsigned __LONG32,void *,unsigned __LONG32);
@@ -692,6 +948,17 @@
 #define QueryCredentialsAttributes __MINGW_NAME_AW(QueryCredentialsAttributes)
 #define QUERY_CREDENTIALS_ATTRIBUTES_FN __MINGW_NAME_UAW(QUERY_CREDENTIALS_ATTRIBUTES_FN)
 
+  SECURITY_STATUS WINAPI QueryCredentialsAttributesExW(PCredHandle phCredential,unsigned __LONG32 ulAttribute,void *pBuffer,unsigned __LONG32 cbBuffer);
+
+  typedef SECURITY_STATUS (WINAPI *QUERY_CREDENTIALS_ATTRIBUTES_EX_FN_W)(PCredHandle,unsigned __LONG32,void*,unsigned __LONG32);
+
+  SECURITY_STATUS WINAPI QueryCredentialsAttributesExA(PCredHandle phCredential,unsigned __LONG32 ulAttribute,void *pBuffer,unsigned __LONG32 cbBuffer);
+
+  typedef SECURITY_STATUS (WINAPI *QUERY_CREDENTIALS_ATTRIBUTES_EX_FN_A)(PCredHandle,unsigned __LONG32,void*,unsigned __LONG32);
+
+#define QueryCredentialsAttributesEx __MINGW_NAME_AW(QueryCredentialsAttributesEx)
+#define QUERY_CREDENTIALS_ATTRIBUTES_EX_FN __MINGW_NAME_UAW(QUERY_CREDENTIALS_ATTRIBUTES_EX_FN)
+
   KSECDDDECLSPEC SECURITY_STATUS WINAPI SetCredentialsAttributesW(PCredHandle phCredential,unsigned __LONG32 ulAttribute,void *pBuffer,unsigned __LONG32 cbBuffer);
 
   typedef SECURITY_STATUS (WINAPI *SET_CREDENTIALS_ATTRIBUTES_FN_W)(PCredHandle,unsigned __LONG32,void *,unsigned __LONG32);
@@ -802,6 +1069,7 @@
 #if ISSP_MODE==0
   KSECDDDECLSPEC NTSTATUS NTAPI SecMakeSPN(PUNICODE_STRING ServiceClass,PUNICODE_STRING ServiceName,PUNICODE_STRING InstanceName,USHORT InstancePort,PUNICODE_STRING Referrer,PUNICODE_STRING Spn,PULONG Length,BOOLEAN Allocate);
   KSECDDDECLSPEC NTSTATUS NTAPI SecMakeSPNEx(PUNICODE_STRING ServiceClass,PUNICODE_STRING ServiceName,PUNICODE_STRING InstanceName,USHORT InstancePort,PUNICODE_STRING Referrer,PUNICODE_STRING TargetInfo,PUNICODE_STRING Spn,PULONG Length,BOOLEAN Allocate);
+  KSECDDDECLSPEC NTSTATUS NTAPI SecMakeSPNEx2(PUNICODE_STRING ServiceClass,PUNICODE_STRING ServiceName,PUNICODE_STRING InstanceName,USHORT InstancePort,PUNICODE_STRING Referrer,PUNICODE_STRING InTargetInfo,PUNICODE_STRING Spn,PULONG TotalSize,BOOLEAN Allocate,BOOLEAN IsTargetInfoMarshaled);
   KSECDDDECLSPEC NTSTATUS WINAPI SecLookupAccountSid(PSID Sid,PULONG NameSize,PUNICODE_STRING NameBuffer,PULONG DomainSize,PUNICODE_STRING DomainBuffer,PSID_NAME_USE NameUse);
   KSECDDDECLSPEC NTSTATUS WINAPI SecLookupAccountName(PUNICODE_STRING Name,PULONG SidSize,PSID Sid,PSID_NAME_USE NameUse,PULONG DomainSize,PUNICODE_STRING ReferencedDomain);
   KSECDDDECLSPEC NTSTATUS WINAPI SecLookupWellKnownSid(WELL_KNOWN_SID_TYPE SidType,PSID Sid,ULONG SidBufferSize,PULONG SidSize);
@@ -895,6 +1163,8 @@
 #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_SUPPORT_PROVIDER_INTERFACE_VERSION_5 5
 
   PSecurityFunctionTableA WINAPI InitSecurityInterfaceA(void);
 
@@ -944,6 +1214,28 @@
   SECURITY_STATUS WINAPI SaslGetContextOption(PCtxtHandle ContextHandle,ULONG Option,PVOID Value,ULONG Size,PULONG Needed);
 #endif
 
+#ifndef _AUTH_IDENTITY_EX2_DEFINED
+#define _AUTH_IDENTITY_EX2_DEFINED
+
+#define SEC_WINNT_AUTH_IDENTITY_VERSION_2 0x201
+
+  typedef struct _SEC_WINNT_AUTH_IDENTITY_EX2 {
+    unsigned __LONG32 Version;
+    unsigned short cbHeaderLength;
+    unsigned __LONG32 cbStructureLength;
+    unsigned __LONG32 UserOffset;
+    unsigned short UserLength;
+    unsigned __LONG32 DomainOffset;
+    unsigned short DomainLength;
+    unsigned __LONG32 PackedCredentialsOffset;
+    unsigned short PackedCredentialsLength;
+    unsigned __LONG32 Flags;
+    unsigned __LONG32 PackageListOffset;
+    unsigned short PackageListLength;
+  } SEC_WINNT_AUTH_IDENTITY_EX2, *PSEC_WINNT_AUTH_IDENTITY_EX2;
+
+#endif
+
 #ifndef _AUTH_IDENTITY_DEFINED
 #define _AUTH_IDENTITY_DEFINED
 
