FreeRDP
credssp_auth.h File Reference
#include <freerdp/freerdp.h>
#include <winpr/tchar.h>
#include <winpr/sspi.h>
This graph shows which files directly or indirectly include this file:

Macros

#define CREDSSP_AUTH_PKG_SPNEGO   "Negotiate"
 
#define CREDSSP_AUTH_PKG_NTLM   "NTLM"
 
#define CREDSSP_AUTH_PKG_KERBEROS   "Kerberos"
 
#define CREDSSP_AUTH_PKG_SCHANNEL   "Schannel"
 

Functions

FREERDP_LOCAL rdpCredsspAuth * credssp_auth_new (const rdpContext *context)
 
FREERDP_LOCAL BOOL credssp_auth_init (rdpCredsspAuth *auth, TCHAR *pkg_name, SecPkgContext_Bindings *bindings)
 
FREERDP_LOCAL BOOL credssp_auth_setup_client (rdpCredsspAuth *auth, const char *target_service, const char *target_hostname, const SEC_WINNT_AUTH_IDENTITY *identity, const char *pkinit)
 
FREERDP_LOCAL BOOL credssp_auth_setup_server (rdpCredsspAuth *auth)
 
FREERDP_LOCAL void credssp_auth_set_flags (rdpCredsspAuth *auth, ULONG flags)
 
FREERDP_LOCAL int credssp_auth_authenticate (rdpCredsspAuth *auth)
 
FREERDP_LOCAL BOOL credssp_auth_encrypt (rdpCredsspAuth *auth, const SecBuffer *plaintext, SecBuffer *ciphertext, size_t *signature_length, ULONG sequence)
 
FREERDP_LOCAL BOOL credssp_auth_decrypt (rdpCredsspAuth *auth, const SecBuffer *ciphertext, SecBuffer *plaintext, ULONG sequence)
 
FREERDP_LOCAL BOOL credssp_auth_impersonate (rdpCredsspAuth *auth)
 
FREERDP_LOCAL BOOL credssp_auth_revert_to_self (rdpCredsspAuth *auth)
 
FREERDP_LOCAL BOOL credssp_auth_set_spn (rdpCredsspAuth *auth, const char *service, const char *hostname)
 
FREERDP_LOCAL void credssp_auth_take_input_buffer (rdpCredsspAuth *auth, SecBuffer *buffer)
 
FREERDP_LOCAL const SecBuffercredssp_auth_get_output_buffer (rdpCredsspAuth *auth)
 
FREERDP_LOCAL BOOL credssp_auth_have_output_token (rdpCredsspAuth *auth)
 
FREERDP_LOCAL BOOL credssp_auth_is_complete (rdpCredsspAuth *auth)
 
FREERDP_LOCAL const char * credssp_auth_pkg_name (rdpCredsspAuth *auth)
 
FREERDP_LOCAL size_t credssp_auth_trailer_size (rdpCredsspAuth *auth)
 
FREERDP_LOCAL void credssp_auth_free (rdpCredsspAuth *auth)
 

Macro Definition Documentation

◆ CREDSSP_AUTH_PKG_KERBEROS

#define CREDSSP_AUTH_PKG_KERBEROS   "Kerberos"

◆ CREDSSP_AUTH_PKG_NTLM

#define CREDSSP_AUTH_PKG_NTLM   "NTLM"

◆ CREDSSP_AUTH_PKG_SCHANNEL

#define CREDSSP_AUTH_PKG_SCHANNEL   "Schannel"

◆ CREDSSP_AUTH_PKG_SPNEGO

#define CREDSSP_AUTH_PKG_SPNEGO   "Negotiate"

FreeRDP: A Remote Desktop Protocol Implementation

Copyright 2022 Isaac Klein fifth.nosp@m.degr.nosp@m.ee@pr.nosp@m.oton.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

◆ credssp_auth_authenticate()

