FreeRDP
|
#include <freerdp/config.h>
#include "settings.h"
#include <winpr/crt.h>
#include <winpr/crypto.h>
#include <winpr/assert.h>
#include <freerdp/log.h>
#include <freerdp/utils/string.h>
#include <freerdp/crypto/certificate.h>
#include "utils.h"
#include "gcc.h"
#include "nego.h"
#include "../crypto/certificate.h"
Macros | |
#define | TAG FREERDP_TAG("core.gcc") |
Enumerations | |
enum | HIGH_COLOR_DEPTH { HIGH_COLOR_4BPP = 0x04 , HIGH_COLOR_8BPP = 0x08 , HIGH_COLOR_15BPP = 0x0F , HIGH_COLOR_16BPP = 0x10 , HIGH_COLOR_24BPP = 0x18 } |
Variables | |
static const BYTE | t124_02_98_oid [6] = { 0, 0, 20, 124, 0, 1 } |
static const BYTE | h221_cs_key [4] = "Duca" |
static const BYTE | h221_sc_key [4] = "McDn" |
#define TAG FREERDP_TAG("core.gcc") |
FreeRDP: A Remote Desktop Protocol Implementation T.124 Generic Conference Control (GCC)
Copyright 2011 Marc-Andre Moreau marca Copyright 2014 Norbert Federa ndre .more au@g mail. comnorbe Copyright 2014 DI (FH) Martin Haimberger rt.f edera @thi ncast .commarti Copyright 2023 Armin Novak n.ha imber ger@ thinc ast. comanova Copyright 2023 Thincast Technologies GmbH k@th incas t.co m
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.
enum HIGH_COLOR_DEPTH |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
Read a client cluster data block (TS_UD_CS_CLUSTER). msdn{cc240514}
s | stream |
mcs | The MCS instance |
|
static |
Read a client core data block (TS_UD_CS_CORE). msdn{cc240510}
s | stream |
mcs | The MCS instance |
The following fields are all optional. If one field is present, all of the preceding fields MUST also be present. If one field is not present, all of the subsequent fields MUST NOT be present. We must check the bytes left before reading each field.
|
static |
Read a client message channel data block (TS_UD_CS_MCS_MSGCHANNEL). msdn{jj217627}
s | stream |
mcs | The MCS instance |
|
static |
Read a client monitor data block (TS_UD_CS_MONITOR). msdn{dd305336}
s | stream |
mcs | The MCS instance |
|
static |
|
static |
Read a client multitransport channel data block (TS_UD_CS_MULTITRANSPORT). msdn{jj217498}
s | stream |
mcs | The MCS instance |
|
static |
Read a client network data block (TS_UD_CS_NET). msdn{cc240512}
s | stream |
mcs | The MCS instance |
|
static |
Read a client security data block (TS_UD_CS_SEC). msdn{cc240511}
s | stream |
mcs | MCS instance |
|
static |
BOOL gcc_read_conference_create_request | ( | wStream * | s, |
rdpMcs * | mcs | ||
) |
Read a GCC Conference Create Request. msdn{cc240836}
s | stream |
mcs | The MCS instance |
BOOL gcc_read_conference_create_response | ( | wStream * | s, |
rdpMcs * | mcs | ||
) |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
Write a client cluster data block (TS_UD_CS_CLUSTER). msdn{cc240514}
s | stream |
mcs | The MCS instance |
|
static |
Write a client core data block (TS_UD_CS_CORE). msdn{cc240510}
s | The stream to write to |
mcs | The MSC instance to get the data from |
BOOL gcc_write_client_data_blocks | ( | wStream * | s, |
const rdpMcs * | mcs | ||
) |
|
static |
Write a client message channel data block (TS_UD_CS_MCS_MSGCHANNEL). msdn{jj217627}
s | stream |
mcs | The MCS instance |
|
static |
Write a client monitor data block (TS_UD_CS_MONITOR). msdn{dd305336}
s | stream |
mcs | The MCS to use |
|
static |
|
static |
Write a client multitransport channel data block (TS_UD_CS_MULTITRANSPORT). msdn{jj217498}
s | stream |
mcs | The MCS instance |
|
static |
Write a client network data block (TS_UD_CS_NET). msdn{cc240512}
s | stream |
mcs | The MCS to use |
|
static |
Write a client security data block (TS_UD_CS_SEC). msdn{cc240511}
s | stream |
mcs | The MCS instance |
Write a GCC Conference Create Request. msdn{cc240836}
s | stream |
userData | client data blocks |
|
static |
BOOL gcc_write_server_data_blocks | ( | wStream * | s, |
rdpMcs * | mcs | ||
) |
|
static |
|
static |
|
static |
|
static |
Write a user data header (TS_UD_HEADER). msdn{cc240509}
s | stream |
type | data block type |
length | data block length |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
T.124 GCC is defined in:
http://www.itu.int/rec/T-REC-T.124-199802-S/en ITU-T T.124 (02/98): Generic Conference Control ConnectData ::= SEQUENCE { t124Identifier Key, connectPDU OCTET_STRING }
Key ::= CHOICE { object OBJECT_IDENTIFIER, h221NonStandard H221NonStandardIdentifier }
ConnectGCCPDU ::= CHOICE { conferenceCreateRequest ConferenceCreateRequest, conferenceCreateResponse ConferenceCreateResponse, conferenceQueryRequest ConferenceQueryRequest, conferenceQueryResponse ConferenceQueryResponse, conferenceJoinRequest ConferenceJoinRequest, conferenceJoinResponse ConferenceJoinResponse, conferenceInviteRequest ConferenceInviteRequest, conferenceInviteResponse ConferenceInviteResponse, ... }
ConferenceCreateRequest ::= SEQUENCE { conferenceName ConferenceName, convenerPassword Password OPTIONAL, password Password OPTIONAL, lockedConference BOOLEAN, listedConference BOOLEAN, conductibleConference BOOLEAN, terminationMethod TerminationMethod, conductorPrivileges SET OF Privilege OPTIONAL, conductedPrivileges SET OF Privilege OPTIONAL, nonConductedPrivileges SET OF Privilege OPTIONAL, conferenceDescription TextString OPTIONAL, callerIdentifier TextString OPTIONAL, userData UserData OPTIONAL, ..., conferencePriority ConferencePriority OPTIONAL, conferenceMode ConferenceMode OPTIONAL }
ConferenceCreateResponse ::= SEQUENCE { nodeID UserID, tag INTEGER, result ENUMERATED { success (0), userRejected (1), resourcesNotAvailable (2), rejectedForSymmetryBreaking (3), lockedConferenceNotSupported (4) }, userData UserData OPTIONAL, ... }
ConferenceName ::= SEQUENCE { numeric SimpleNumericString text SimpleTextString OPTIONAL, ... }
SimpleNumericString ::= NumericString (SIZE (1..255)) (FROM ("0123456789"))
UserData ::= SET OF SEQUENCE { key Key, value OCTET_STRING OPTIONAL }
H221NonStandardIdentifier ::= OCTET STRING (SIZE (4..255))
UserID ::= DynamicChannelID
ChannelID ::= INTEGER (1..65535) StaticChannelID ::= INTEGER (1..1000) DynamicChannelID ::= INTEGER (1001..65535)