Den 2009-05-28 16:24 skrev Pierre Ossman:
On Thu, 28 May 2009 15:55:02 +0200 Peter Rosin wrote:
Den 2009-05-11 13:35 skrev Pierre Ossman:
Why is there both a numerical code, and a string pair used to identify
the extension? It seems a bit redundant.
Once upon a time I asked about related things on the tight list:
http://www.nabble.com/Tight-protocol-extension---clarification-needed-td15063207.html

I see. Could something short about that be added to the spec perhaps to
avoid confusion in the future?

Added short text about this, changed *code* to S32 (with a note) and
moved the "politics" back into the main document from the README. And
some nit-picking editorials.

Also diffed against trunk this time...

So, 3rd attempt.

Cheers,
Peter

---
Information collected from the rfbproto.h header and the registered-codes.txt
document from the TightVNC project.

Signed-off-by: Peter Rosin <p...@lysator.liu.se>
diff --git a/rfbproto.rst b/rfbproto.rst
index 55f96e7..99e30d7 100644
--- a/rfbproto.rst
+++ b/rfbproto.rst
@@ -344,6 +344,7 @@ Number      Name
 0           Invalid
 1           `None`_
 2           `VNC Authentication`_
+16          `Tight Security Type`_
 =========== ===========================================================
 
 Other registered security types are:
@@ -353,7 +354,6 @@ Number      Name
 =========== ===========================================================
 5           RA2
 6           RA2ne
-16          Tight
 17          Ultra
 18          TLS
 19          VeNCrypt
@@ -381,8 +381,11 @@ No. of bytes    Type    [Value]     Description
 4               ``U32``             status:
 ..                      0           OK
 ..                      1           failed
