FreeRDP
sspi_winpr.c File Reference
#include <winpr/config.h>
#include <winpr/assert.h>
#include <winpr/windows.h>
#include <winpr/crt.h>
#include <winpr/sspi.h>
#include <winpr/ssl.h>
#include <winpr/print.h>
#include "sspi.h"
#include "sspi_winpr.h"
#include "../log.h"
#include "NTLM/ntlm.h"
#include "NTLM/ntlm_export.h"
#include "CredSSP/credssp.h"
#include "Kerberos/kerberos.h"
#include "Negotiate/negotiate.h"
#include "Schannel/schannel.h"

Macros

#define TAG   WINPR_TAG("sspi")
 
#define SecHandle_LOWER_MAX   0xFFFFFFFF
 
#define SecHandle_UPPER_MAX   0xFFFFFFFE
 

Functions

static int sspi_ContextBufferAllocTableNew (void)
 
static int sspi_ContextBufferAllocTableGrow (void)
 
static void sspi_ContextBufferAllocTableFree (void)
 
static void * sspi_ContextBufferAlloc (UINT32 allocatorIndex, size_t size)
 
SSPI_CREDENTIALSsspi_CredentialsNew (void)
 
void sspi_CredentialsFree (SSPI_CREDENTIALS *credentials)
 
void * sspi_SecBufferAlloc (PSecBuffer SecBuffer, ULONG size)
 
void sspi_SecBufferFree (PSecBuffer SecBuffer)
 
SecHandlesspi_SecureHandleAlloc (void)
 
void * sspi_SecureHandleGetLowerPointer (SecHandle *handle)
 
void sspi_SecureHandleInvalidate (SecHandle *handle)
 
void sspi_SecureHandleSetLowerPointer (SecHandle *handle, void *pointer)
 
void * sspi_SecureHandleGetUpperPointer (SecHandle *handle)
 
void sspi_SecureHandleSetUpperPointer (SecHandle *handle, void *pointer)
 
void sspi_SecureHandleFree (SecHandle *handle)
 
int sspi_SetAuthIdentityW (SEC_WINNT_AUTH_IDENTITY *identity, const WCHAR *user, const WCHAR *domain, const WCHAR *password)
 
static BOOL copy (WCHAR **dst, ULONG *dstLen, const WCHAR *what, size_t len)
 
int sspi_SetAuthIdentityWithLengthW (SEC_WINNT_AUTH_IDENTITY *identity, const WCHAR *user, size_t userLen, const WCHAR *domain, size_t domainLen, const WCHAR *password, size_t passwordLen)
 
static void zfree (WCHAR *str, size_t len)
 
int sspi_SetAuthIdentityA (SEC_WINNT_AUTH_IDENTITY *identity, const char *user, const char *domain, const char *password)
 
UINT32 sspi_GetAuthIdentityVersion (const void *identity)
 
UINT32 sspi_GetAuthIdentityFlags (const void *identity)
 
BOOL sspi_GetAuthIdentityUserDomainW (const void *identity, const WCHAR **pUser, UINT32 *pUserLength, const WCHAR **pDomain, UINT32 *pDomainLength)
 
BOOL sspi_GetAuthIdentityUserDomainA (const void *identity, const char **pUser, UINT32 *pUserLength, const char **pDomain, UINT32 *pDomainLength)
 
BOOL sspi_GetAuthIdentityPasswordW (const void *identity, const WCHAR **pPassword, UINT32 *pPasswordLength)
 
BOOL sspi_GetAuthIdentityPasswordA (const void *identity, const char **pPassword, UINT32 *pPasswordLength)
 
BOOL sspi_CopyAuthIdentityFieldsA (const SEC_WINNT_AUTH_IDENTITY_INFO *identity, char **pUser, char **pDomain, char **pPassword)
 
BOOL sspi_CopyAuthIdentityFieldsW (const SEC_WINNT_AUTH_IDENTITY_INFO *identity, WCHAR **pUser, WCHAR **pDomain, WCHAR **pPassword)
 
BOOL sspi_CopyAuthPackageListA (const SEC_WINNT_AUTH_IDENTITY_INFO *identity, char **pPackageList)
 
int sspi_CopyAuthIdentity (SEC_WINNT_AUTH_IDENTITY *identity, const SEC_WINNT_AUTH_IDENTITY_INFO *srcIdentity)
 
PSecBuffer sspi_FindSecBuffer (PSecBufferDesc pMessage, ULONG BufferType)
 