FREERDP_LOCAL int credssp_auth_authenticate ( rdpCredsspAuth *  auth)
                                SSPI Client Ceremony

                                   --------------
                                  ( Client Begin )
                                   --------------
                                         |
                                         |
                                        \|/
                              -----------+--------------
                             | AcquireCredentialsHandle |
                              --------------------------
                                         |
                                         |
                                        \|/
                            -------------+--------------
         +---------------> / InitializeSecurityContext /
         |                 ----------------------------
         |                               |
         |                               |
         |                              \|/

------------------------— ------—+----------— -------------------— / Receive blob from server / < Received security blob? > –Yes-> / Send blob to server / ----------—+----------— --------------------— -------------------— /|\ | | | No | Yes |/ | | ---------—+--------— |

+-------------— < Received Continue Needed > <--------------—+

| No |/ ---—+----—

( Client End )

Here is the call graph for this function:
Here is the caller graph for this function:

◆ credssp_auth_decrypt()

FREERDP_LOCAL BOOL credssp_auth_decrypt ( rdpCredsspAuth *  auth,
const SecBuffer ciphertext,
SecBuffer plaintext,
ULONG  sequence 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ credssp_auth_encrypt()

FREERDP_LOCAL BOOL credssp_auth_encrypt ( rdpCredsspAuth *  auth,
const SecBuffer plaintext,
SecBuffer ciphertext,
size_t *  signature_length,
ULONG  sequence 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ credssp_auth_free()

FREERDP_LOCAL void credssp_auth_free ( rdpCredsspAuth *  auth)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ credssp_auth_get_output_buffer()

FREERDP_LOCAL const SecBuffer* credssp_auth_get_output_buffer ( rdpCredsspAuth *  auth)
Here is the caller graph for this function:

◆ credssp_auth_have_output_token()

FREERDP_LOCAL BOOL credssp_auth_have_output_token ( rdpCredsspAuth *  auth)
Here is the caller graph for this function:

◆ credssp_auth_impersonate()

FREERDP_LOCAL BOOL credssp_auth_impersonate ( rdpCredsspAuth *  auth)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ credssp_auth_init()

FREERDP_LOCAL BOOL credssp_auth_init ( rdpCredsspAuth *  auth,
TCHAR pkg_name,
SecPkgContext_Bindings bindings 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ credssp_auth_is_complete()

FREERDP_LOCAL BOOL credssp_auth_is_complete ( rdpCredsspAuth *  auth)
Here is the caller graph for this function:

◆ credssp_auth_new()

FREERDP_LOCAL rdpCredsspAuth* credssp_auth_new ( const rdpContext *  context)
Here is the caller graph for this function:

◆ credssp_auth_pkg_name()

FREERDP_LOCAL const char* credssp_auth_pkg_name ( rdpCredsspAuth *  auth)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ credssp_auth_revert_to_self()

FREERDP_LOCAL BOOL credssp_auth_revert_to_self ( rdpCredsspAuth *  auth)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ credssp_auth_set_flags()

FREERDP_LOCAL void credssp_auth_set_flags ( rdpCredsspAuth *  auth,
ULONG  flags 
)
Here is the caller graph for this function:

◆ credssp_auth_set_spn()

FREERDP_LOCAL BOOL credssp_auth_set_spn ( rdpCredsspAuth *  auth,
const char *  service,
const char *  hostname 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ credssp_auth_setup_client()

FREERDP_LOCAL BOOL credssp_auth_setup_client ( rdpCredsspAuth *  auth,
const char *  target_service,
const char *  target_hostname,
const SEC_WINNT_AUTH_IDENTITY identity,
const char *  pkinit 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ credssp_auth_setup_server()

FREERDP_LOCAL BOOL credssp_auth_setup_server ( rdpCredsspAuth *  auth)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ credssp_auth_take_input_buffer()

FREERDP_LOCAL void credssp_auth_take_input_buffer ( rdpCredsspAuth *  auth,
SecBuffer buffer 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ credssp_auth_trailer_size()

FREERDP_LOCAL size_t credssp_auth_trailer_size ( rdpCredsspAuth *  auth)
Here is the caller graph for this function: