Commit Graph

20 Commits

Author SHA1 Message Date
Marc-André Lureau
f4d8de5bdf protocol: add SPICE_{PLAYBACK,RECORD}_CAP_VOLUME caps
These changes the protocol the following way:

When the client announces it has SPICE_PLAYBACK_CAP_VOLUME, the server
can send PlaybackChannel.{volume,mute} messages to notify of volume
changes (respectively for RECORD).

If the client doesn't implement SPICE_PLAYBACK_CAP_VOLUME, the server can
handle the volume changes the way it prefers, for example, ignoring them or
applying volume effect on the server side etc..
2011-06-22 12:01:10 +02:00
Marc-André Lureau
7300282977 protocol: add common channel caps for AUTH mechanism selection
Current version 2.0 of the SPICE protocol describes how the client
reply to the server SpiceLinkReply message with a RSA_public_encrypt()
of the password.

Instead of using the current Spice AUTH mechanism, we would like to
offer different AUTH mechanisms, in particular SASL, which is a
framework allowing different underlying mechanisms such as
GSSAPI/Kerberos v5 (and optionally adding a data security layer).

We could bump the protocol version, but that would make this feature
mandatory for the implementer of the protocol. By using the channel
caps, the client and server are left to negotiate and alter the AUTH
part of the protocol as follows:

- SPICE_COMMON_CAP_PROTOCOL_AUTH_SELECTION, if set, the authentication
  mechanism can be chosen during link phase. If both client and server
  have this cap, the client MUST reply to SpiceLinkReply with a
  SpiceLinkAuthMechanism message, with the value of the CAP_AUTH
  mechanism choosen (a uint32 auth_mechanism). The following
  authentication steps are described by the selected authentication
  mechanism.

The differents mechanisms selectable via
SPICE_COMMON_CAP_PROTOCOL_AUTH_SELECTION are also specified as part of
the common channel caps. They can be used only if both client and
server offer them.

Ex: no AUTH selection
C: SpiceLinkMess
S: SpiceLinkReply, CAP_PROTOCOL_AUTH_SELECTION not in common caps
- The client can't choose AUTH, and fallback on Spice RSA mechanism

Ex: AUTH selection
C: SpiceLinkMess, CAP_PROTOCOL_AUTH_SELECTION in common caps
S: SpiceLinkReply, CAP_PROTOCOL_AUTH_SELECTION in common caps
- The client MUST reply with SpiceLinkAuthMechanism
C: SpiceLinkAuthMechanism (with a matching CAP_AUTH)

- SPICE_COMMON_CAP_AUTH_SPICE, the following steps and authentication
  mechanism are the same as with version 2.0: a RSA_public_encrypt()
  of the password is sent.

  This mechanism MUST be implemented in both client and server to
  comply with the SPICE protocol.

- SPICE_COMMON_CAP_AUTH_SASL, the authentication exchange follows
  SASL protocol has defined in RFC 2222.

  This mechanism is OPTIONAL in both client and servers.

Ex: AUTH selection, followed by SASL authentication

AUTH Selection:
C: SpiceLinkMess, CAP_PROTOCOL_AUTH_SELECTION + CAP_AUTH_SASL in common caps
S: SpiceLinkReply, CAP_PROTOCOL_AUTH_SELECTION + CAP_AUTH_SASL in common caps
- The client MUST reply with SpiceLinkAuthMechanism
C: SpiceLinkAuthMechanism CAP_AUTH_SASL

Init:
S:  u32 mechlist-length
    u8-array mechlist-string

Start:
C:  u32 mechname-length
    u8-array mechname-string
    u32 clientout-length
    u8-array clientout-string
S:  u32 serverin-length
    u8-array serverin-string
    u8 continue

Step: (while continue)
C:  u32 clientout-length
    u8-array clientout-string
S:  u32 serverin-length
    u8-array serverin-string
    u8 continue

See also VNC SASL protocol description, which uses the same protocol:

http://sourceforge.net/mailarchive/forum.php?thread_name=20100719125155.GA14166%40evileye.atkac.brq.redhat.com&forum_name=tigervnc-rfbproto

Updated since v1 of this commit:
 - renamed s/SPICE_CHANNEL_CAP/SPICE_COMMON_CAP
 - added some note about mandatory vs optional mechanisms.
2011-02-23 17:55:58 +02:00
Alexander Larsson
d8b1b6afb2 Change major to 2 to declare network protocol stable 2010-07-20 15:52:05 +02:00
Alexander Larsson
8ba4939810 Fix misspellings
SpicedSubMessage -> SpiceSubMessage
QXLAlphaBlnd -> QXLAlphaBlend
2010-07-08 18:22:41 +02:00
Alexander Larsson
a65d4b5d09 Move spice/draw.h to spice 2010-07-08 13:36:40 +02:00
Alexander Larsson
9837b4596c Reset minor to 0 as we're bumping major 2010-06-23 11:50:26 +02:00
Alexander Larsson
1f37a974bf Remove duplicated enums for keyboard modifiers 2010-06-18 16:29:49 +02:00
Alexander Larsson
23850b5fce Move all message structs to spice
We want to make these structures internal so we're free to change them.
The actual on-network ABI is now defined by the spice protocol
description rather than the c structures anyway.
2010-06-18 14:04:37 +02:00
Alexander Larsson
8a13061677 Move all enums and flags to generated header file 2010-06-18 13:21:59 +02:00
Alexander Larsson
d58376dc57 Add some types needed by the demarshalling work 2010-06-14 15:42:29 +02:00
Alexander Larsson
9e73c41877 Fix some misspelled identifiers
severty -> severity
SpiceResorceID -> SpiceResourceID
SpiceResorceList -> SpiceResourceList
resorces -> resources
ped_size -> pad_size
postition -> position
2010-05-21 11:09:22 +02:00
Alexander Larsson
916f3818d8 Pass format when creating surfaces rather than depth 2010-04-19 15:47:48 +02:00
Izik Eidus
14db228e81 spice-protocl: add spice_msg_display_surface_create/destroy
protocol commands to create/destroy surface on the client.

i removed spice_msg_display_mode as it now not needed

Signed-off-by: Izik Eidus <ieidus@redhat.com>
2010-04-03 05:40:50 +03:00
Alexander Larsson
d9f01c38ee Bump minor to 3
There is some confusion in the different branches on what the minors
mean. We expect minor == 2 to mean support for
SPICE_MSG_MAIN_MIGRATE_SWITCH_HOST and SpiceMsgMainMigrationBegin
with added public key info. All other additions like tunneling are
for minor 3 (although we might not do a release with minor 3, but
rather the bump major).
2010-03-24 16:11:59 +01:00
Alexander Larsson
a668cb38e2 Add SPICE_MSG_MAIN_MIGRATE_SWITCH_HOST message
This is a simpler form of migration
2010-03-24 16:11:59 +01:00
Alexander Larsson
6314aee92d Use int32, not int in protocol defining structure
"int" is not of a welldefined size, fortunally all existing uses
are 32bit.
2010-03-22 20:25:48 +01:00
Alexander Larsson
b49e090269 fix up reames 2010-02-04 18:11:09 +01:00
Alexander Larsson
e625b1a1fb Always include using <spice/foo.h> style 2010-02-04 16:47:23 +01:00
Alexander Larsson
49fccfefc8 Clean up and standardize header guards 2010-02-04 16:47:14 +01:00
Alexander Larsson
430b3b036d Clean up header names, removing references to "red"
red_error_codes.h -> spice/error_codes.h
 red.h -> spice/protocol.h
 reds_stat.h -> spice/stats.h
2010-02-04 16:47:07 +01:00