static BOOL WINPR_init (void)
 
static BOOL CALLBACK sspi_init (PINIT_ONCE InitOnce, PVOID Parameter, PVOID *Context)
 
void sspi_GlobalInit (void)
 
void sspi_GlobalFinish (void)
 
static const SecurityFunctionTableAsspi_GetSecurityFunctionTableAByNameA (const SEC_CHAR *Name)
 
static const SecurityFunctionTableWsspi_GetSecurityFunctionTableWByNameW (const SEC_WCHAR *Name)
 
static const SecurityFunctionTableWsspi_GetSecurityFunctionTableWByNameA (const SEC_CHAR *Name)
 
static void FreeContextBuffer_EnumerateSecurityPackages (void *contextBuffer)
 
static void FreeContextBuffer_QuerySecurityPackageInfo (void *contextBuffer)
 
static void sspi_ContextBufferFree (void *contextBuffer)
 
static SECURITY_STATUS SEC_ENTRY winpr_EnumerateSecurityPackagesW (ULONG *pcPackages, PSecPkgInfoW *ppPackageInfo)
 
static SECURITY_STATUS SEC_ENTRY winpr_EnumerateSecurityPackagesA (ULONG *pcPackages, PSecPkgInfoA *ppPackageInfo)
 
SecurityFunctionTableW *SEC_ENTRY winpr_InitSecurityInterfaceW (void)
 
SecurityFunctionTableA *SEC_ENTRY winpr_InitSecurityInterfaceA (void)
 
static SECURITY_STATUS SEC_ENTRY winpr_QuerySecurityPackageInfoW (SEC_WCHAR *pszPackageName, PSecPkgInfoW *ppPackageInfo)
 
static SECURITY_STATUS SEC_ENTRY winpr_QuerySecurityPackageInfoA (SEC_CHAR *pszPackageName, PSecPkgInfoA *ppPackageInfo)
 
static SECURITY_STATUS SEC_ENTRY winpr_AcquireCredentialsHandleW (SEC_WCHAR *pszPrincipal, SEC_WCHAR *pszPackage, ULONG fCredentialUse, void *pvLogonID, void *pAuthData, SEC_GET_KEY_FN pGetKeyFn, void *pvGetKeyArgument, PCredHandle phCredential, PTimeStamp ptsExpiry)
 
static SECURITY_STATUS SEC_ENTRY winpr_AcquireCredentialsHandleA (SEC_CHAR *pszPrincipal, SEC_CHAR *pszPackage, ULONG fCredentialUse, void *pvLogonID, void *pAuthData, SEC_GET_KEY_FN pGetKeyFn, void *pvGetKeyArgument, PCredHandle phCredential, PTimeStamp ptsExpiry)
 
static SECURITY_STATUS SEC_ENTRY winpr_ExportSecurityContext (PCtxtHandle phContext, ULONG fFlags, PSecBuffer pPackedContext, HANDLE *pToken)
 
static SECURITY_STATUS SEC_ENTRY winpr_FreeCredentialsHandle (PCredHandle phCredential)
 
static SECURITY_STATUS SEC_ENTRY winpr_ImportSecurityContextW (SEC_WCHAR *pszPackage, PSecBuffer pPackedContext, HANDLE pToken, PCtxtHandle phContext)
 
static SECURITY_STATUS SEC_ENTRY winpr_ImportSecurityContextA (SEC_CHAR *pszPackage, PSecBuffer pPackedContext, HANDLE pToken, PCtxtHandle phContext)
 
static SECURITY_STATUS SEC_ENTRY winpr_QueryCredentialsAttributesW (PCredHandle phCredential, ULONG ulAttribute, void *pBuffer)
 
static SECURITY_STATUS SEC_ENTRY winpr_QueryCredentialsAttributesA (PCredHandle phCredential, ULONG ulAttribute, void *pBuffer)
 
static SECURITY_STATUS SEC_ENTRY winpr_SetCredentialsAttributesW (PCredHandle phCredential, ULONG ulAttribute, void *pBuffer, ULONG cbBuffer)
 
static SECURITY_STATUS SEC_ENTRY winpr_SetCredentialsAttributesA (PCredHandle phCredential, ULONG ulAttribute, void *pBuffer, ULONG cbBuffer)
 
