FreeRDP
|
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 |
#define BTFN_SYNTAX_IF_VERSION 0x00000001 |
#define NDR_SYNTAX_IF_VERSION 0x00000002 |
#define TSGU_SYNTAX_IF_VERSION 0x00030001 |
enum RPC_BIND_STATE |
FREERDP_LOCAL BYTE rpc_auth_pkg_to_security_provider | ( | const char * | name | ) |
FREERDP_LOCAL enum RPC_BIND_STATE rpc_bind_state | ( | rdpRpc * | rpc | ) |
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.
FREERDP_LOCAL int rpc_send_bind_pdu | ( | rdpRpc * | rpc, |
BOOL | initial | ||
) |
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.
|
extern |
|
extern |
|
extern |
FreeRDP: A Remote Desktop Protocol Implementation RPC Secure Context Binding
Copyright 2012 Marc-Andre Moreau marca ndre .more au@g mail. 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/