FreeRDP
rpc_bind.h File Reference
#include "rpc.h"
#include <winpr/wtypes.h>
#include <freerdp/api.h>
This graph shows which files directly or indirectly include this file:

Macros

#define TSGU_SYNTAX_IF_VERSION   0x00030001
 
#define NDR_SYNTAX_IF_VERSION   0x00000002
 
#define BTFN_SYNTAX_IF_VERSION   0x00000001
 

Enumerations

enum  RPC_BIND_STATE { RPC_BIND_STATE_INCOMPLETE , RPC_BIND_STATE_LAST_LEG , RPC_BIND_STATE_COMPLETE }
 

Functions

FREERDP_LOCAL int rpc_send_bind_pdu (rdpRpc *rpc, BOOL initial)
 
FREERDP_LOCAL BOOL rpc_recv_bind_ack_pdu (rdpRpc *rpc, wStream *s)
 
FREERDP_LOCAL int rpc_send_rpc_auth_3_pdu (rdpRpc *rpc)
 
FREERDP_LOCAL enum RPC_BIND_STATE rpc_bind_state (rdpRpc *rpc)
 
FREERDP_LOCAL BYTE rpc_auth_pkg_to_security_provider (const char *name)
 

Variables

FREERDP_LOCAL const p_uuid_t TSGU_UUID
 
FREERDP_LOCAL const p_uuid_t NDR_UUID
 
FREERDP_LOCAL const p_uuid_t BTFN_UUID
 

Macro Definition Documentation

◆ BTFN_SYNTAX_IF_VERSION

#define BTFN_SYNTAX_IF_VERSION   0x00000001

◆ NDR_SYNTAX_IF_VERSION

#define NDR_SYNTAX_IF_VERSION   0x00000002

◆ TSGU_SYNTAX_IF_VERSION

#define TSGU_SYNTAX_IF_VERSION   0x00030001

Enumeration Type Documentation

◆ RPC_BIND_STATE

Enumerator
RPC_BIND_STATE_INCOMPLETE 
RPC_BIND_STATE_LAST_LEG 
RPC_BIND_STATE_COMPLETE 

Function Documentation

◆ rpc_auth_pkg_to_security_provider()

FREERDP_LOCAL BYTE rpc_auth_pkg_to_security_provider ( const char *  name)
Here is the caller graph for this function:

◆ rpc_bind_state()

FREERDP_LOCAL enum RPC_BIND_STATE rpc_bind_state ( rdpRpc *  rpc)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_recv_bind_ack_pdu()

FREERDP_LOCAL BOOL rpc_recv_bind_ack_pdu ( rdpRpc *  rpc,
wStream s 
)

Maximum Transmit/Receive Fragment Size Negotiation

The client determines, and then sends in the bind PDU, its desired maximum size for transmitting fragments, and its desired maximum receive fragment size. Similarly, the server determines its desired maximum sizes for transmitting and receiving fragments. Transmit and receive sizes may be different to help preserve buffering. When the server receives the client’s values, it sets its operational transmit size to the minimum of the client’s receive size (from the bind PDU) and its own desired transmit size. Then it sets its actual receive size to the minimum of the client’s transmit size (from the bind) and its own desired receive size. The server then returns its operational values in the bind_ack PDU. The client then sets its operational values from the received bind_ack PDU. The received transmit size becomes the client’s receive size, and the received receive size becomes the client’s transmit size. Either party may use receive buffers larger than negotiated — although this will not provide any advantage — but may not transmit larger fragments than negotiated. SECURE_BIND_ACK: RPC bind_ack PDU with sec_trailer and auth_token. The PFC_SUPPORT_HEADER_SIGN flag in the PDU header is also set in this example. Auth_token is generated by the server in the previous step. Upon receiving that PDU, the client calls the implementation equivalent of the abstract GSS_Init_sec_context call, which returns an auth_token and continue status in this example.

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

◆ rpc_send_bind_pdu()

FREERDP_LOCAL int rpc_send_bind_pdu ( rdpRpc *  rpc,
BOOL  initial 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_send_rpc_auth_3_pdu()

FREERDP_LOCAL int rpc_send_rpc_auth_3_pdu ( rdpRpc *  rpc)

RPC_AUTH_3: The client knows that this is an NTLM that uses three legs. It sends an rpc_auth_3 PDU with the auth_token obtained in the previous step. Upon receiving this PDU, the server calls the implementation equivalent of the abstract GSS_Accept_sec_context call, which returns success status in this example.

Here is the caller graph for this function:

Variable Documentation

◆ BTFN_UUID

FREERDP_LOCAL const p_uuid_t BTFN_UUID
extern

◆ NDR_UUID

FREERDP_LOCAL const p_uuid_t NDR_UUID
extern

◆ TSGU_UUID

FREERDP_LOCAL const p_uuid_t TSGU_UUID
extern

FreeRDP: A Remote Desktop Protocol Implementation RPC Secure Context Binding

Copyright 2012 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.

Connection-Oriented RPC Protocol Client Details: http://msdn.microsoft.com/en-us/library/cc243724/