FreeRDP
schannel.c File Reference
#include <winpr/crt.h>
#include <winpr/sspi.h>
#include "schannel.h"
#include "../sspi.h"

Functions

SCHANNEL_CONTEXT * schannel_ContextNew ()
 
void schannel_ContextFree (SCHANNEL_CONTEXT *context)
 
SCHANNEL_CREDENTIALS * schannel_CredentialsNew ()
 
void schannel_CredentialsFree (SCHANNEL_CREDENTIALS *credentials)
 
SECURITY_STATUS SEC_ENTRY schannel_QueryCredentialsAttributesW (PCredHandle phCredential, ULONG ulAttribute, void *pBuffer)
 
SECURITY_STATUS SEC_ENTRY schannel_QueryCredentialsAttributesA (PCredHandle phCredential, ULONG ulAttribute, void *pBuffer)
 
SECURITY_STATUS SEC_ENTRY schannel_AcquireCredentialsHandleW (SEC_WCHAR *pszPrincipal, SEC_WCHAR *pszPackage, ULONG fCredentialUse, void *pvLogonID, void *pAuthData, SEC_GET_KEY_FN pGetKeyFn, void *pvGetKeyArgument, PCredHandle phCredential, PTimeStamp ptsExpiry)
 
SECURITY_STATUS SEC_ENTRY schannel_AcquireCredentialsHandleA (SEC_CHAR *pszPrincipal, SEC_CHAR *pszPackage, ULONG fCredentialUse, void *pvLogonID, void *pAuthData, SEC_GET_KEY_FN pGetKeyFn, void *pvGetKeyArgument, PCredHandle phCredential, PTimeStamp ptsExpiry)
 
SECURITY_STATUS SEC_ENTRY schannel_FreeCredentialsHandle (PCredHandle phCredential)
 
SECURITY_STATUS SEC_ENTRY schannel_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)
 
SECURITY_STATUS SEC_ENTRY schannel_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)
 
SECURITY_STATUS SEC_ENTRY schannel_AcceptSecurityContext (PCredHandle phCredential, PCtxtHandle phContext, PSecBufferDesc pInput, ULONG fContextReq, ULONG TargetDataRep, PCtxtHandle phNewContext, PSecBufferDesc pOutput, PULONG pfContextAttr, PTimeStamp ptsTimeStamp)
 
SECURITY_STATUS SEC_ENTRY schannel_DeleteSecurityContext (PCtxtHandle phContext)
 
SECURITY_STATUS SEC_ENTRY schannel_QueryContextAttributes (PCtxtHandle phContext, ULONG ulAttribute, void *pBuffer)
 
SECURITY_STATUS SEC_ENTRY schannel_MakeSignature (PCtxtHandle phContext, ULONG fQOP, PSecBufferDesc pMessage, ULONG MessageSeqNo)
 
SECURITY_STATUS SEC_ENTRY schannel_VerifySignature (PCtxtHandle phContext, PSecBufferDesc pMessage, ULONG MessageSeqNo, ULONG *pfQOP)
 
SECURITY_STATUS SEC_ENTRY schannel_EncryptMessage (PCtxtHandle phContext, ULONG fQOP, PSecBufferDesc pMessage, ULONG MessageSeqNo)
 
SECURITY_STATUS SEC_ENTRY schannel_DecryptMessage (PCtxtHandle phContext, PSecBufferDesc pMessage, ULONG MessageSeqNo, ULONG *pfQOP)
 

Variables

char * SCHANNEL_PACKAGE_NAME = "Schannel"
 
static ALG_ID schannel_SupportedAlgs []
 
const SecurityFunctionTableA SCHANNEL_SecurityFunctionTableA
 
const SecurityFunctionTableW SCHANNEL_SecurityFunctionTableW
 
const SecPkgInfoA SCHANNEL_SecPkgInfoA
 
WCHAR SCHANNEL_SecPkgInfoW_Name [] = { 'S', 'c', 'h', 'a', 'n', 'n', 'e', 'l', '\0' }
 
WCHAR SCHANNEL_SecPkgInfoW_Comment []
 
const SecPkgInfoW SCHANNEL_SecPkgInfoW
 

Function Documentation

SECURITY_STATUS SEC_ENTRY schannel_AcceptSecurityContext ( PCredHandle  phCredential,
PCtxtHandle  phContext,
PSecBufferDesc  pInput,
ULONG  fContextReq,
ULONG  TargetDataRep,
PCtxtHandle  phNewContext,
PSecBufferDesc  pOutput,
PULONG  pfContextAttr,
PTimeStamp  ptsTimeStamp 
)

Here is the call graph for this function:

SECURITY_STATUS SEC_ENTRY schannel_AcquireCredentialsHandleA ( SEC_CHAR pszPrincipal,
SEC_CHAR pszPackage,
ULONG  fCredentialUse,
void pvLogonID,
void pAuthData,
SEC_GET_KEY_FN  pGetKeyFn,
void pvGetKeyArgument,
PCredHandle  phCredential,
PTimeStamp  ptsExpiry 
)

Here is the call graph for this function:

SECURITY_STATUS SEC_ENTRY schannel_AcquireCredentialsHandleW ( SEC_WCHAR pszPrincipal,
SEC_WCHAR pszPackage,
ULONG  fCredentialUse,
void pvLogonID,
void pAuthData,
SEC_GET_KEY_FN  pGetKeyFn,
void pvGetKeyArgument,
PCredHandle  phCredential,
PTimeStamp  ptsExpiry 
)

Here is the call graph for this function:

Here is the caller graph for this function:

void schannel_ContextFree ( SCHANNEL_CONTEXT *  context)