+..                      2           failed, too many attempts [#]_
 =============== ======= =========== ===================================
 
+.. [#] Only valid if the `Tight Security Type`_ is enabled.
+
 If successful, the protocol passes to the initialisation phase
 (`Initialisation Messages`_).
 
@@ -439,6 +442,138 @@ No. of bytes    Type    Description
 
 The protocol continues with the *SecurityResult* message.
 
+Tight Security Type
+-------------------
+
+The Tight security type is a generic protocol extension that allows for
+three things:
+
+Tunneling of data
+    A tunnel can be e.g. encryption, or indeed a no-op tunnel.
+
+Authentication
+    The Tight security type allows for flexible authentication of the
+    client, which is typically one of the other security types.
+
+Server capabilities
+    As a last step the Tight security type extends the `ServerInit`_
+    message and enables the server to let the client know about the
+    server capabilities in terms of encodings and supported message
+    types.
+
+The Tight security type is under the control of the TightVNC project,
+and any new numbers must be registered with that project before they
+can be added to any of the lists of Tight capabilities. It is strongly
+recommended that any messages and security types registered with
+RealVNC are also registered with the TightVNC project (register
+security types as Tight authentication capabilities) in order to
+eliminate clashes as much as is possible. Same thing with new
+encodings, but in that case the problem is not as severe as the
+TightVNC project are not using any encodings that are not registered
+with RealVNC. Please see the TightVNC website at
+http://www.tightvnc.com/ for details on how to contact the project.
+
+After the Tight security type has been selected, the server starts by
+sending a list of supported tunnels, in order of preference:
+
+=============== =============================== =======================
+No. of bytes    Type                            Description
+=============== =============================== =======================
+4               ``U32``                         *number-of-tunnels*
+=============== =============================== =======================
+
+followed by *number-of-tunnels* repetitions of the following:
+
+=============== =============================== =======================
+No. of bytes    Type                            Description
+=============== =============================== =======================
+16              ``CAPABILITY``                  *tunnel*
+=============== =============================== =======================
+
+where ``CAPABILITY`` is
+
+=============== =============================== =======================
+No. of bytes    Type                            Description
+=============== =============================== =======================
+4               ``S32``                         *code*
+4               ``U8`` array                    *vendor*
+8               ``U8`` array                    *signature*
+=============== =============================== =======================
+
+Note that the *code* is not the only thing identifying a capability.
+The client must ensure that all members of the structure match before
+using the capability. Also note that *code* is ``U32`` in the original
+Tight documentation and implementation, but since *code* is used to
+hold encoding numbers we have selected ``S32`` in this document.
+
+The following tunnel capabilities are registered:
+
+=========== ========= ============= ===================================
+Code        Vendor    Signature     Description
+=========== ========= ============= ===================================
+0           ``TGHT``  ``NOTUNNEL``  No tunneling
+=========== ========= ============= ===================================
+
+If *number-of-tunnels* is non-zero, the client has to request a tunnel
+from the list with a tunneling method request:
+
+=============== =============================== =======================
+No. of bytes    Type                            Description
+=============== =============================== =======================
+4               ``S32``                         *code*
+=============== =============================== =======================
+
+If *number-of-tunnels* is zero, the client must make no such request,
+instead the server carries on with sending the list of supported
+authentication types, in order of preference:
+
+=============== =============================== =======================
+No. of bytes    Type                            Description
+=============== =============================== =======================
+4               ``U32``                         *number-of-auth-types*
+=============== =============================== =======================
+
+followed by *number-of-auth-types* repetitions of the following:
+
+=============== =============================== =======================
+No. of bytes    Type                            Description
+=============== =============================== =======================
+16              ``CAPABILITY``                  *auth-type*
+=============== =============================== =======================
+
+The following authentication capabilities are registered:
+
+=========== ========= ============= ===================================
+Code        Vendor    Signature     Description
+=========== ========= ============= ===================================
+1           ``STDV``  ``NOAUTH__``  `None`_
+2           ``STDV``  ``VNCAUTH_``  `VNC Authentication`_
+19          ``VENC``  ``VENCRYPT``  VeNCrypt Security
+20          ``GTKV``  ``SASL____``  Simple Authentication and Security
+                                    Layer (SASL)
+129         ``TGHT``  ``ULGNAUTH``  Unix Login Authentication
+130         ``TGHT``  ``XTRNAUTH``  External Authentication
+=========== ========= ============= ===================================
+
+If *number-of-auth-types* is non-zero, the client has to request an
+authentication type from the list with an authentication scheme
+request:
+
+=============== =============================== =======================
+No. of bytes    Type                            Description
+=============== =============================== =======================
+4               ``S32``                         *code*
+=============== =============================== =======================
+
+For *code* 1, the protocol the proceeds at security type `None`_ and
+for *code* 2 it proceeds at security type `VNC Authentication`_.
+
+If *number-of-auth-types* is zero, the protocol the proceeds directly
+at security type `None`_.
+
+Note that the `ServerInit`_ message is extended when the Tight security
+type has been activated.
+
 Initialisation Messages
 +++++++++++++++++++++++
 
@@ -533,6 +668,100 @@ intensities, but which serve as indices into a colour 
map. Entries in
 the colour map are set by the server using the *SetColourMapEntries*
 message (`SetColourMapEntries`_).
 
+If the `Tight Security Type`_ is activated, the server init message is
+extended with an interaction capabilities section:
+
+=============== =========== ========== ================================
+No. of bytes    Type        [Value]    Description
+=============== =========== ========== ================================
+2               ``U16``                *number-of-server-messages*
+2               ``U16``                *number-of-client-messages*
+2               ``U16``                *number-of-encodings*
+2               ``U16``     0          *padding*
+=============== =========== ========== ================================
+
+followed by *number-of-server-messages* repetitions of the following:
+
+=============== =============================== =======================
+No. of bytes    Type                            Description
+=============== =============================== =======================
+16              ``CAPABILITY``                  *server-message*
+=============== =============================== =======================
+
+followed by *number-of-client-messages* repetitions of the following:
+
+=============== =============================== =======================
+No. of bytes    Type                            Description
+=============== =============================== =======================
+16              ``CAPABILITY``                  *client-message*
+=============== =============================== =======================
+
+followed by *number-of-encodings* repetitions of the following:
+
+=============== =============================== =======================
+No. of bytes    Type                            Description
+=============== =============================== =======================
+16              ``CAPABILITY``                  *encodings*
+=============== =============================== =======================
+
+The following *server-message* capabilities are registered:
+
+=========== ========= ============= ===================================
+Code        Vendor    Signature     Description
+=========== ========= ============= ===================================
+130         ``TGHT``  ``FTS_LSDT``  File List Data
+131         ``TGHT``  ``FTS_DNDT``  File Download Data
+132         ``TGHT``  ``FTS_UPCN``  File Upload Cancel
+133         ``TGHT``  ``FTS_DNFL``  File Download Failed
+150         ``TGHT``  ``CUS_EOCU``  End Of Continuous Updates
+253         ``GGI_``  ``GII_SERV``  `gii Server Message`_
+=========== ========= ============= ===================================
+
+The following *client-message* capabilities are registered:
+
+=========== ========= ============= ===================================
+Code        Vendor    Signature     Description
+=========== ========= ============= ===================================
+130         ``TGHT``  ``FTC_LSRQ``  File List Request
+131         ``TGHT``  ``FTC_DNRQ``  File Download Request
+132         ``TGHT``  ``FTC_UPRQ``  File Upload Request
+133         ``TGHT``  ``FTC_UPDT``  File Upload Data
+134         ``TGHT``  ``FTC_DNCN``  File Download Cancel
+135         ``TGHT``  ``FTC_UPFL``  File Upload Failed
+136         ``TGHT``  ``FTC_FCDR``  File Create Directory Request
+150         ``TGHT``  ``CUC_ENCU``  Enable/Disable Continuous Updates
+151         ``TGHT``  ``VRECTSEL``  Video Rectangle Selection
+253         ``GGI_``  ``GII_CLNT``  `gii Client Message`_
+=========== ========= ============= ===================================
+
+The following *encoding* capabilities are registered:
+
+=========== ========= ============= ===================================
+Code        Vendor    Signature     Description
+=========== ========= ============= ===================================
+0           ``STDV``  ``RAW_____``  `Raw Encoding`_
+1           ``STDV``  ``COPYRECT``  `CopyRect Encoding`_
+2           ``STDV``  ``RRE_____``  `RRE Encoding`_
+4           ``STDV``  ``CORRE___``  `CoRRE Encoding`_
+5           ``STDV``  ``HEXTILE_``  `Hextile Encoding`_
+6           ``TRDV``  ``ZLIB____``  `ZLib Encoding`_
+7           ``TGHT``  ``TIGHT___``  Tight Encoding
+8           ``TRDV``  ``ZLIBHEX_``  `ZLibHex Encoding`_
+-32         ``TGHT``  ``JPEGQLVL``  JPEG Quality Level
+-223        ``TGHT``  ``NEWFBSIZ``  `DesktopSize Pseudo-encoding`_ (New
+                                    FB Size)
+-224        ``TGHT``  ``LASTRECT``  Last Rect
+-232        ``TGHT``  ``POINTPOS``  Pointer Position
+-239        ``TGHT``  ``RCHCURSR``  `Cursor Pseudo-encoding`_ (Rich
+                                    Cursor)
+-240        ``TGHT``  ``X11CURSR``  X Cursor
+-256        ``TGHT``  ``COMPRLVL``  Compression Level
+-305        ``GGI_``  ``GII_____``  `gii Pseudo-encoding`_
+=========== ========= ============= ===================================
+
+Note that the server need not (but it may) list the ``RAW_____``
+capability since it must be supported anyway.
+
 Client to Server Messages
 +++++++++++++++++++++++++
 
------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT 
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, & 
iPhoneDevCamp as they present alongside digital heavyweights like Barbarian 
Group, R/GA, & Big Spaceship. http://p.sf.net/sfu/creativitycat-com 
_______________________________________________
tigervnc-rfbproto mailing list
tigervnc-rfbproto@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tigervnc-rfbproto

Reply via email to