static SECURITY_STATUS SEC_ENTRY winpr_AcceptSecurityContext (PCredHandle phCredential, PCtxtHandle phContext, PSecBufferDesc pInput, ULONG fContextReq, ULONG TargetDataRep, PCtxtHandle phNewContext, PSecBufferDesc pOutput, PULONG pfContextAttr, PTimeStamp ptsTimeStamp)
 
static SECURITY_STATUS SEC_ENTRY winpr_ApplyControlToken (PCtxtHandle phContext, PSecBufferDesc pInput)
 
static SECURITY_STATUS SEC_ENTRY winpr_CompleteAuthToken (PCtxtHandle phContext, PSecBufferDesc pToken)
 
static SECURITY_STATUS SEC_ENTRY winpr_DeleteSecurityContext (PCtxtHandle phContext)
 
static SECURITY_STATUS SEC_ENTRY winpr_FreeContextBuffer (void *pvContextBuffer)
 
static SECURITY_STATUS SEC_ENTRY winpr_ImpersonateSecurityContext (PCtxtHandle phContext)
 
static SECURITY_STATUS SEC_ENTRY winpr_InitializeSecurityContextW (PCredHandle phCredential, PCtxtHandle phContext, SEC_WCHAR *pszTargetName, ULONG fContextReq, ULONG Reserved1, ULONG TargetDataRep, PSecBufferDesc pInput, ULONG Reserved2, PCtxtHandle phNewContext, PSecBufferDesc pOutput, PULONG pfContextAttr, PTimeStamp ptsExpiry)
 
static SECURITY_STATUS SEC_ENTRY winpr_InitializeSecurityContextA (PCredHandle phCredential, PCtxtHandle phContext, SEC_CHAR *pszTargetName, ULONG fContextReq, ULONG Reserved1, ULONG TargetDataRep, PSecBufferDesc pInput, ULONG Reserved2, PCtxtHandle phNewContext, PSecBufferDesc pOutput, PULONG pfContextAttr, PTimeStamp ptsExpiry)
 
static SECURITY_STATUS SEC_ENTRY winpr_QueryContextAttributesW (PCtxtHandle phContext, ULONG ulAttribute, void *pBuffer)
 
static SECURITY_STATUS SEC_ENTRY winpr_QueryContextAttributesA (PCtxtHandle phContext, ULONG ulAttribute, void *pBuffer)
 
static SECURITY_STATUS SEC_ENTRY winpr_QuerySecurityContextToken (PCtxtHandle phContext, HANDLE *phToken)
 
static SECURITY_STATUS SEC_ENTRY winpr_SetContextAttributesW (PCtxtHandle phContext, ULONG ulAttribute, void *pBuffer, ULONG cbBuffer)
 
static SECURITY_STATUS SEC_ENTRY winpr_SetContextAttributesA (PCtxtHandle phContext, ULONG ulAttribute, void *pBuffer, ULONG cbBuffer)
 
static SECURITY_STATUS SEC_ENTRY winpr_RevertSecurityContext (PCtxtHandle phContext)
 
static SECURITY_STATUS SEC_ENTRY winpr_DecryptMessage (PCtxtHandle phContext, PSecBufferDesc pMessage, ULONG MessageSeqNo, PULONG pfQOP)
 
static SECURITY_STATUS SEC_ENTRY winpr_EncryptMessage (PCtxtHandle phContext, ULONG fQOP, PSecBufferDesc pMessage, ULONG MessageSeqNo)
 
static SECURITY_STATUS SEC_ENTRY winpr_MakeSignature (PCtxtHandle phContext, ULONG fQOP, PSecBufferDesc pMessage, ULONG MessageSeqNo)
 
static SECURITY_STATUS SEC_ENTRY winpr_VerifySignature (PCtxtHandle phContext, PSecBufferDesc pMessage, ULONG MessageSeqNo, PULONG pfQOP)
 

Variables

static const SecPkgInfoASecPkgInfoA_LIST []
 
static const SecPkgInfoWSecPkgInfoW_LIST []
 
static SecurityFunctionTableA winpr_SecurityFunctionTableA
 
static SecurityFunctionTableW winpr_SecurityFunctionTableW
 
static const SecurityFunctionTableA_NAME SecurityFunctionTableA_NAME_LIST []
 
static WCHAR BUFFER_NAME_LIST_W [5][32] = { 0 }
 
static const SecurityFunctionTableW_NAME SecurityFunctionTableW_NAME_LIST []
 
static CONTEXT_BUFFER_ALLOC_TABLE ContextBufferAllocTable = { 0 }
 

Macro Definition Documentation