Here is the call graph for this function:

Here is the caller graph for this function:

SCHANNEL_CONTEXT* schannel_ContextNew ( void  )

Here is the call graph for this function:

Here is the caller graph for this function:

void schannel_CredentialsFree ( SCHANNEL_CREDENTIALS *  credentials)

Here is the caller graph for this function:

SCHANNEL_CREDENTIALS* schannel_CredentialsNew ( )

Here is the caller graph for this function:

SECURITY_STATUS SEC_ENTRY schannel_DecryptMessage ( PCtxtHandle  phContext,
PSecBufferDesc  pMessage,
ULONG  MessageSeqNo,
ULONG *  pfQOP 
)

Here is the call graph for this function:

SECURITY_STATUS SEC_ENTRY schannel_DeleteSecurityContext ( PCtxtHandle  phContext)

Here is the call graph for this function:

SECURITY_STATUS SEC_ENTRY schannel_EncryptMessage ( PCtxtHandle  phContext,
ULONG  fQOP,
PSecBufferDesc  pMessage,
ULONG  MessageSeqNo 
)

Here is the call graph for this function:

SECURITY_STATUS SEC_ENTRY schannel_FreeCredentialsHandle ( PCredHandle  phCredential)

Here is the call graph for this function:

SECURITY_STATUS SEC_ENTRY schannel_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 
)

Here is the call graph for this function:

SECURITY_STATUS SEC_ENTRY schannel_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 
)

Here is the call graph for this function:

Here is the caller graph for this function:

SECURITY_STATUS SEC_ENTRY schannel_MakeSignature ( PCtxtHandle  phContext,
ULONG  fQOP,
PSecBufferDesc  pMessage,
ULONG  MessageSeqNo 
)
SECURITY_STATUS SEC_ENTRY schannel_QueryContextAttributes ( PCtxtHandle  phContext,
ULONG  ulAttribute,
void pBuffer 
)
SECURITY_STATUS SEC_ENTRY schannel_QueryCredentialsAttributesA ( PCredHandle  phCredential,
ULONG  ulAttribute,
void pBuffer 
)

Here is the call graph for this function:

SECURITY_STATUS SEC_ENTRY schannel_QueryCredentialsAttributesW ( PCredHandle  phCredential,
ULONG  ulAttribute,
void pBuffer 
)

Here is the caller graph for this function:

SECURITY_STATUS SEC_ENTRY schannel_VerifySignature ( PCtxtHandle  phContext,
PSecBufferDesc  pMessage,
ULONG  MessageSeqNo,
ULONG *  pfQOP 
)

Variable Documentation

char* SCHANNEL_PACKAGE_NAME = "Schannel"

WinPR: Windows Portable Runtime Schannel Security Package

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.

const SecPkgInfoA SCHANNEL_SecPkgInfoA
Initial value:
=
{
0x000107B3,
1,
0x000E,
"Schannel",
"Schannel Security Package"
}
#define SCHANNEL_CB_MAX_TOKEN
Definition: libwinpr/sspi/sspi.h:25
const SecPkgInfoW SCHANNEL_SecPkgInfoW
Initial value:
=
{
0x000107B3,
1,
0x000E,
}
WCHAR SCHANNEL_SecPkgInfoW_Name[]
Definition: schannel.c:418
#define SCHANNEL_CB_MAX_TOKEN
Definition: libwinpr/sspi/sspi.h:25
WCHAR SCHANNEL_SecPkgInfoW_Comment[]
Definition: schannel.c:420
WCHAR SCHANNEL_SecPkgInfoW_Comment[]
Initial value:
=
{
'S', 'c', 'h', 'a', 'n', 'n', 'e', 'l', ' ',
'S', 'e', 'c', 'u', 'r', 'i', 't', 'y', ' ',
'P', 'a', 'c', 'k', 'a', 'g', 'e', '\0'
}
WCHAR SCHANNEL_SecPkgInfoW_Name[] = { 'S', 'c', 'h', 'a', 'n', 'n', 'e', 'l', '\0' }
const SecurityFunctionTableA SCHANNEL_SecurityFunctionTableA
const SecurityFunctionTableW SCHANNEL_SecurityFunctionTableW
ALG_ID schannel_SupportedAlgs[]
static
Initial value:
=
{
}
#define ALG_CLASS_KEY_EXCHANGE
Definition: winpr/include/winpr/crypto.h:68
#define CALG_MD5
Definition: winpr/include/winpr/crypto.h:158
#define CALG_AES_256
Definition: winpr/include/winpr/crypto.h:198
#define CALG_RSA_SIGN
Definition: winpr/include/winpr/crypto.h:162
#define CALG_RC4
Definition: winpr/include/winpr/crypto.h:173
#define CALG_SHA1
Definition: winpr/include/winpr/crypto.h:160
#define CALG_SHA_256
Definition: winpr/include/winpr/crypto.h:201
#define ALG_TYPE_RESERVED7
Definition: winpr/include/winpr/crypto.h:35
#define CALG_AES_128
Definition: winpr/include/winpr/crypto.h:196
#define CALG_ECDSA
Definition: winpr/include/winpr/crypto.h:610
#define CALG_SHA_384
Definition: winpr/include/winpr/crypto.h:202
#define CALG_3DES
Definition: winpr/include/winpr/crypto.h:170
#define CALG_DH_EPHEM
Definition: winpr/include/winpr/crypto.h:176
#define CALG_DSS_SIGN
Definition: winpr/include/winpr/crypto.h:163
#define CALG_SHA_512
Definition: winpr/include/winpr/crypto.h:203
#define CALG_DES
Definition: winpr/include/winpr/crypto.h:168