◆ SecHandle_LOWER_MAX

#define SecHandle_LOWER_MAX   0xFFFFFFFF

◆ SecHandle_UPPER_MAX

#define SecHandle_UPPER_MAX   0xFFFFFFFE

◆ TAG

#define TAG   WINPR_TAG("sspi")

FreeRDP: A Remote Desktop Protocol Implementation Security Support Provider Interface (SSPI)

Copyright 2012-2014 Marc-Andre Moreau marca.nosp@m.ndre.nosp@m..more.nosp@m.au@g.nosp@m.mail..nosp@m.com Copyright 2017 Dorian Ducournau doria.nosp@m.n.du.nosp@m.courn.nosp@m.au@g.nosp@m.mail..nosp@m.com

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Function Documentation

◆ copy()

static BOOL copy ( WCHAR **  dst,
ULONG *  dstLen,
const WCHAR *  what,
size_t  len 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ FreeContextBuffer_EnumerateSecurityPackages()

static void FreeContextBuffer_EnumerateSecurityPackages ( void *  contextBuffer)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ FreeContextBuffer_QuerySecurityPackageInfo()

void FreeContextBuffer_QuerySecurityPackageInfo ( void *  contextBuffer)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sspi_ContextBufferAlloc()

static void* sspi_ContextBufferAlloc ( UINT32  allocatorIndex,
size_t  size 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sspi_ContextBufferAllocTableFree()

static void sspi_ContextBufferAllocTableFree ( void  )
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sspi_ContextBufferAllocTableGrow()

static int sspi_ContextBufferAllocTableGrow ( void  )
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sspi_ContextBufferAllocTableNew()

static int sspi_ContextBufferAllocTableNew ( void  )
static
Here is the caller graph for this function:

◆ sspi_ContextBufferFree()

static void sspi_ContextBufferFree ( void *  contextBuffer)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sspi_CopyAuthIdentity()

int sspi_CopyAuthIdentity ( SEC_WINNT_AUTH_IDENTITY identity,
const SEC_WINNT_AUTH_IDENTITY_INFO srcIdentity 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sspi_CopyAuthIdentityFieldsA()

BOOL sspi_CopyAuthIdentityFieldsA ( const SEC_WINNT_AUTH_IDENTITY_INFO identity,
char **  pUser,
char **  pDomain,
char **  pPassword 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sspi_CopyAuthIdentityFieldsW()

BOOL sspi_CopyAuthIdentityFieldsW ( const SEC_WINNT_AUTH_IDENTITY_INFO identity,
WCHAR **  pUser,
WCHAR **  pDomain,
WCHAR **  pPassword 
)
Here is the call graph for this function:

◆ sspi_CopyAuthPackageListA()

BOOL sspi_CopyAuthPackageListA ( const SEC_WINNT_AUTH_IDENTITY_INFO identity,
char **  pPackageList 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sspi_CredentialsFree()

void sspi_CredentialsFree ( SSPI_CREDENTIALS credentials)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sspi_CredentialsNew()

SSPI_CREDENTIALS* sspi_CredentialsNew ( void  )
Here is the caller graph for this function:

◆ sspi_FindSecBuffer()

PSecBuffer sspi_FindSecBuffer ( PSecBufferDesc  pMessage,
ULONG  BufferType 
)
Here is the caller graph for this function:

◆ sspi_GetAuthIdentityFlags()

UINT32 sspi_GetAuthIdentityFlags ( const void *  identity)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sspi_GetAuthIdentityPasswordA()

BOOL sspi_GetAuthIdentityPasswordA ( const void *  identity,
const char **  pPassword,
UINT32 *  pPasswordLength 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sspi_GetAuthIdentityPasswordW()

BOOL sspi_GetAuthIdentityPasswordW ( const void *  identity,
const WCHAR **  pPassword,
UINT32 *  pPasswordLength 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sspi_GetAuthIdentityUserDomainA()

BOOL sspi_GetAuthIdentityUserDomainA ( const void *  identity,
const char **  pUser,
UINT32 *  pUserLength,
const char **  pDomain,
UINT32 *  pDomainLength 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sspi_GetAuthIdentityUserDomainW()

BOOL sspi_GetAuthIdentityUserDomainW ( const void *  identity,
const WCHAR **  pUser,
UINT32 *  pUserLength,
const WCHAR **  pDomain,
UINT32 *  pDomainLength 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sspi_GetAuthIdentityVersion()

UINT32 sspi_GetAuthIdentityVersion ( const void *  identity)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sspi_GetSecurityFunctionTableAByNameA()

static const SecurityFunctionTableA* sspi_GetSecurityFunctionTableAByNameA ( const SEC_CHAR Name)
static
Here is the caller graph for this function:

◆ sspi_GetSecurityFunctionTableWByNameA()

static const SecurityFunctionTableW* sspi_GetSecurityFunctionTableWByNameA ( const SEC_CHAR Name)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sspi_GetSecurityFunctionTableWByNameW()

static const SecurityFunctionTableW* sspi_GetSecurityFunctionTableWByNameW ( const SEC_WCHAR Name)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sspi_GlobalFinish()

void sspi_GlobalFinish ( void  )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sspi_GlobalInit()

void sspi_GlobalInit ( void  )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sspi_init()

static BOOL CALLBACK sspi_init ( PINIT_ONCE  InitOnce,
PVOID  Parameter,
PVOID *  Context 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sspi_SecBufferAlloc()

void* sspi_SecBufferAlloc ( PSecBuffer  SecBuffer,
ULONG  size 
)
Here is the caller graph for this function:

◆ sspi_SecBufferFree()

void sspi_SecBufferFree ( PSecBuffer  SecBuffer)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sspi_SecureHandleAlloc()

SecHandle* sspi_SecureHandleAlloc ( void  )

◆ sspi_SecureHandleFree()

void sspi_SecureHandleFree ( SecHandle handle)
Here is the call graph for this function:

◆ sspi_SecureHandleGetLowerPointer()

void* sspi_SecureHandleGetLowerPointer ( SecHandle handle)
Here is the caller graph for this function:

◆ sspi_SecureHandleGetUpperPointer()

void* sspi_SecureHandleGetUpperPointer ( SecHandle handle)
Here is the caller graph for this function:

◆ sspi_SecureHandleInvalidate()

void sspi_SecureHandleInvalidate ( SecHandle handle)
Here is the caller graph for this function:

◆ sspi_SecureHandleSetLowerPointer()

void sspi_SecureHandleSetLowerPointer ( SecHandle handle,
void *  pointer 
)
Here is the caller graph for this function:

◆ sspi_SecureHandleSetUpperPointer()

void sspi_SecureHandleSetUpperPointer ( SecHandle handle,
void *  pointer 
)
Here is the caller graph for this function:

◆ sspi_SetAuthIdentityA()

int sspi_SetAuthIdentityA ( SEC_WINNT_AUTH_IDENTITY identity,
const char *  user,
const char *  domain,
const char *  password 
)
Here is the call graph for this function:

◆ sspi_SetAuthIdentityW()

int sspi_SetAuthIdentityW ( SEC_WINNT_AUTH_IDENTITY identity,
const WCHAR *  user,
const WCHAR *  domain,
const WCHAR *  password 
)
Here is the call graph for this function:

◆ sspi_SetAuthIdentityWithLengthW()

int sspi_SetAuthIdentityWithLengthW ( SEC_WINNT_AUTH_IDENTITY identity,
const WCHAR *  user,
size_t  userLen,
const WCHAR *  domain,
size_t  domainLen,
const WCHAR *  password,
size_t  passwordLen 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ winpr_AcceptSecurityContext()

static SECURITY_STATUS SEC_ENTRY winpr_AcceptSecurityContext ( PCredHandle  phCredential,
PCtxtHandle  phContext,
PSecBufferDesc  pInput,
ULONG  fContextReq,
ULONG  TargetDataRep,
PCtxtHandle  phNewContext,
PSecBufferDesc  pOutput,
PULONG  pfContextAttr,
PTimeStamp  ptsTimeStamp 
)
static
Here is the call graph for this function:

◆ winpr_AcquireCredentialsHandleA()

static SECURITY_STATUS SEC_ENTRY winpr_AcquireCredentialsHandleA ( SEC_CHAR pszPrincipal,
SEC_CHAR pszPackage,
ULONG  fCredentialUse,
void *  pvLogonID,
void *  pAuthData,
SEC_GET_KEY_FN  pGetKeyFn,
void *  pvGetKeyArgument,
PCredHandle  phCredential,
PTimeStamp  ptsExpiry 
)
static
Here is the call graph for this function:

◆ winpr_AcquireCredentialsHandleW()

static SECURITY_STATUS SEC_ENTRY winpr_AcquireCredentialsHandleW ( SEC_WCHAR pszPrincipal,
SEC_WCHAR pszPackage,
ULONG  fCredentialUse,
void *  pvLogonID,
void *  pAuthData,
SEC_GET_KEY_FN  pGetKeyFn,
void *  pvGetKeyArgument,
PCredHandle  phCredential,
PTimeStamp  ptsExpiry 
)
static
Here is the call graph for this function:

◆ winpr_ApplyControlToken()

static SECURITY_STATUS SEC_ENTRY winpr_ApplyControlToken ( PCtxtHandle  phContext,
PSecBufferDesc  pInput 
)
static
Here is the call graph for this function:

◆ winpr_CompleteAuthToken()

static SECURITY_STATUS SEC_ENTRY winpr_CompleteAuthToken ( PCtxtHandle  phContext,
PSecBufferDesc  pToken 
)
static
Here is the call graph for this function:

◆ winpr_DecryptMessage()

static SECURITY_STATUS SEC_ENTRY winpr_DecryptMessage ( PCtxtHandle  phContext,
PSecBufferDesc  pMessage,
ULONG  MessageSeqNo,
PULONG  pfQOP 
)
static
Here is the call graph for this function:

◆ winpr_DeleteSecurityContext()

static SECURITY_STATUS SEC_ENTRY winpr_DeleteSecurityContext ( PCtxtHandle  phContext)
static
Here is the call graph for this function:

◆ winpr_EncryptMessage()

static SECURITY_STATUS SEC_ENTRY winpr_EncryptMessage ( PCtxtHandle  phContext,
ULONG  fQOP,
PSecBufferDesc  pMessage,
ULONG  MessageSeqNo 
)
static
Here is the call graph for this function:

◆ winpr_EnumerateSecurityPackagesA()

static SECURITY_STATUS SEC_ENTRY winpr_EnumerateSecurityPackagesA ( ULONG *  pcPackages,
PSecPkgInfoA ppPackageInfo 
)
static
Here is the call graph for this function:

◆ winpr_EnumerateSecurityPackagesW()

static SECURITY_STATUS SEC_ENTRY winpr_EnumerateSecurityPackagesW ( ULONG *  pcPackages,
PSecPkgInfoW ppPackageInfo 
)
static

Standard SSPI API

Here is the call graph for this function:

◆ winpr_ExportSecurityContext()

static SECURITY_STATUS SEC_ENTRY winpr_ExportSecurityContext ( PCtxtHandle  phContext,
ULONG  fFlags,
PSecBuffer  pPackedContext,
HANDLE *  pToken 
)
static
Here is the call graph for this function:

◆ winpr_FreeContextBuffer()

static SECURITY_STATUS SEC_ENTRY winpr_FreeContextBuffer ( void *  pvContextBuffer)
static
Here is the call graph for this function:

◆ winpr_FreeCredentialsHandle()

static SECURITY_STATUS SEC_ENTRY winpr_FreeCredentialsHandle ( PCredHandle  phCredential)
static
Here is the call graph for this function:

◆ winpr_ImpersonateSecurityContext()

static SECURITY_STATUS SEC_ENTRY winpr_ImpersonateSecurityContext ( PCtxtHandle  phContext)
static
Here is the call graph for this function:

◆ winpr_ImportSecurityContextA()

static SECURITY_STATUS SEC_ENTRY winpr_ImportSecurityContextA ( SEC_CHAR pszPackage,
PSecBuffer  pPackedContext,
HANDLE  pToken,
PCtxtHandle  phContext 
)
static
Here is the call graph for this function:

◆ winpr_ImportSecurityContextW()

static SECURITY_STATUS SEC_ENTRY winpr_ImportSecurityContextW ( SEC_WCHAR pszPackage,
PSecBuffer  pPackedContext,
HANDLE  pToken,
PCtxtHandle  phContext 
)
static
Here is the call graph for this function:

◆ WINPR_init()

static BOOL WINPR_init ( void  )
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ winpr_InitializeSecurityContextA()

static SECURITY_STATUS SEC_ENTRY winpr_InitializeSecurityContextA ( PCredHandle  phCredential,
PCtxtHandle  phContext,
SEC_CHAR pszTargetName,
ULONG  fContextReq,
ULONG  Reserved1,
ULONG  TargetDataRep,
PSecBufferDesc  pInput,
ULONG  Reserved2,
PCtxtHandle  phNewContext,
PSecBufferDesc  pOutput,
PULONG  pfContextAttr,
PTimeStamp  ptsExpiry 
)
static
Here is the call graph for this function:

◆ winpr_InitializeSecurityContextW()

static SECURITY_STATUS SEC_ENTRY winpr_InitializeSecurityContextW ( PCredHandle  phCredential,
PCtxtHandle  phContext,
SEC_WCHAR pszTargetName,
ULONG  fContextReq,
ULONG  Reserved1,
ULONG  TargetDataRep,
PSecBufferDesc  pInput,
ULONG  Reserved2,
PCtxtHandle  phNewContext,
PSecBufferDesc  pOutput,
PULONG  pfContextAttr,
PTimeStamp  ptsExpiry 
)
static
Here is the call graph for this function:

◆ winpr_InitSecurityInterfaceA()

SecurityFunctionTableA* SEC_ENTRY winpr_InitSecurityInterfaceA ( void  )
Here is the caller graph for this function:

◆ winpr_InitSecurityInterfaceW()

SecurityFunctionTableW* SEC_ENTRY winpr_InitSecurityInterfaceW ( void  )

WinPR: Windows Portable Runtime Security Support Provider Interface (SSPI)

Copyright 2012-2014 Marc-Andre Moreau marca.nosp@m.ndre.nosp@m..more.nosp@m.au@g.nosp@m.mail..nosp@m.com

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Here is the caller graph for this function:

◆ winpr_MakeSignature()

static SECURITY_STATUS SEC_ENTRY winpr_MakeSignature ( PCtxtHandle  phContext,
ULONG  fQOP,
PSecBufferDesc  pMessage,
ULONG  MessageSeqNo 
)
static
Here is the call graph for this function:

◆ winpr_QueryContextAttributesA()

static SECURITY_STATUS SEC_ENTRY winpr_QueryContextAttributesA ( PCtxtHandle  phContext,
ULONG  ulAttribute,
void *  pBuffer 
)
static
Here is the call graph for this function:

◆ winpr_QueryContextAttributesW()

static SECURITY_STATUS SEC_ENTRY winpr_QueryContextAttributesW ( PCtxtHandle  phContext,
ULONG  ulAttribute,
void *  pBuffer 
)
static
Here is the call graph for this function:

◆ winpr_QueryCredentialsAttributesA()

static SECURITY_STATUS SEC_ENTRY winpr_QueryCredentialsAttributesA ( PCredHandle  phCredential,
ULONG  ulAttribute,
void *  pBuffer 
)
static
Here is the call graph for this function:

◆ winpr_QueryCredentialsAttributesW()

static SECURITY_STATUS SEC_ENTRY winpr_QueryCredentialsAttributesW ( PCredHandle  phCredential,
ULONG  ulAttribute,
void *  pBuffer 
)
static
Here is the call graph for this function:

◆ winpr_QuerySecurityContextToken()

static SECURITY_STATUS SEC_ENTRY winpr_QuerySecurityContextToken ( PCtxtHandle  phContext,
HANDLE *  phToken 
)
static
Here is the call graph for this function:

◆ winpr_QuerySecurityPackageInfoA()

static SECURITY_STATUS SEC_ENTRY winpr_QuerySecurityPackageInfoA ( SEC_CHAR pszPackageName,
PSecPkgInfoA ppPackageInfo 
)
static
Here is the call graph for this function:

◆ winpr_QuerySecurityPackageInfoW()

static SECURITY_STATUS SEC_ENTRY winpr_QuerySecurityPackageInfoW ( SEC_WCHAR pszPackageName,
PSecPkgInfoW ppPackageInfo 
)
static
Here is the call graph for this function:

◆ winpr_RevertSecurityContext()

static SECURITY_STATUS SEC_ENTRY winpr_RevertSecurityContext ( PCtxtHandle  phContext)
static
Here is the call graph for this function:

◆ winpr_SetContextAttributesA()

static SECURITY_STATUS SEC_ENTRY winpr_SetContextAttributesA ( PCtxtHandle  phContext,
ULONG  ulAttribute,
void *  pBuffer,
ULONG  cbBuffer 
)
static
Here is the call graph for this function:

◆ winpr_SetContextAttributesW()

static SECURITY_STATUS SEC_ENTRY winpr_SetContextAttributesW ( PCtxtHandle  phContext,
ULONG  ulAttribute,
void *  pBuffer,
ULONG  cbBuffer 
)
static
Here is the call graph for this function:

◆ winpr_SetCredentialsAttributesA()

static SECURITY_STATUS SEC_ENTRY winpr_SetCredentialsAttributesA ( PCredHandle  phCredential,
ULONG  ulAttribute,
void *  pBuffer,
ULONG  cbBuffer 
)
static
Here is the call graph for this function:

◆ winpr_SetCredentialsAttributesW()

static SECURITY_STATUS SEC_ENTRY winpr_SetCredentialsAttributesW ( PCredHandle  phCredential,
ULONG  ulAttribute,
void *  pBuffer,
ULONG  cbBuffer 
)
static
Here is the call graph for this function:

◆ winpr_VerifySignature()

static SECURITY_STATUS SEC_ENTRY winpr_VerifySignature ( PCtxtHandle  phContext,
PSecBufferDesc  pMessage,
ULONG  MessageSeqNo,
PULONG  pfQOP 
)
static
Here is the call graph for this function:

◆ zfree()

static void zfree ( WCHAR *  str,
size_t  len 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ BUFFER_NAME_LIST_W

WCHAR BUFFER_NAME_LIST_W[5][32] = { 0 }
static

◆ ContextBufferAllocTable

CONTEXT_BUFFER_ALLOC_TABLE ContextBufferAllocTable = { 0 }
static

◆ SecPkgInfoA_LIST

const SecPkgInfoA* SecPkgInfoA_LIST[]
static
Initial value:
const SecPkgInfoA CREDSSP_SecPkgInfoA
Definition: credssp.c:294
const SecPkgInfoA KERBEROS_SecPkgInfoA
Definition: kerberos.c:62
const SecPkgInfoA NEGOTIATE_SecPkgInfoA
Definition: negotiate.c:66
const SecPkgInfoA SCHANNEL_SecPkgInfoA
Definition: schannel.c:439
const SecPkgInfoA NTLM_SecPkgInfoA
Definition: sspi/NTLM/ntlm.c:1390

◆ SecPkgInfoW_LIST

const SecPkgInfoW* SecPkgInfoW_LIST[]
static
Initial value:
const SecPkgInfoW CREDSSP_SecPkgInfoW
Definition: credssp.c:306
const SecPkgInfoW KERBEROS_SecPkgInfoW
Definition: kerberos.c:74
const SecPkgInfoW NEGOTIATE_SecPkgInfoW
Definition: negotiate.c:78
const SecPkgInfoW SCHANNEL_SecPkgInfoW
Definition: schannel.c:451
const SecPkgInfoW NTLM_SecPkgInfoW
Definition: sspi/NTLM/ntlm.c:1402

◆ SecurityFunctionTableA_NAME_LIST

const SecurityFunctionTableA_NAME SecurityFunctionTableA_NAME_LIST[]
static
Initial value:
= {
}
const SecurityFunctionTableA CREDSSP_SecurityFunctionTableA
Definition: credssp.c:230
const SecurityFunctionTableA KERBEROS_SecurityFunctionTableA
Definition: kerberos.c:1828
const SecurityFunctionTableA NEGOTIATE_SecurityFunctionTableA
Definition: negotiate.c:1588
const SecurityFunctionTableA SCHANNEL_SecurityFunctionTableA
Definition: schannel.c:375
const SecurityFunctionTableA NTLM_SecurityFunctionTableA
Definition: sspi/NTLM/ntlm.c:1326

◆ SecurityFunctionTableW_NAME_LIST

const SecurityFunctionTableW_NAME SecurityFunctionTableW_NAME_LIST[]
static
Initial value:
= {
}
const SecurityFunctionTableW CREDSSP_SecurityFunctionTableW
Definition: credssp.c:262
const SecurityFunctionTableW KERBEROS_SecurityFunctionTableW
Definition: kerberos.c:1860
const SecurityFunctionTableW NEGOTIATE_SecurityFunctionTableW
Definition: negotiate.c:1620
const SecurityFunctionTableW SCHANNEL_SecurityFunctionTableW
Definition: schannel.c:407
const SecurityFunctionTableW NTLM_SecurityFunctionTableW
Definition: sspi/NTLM/ntlm.c:1358
static WCHAR BUFFER_NAME_LIST_W[5][32]
Definition: sspi_winpr.c:77

◆ winpr_SecurityFunctionTableA

static SecurityFunctionTableA winpr_SecurityFunctionTableA
static

◆ winpr_SecurityFunctionTableW

static SecurityFunctionTableW winpr_SecurityFunctionTableW
static