updates.
[silc.git] / doc / draft-riikonen-silc-spec-02.nroff
index 09e03cee32cb8b9b81405ac4342d58882a269873..6c6f800d6eba1df6f6ba77d8bcee57a3b17e8037 100644 (file)
 .nf
 Network Working Group                                      P. Riikonen
 Internet-Draft
-draft-riikonen-silc-spec-01.txt                         6 October 2000
-Expires: 6 Jun 2001
+draft-riikonen-silc-spec-02.txt                        XXXXXXXXXXXXXXX
+Expires: XXX
 
 .in 3
 
 .ce 3
 Secure Internet Live Conferencing (SILC),
 Protocol Specification
-<draft-riikonen-silc-spec-01.txt>
+<draft-riikonen-silc-spec-02.txt>
 
 .ti 0
 Status of this Memo
@@ -2661,6 +2661,11 @@ List of all defined commands in SILC follows.
               privileges by SILC_COMMAND_SILCOPER command.  Client
               may unset the mode itself.
 
+           0x0004    SILC_UMODE_GONE
+
+              Marks that the user is not currently present in the
+              SILC Network.  Client may set and unset this mode.
+
         Reply messages to the command:
 
         Max Arguments:  2
@@ -2686,10 +2691,11 @@ List of all defined commands in SILC follows.
 
    17   SILC_COMMAND_CMODE
 
-        Max Arguments:  6
-            Arguments:  (1) <Channel ID>    (2) <channel mode mask>
-                        (3) [<user limit>]  (4) [<passphrase>]
-                        (5) [<cipher>]      (6) [<hmac>]
+        Max Arguments:  7
+            Arguments:  (1) <Channel ID>      (2) <channel mode mask>
+                        (3) [<user limit>]    (4) [<passphrase>]
+                        (5) [<cipher>]        (6) [<hmac>]
+                        (7) [<auth payload>]
 
         This command is used by client to set or change channel flags on
         a channel.  Channel has several modes that set various properties
@@ -2840,6 +2846,33 @@ List of all defined commands in SILC follows.
               to set/unset this mode.
 
 
+           0x0200    SILC_CMODE_FOUNDER_AUTH
+
+              Channel founder can set this mode to be able to regain
+              channel founder rights even if the client leaves the 
+              channel.  The <auth payload> is the Authentication Payload
+              consisting of the authentication method and authentication
+              data to be used in the authentication.  The server must
+              not accept NONE authentication method.  Also, if the 
+              method is public key authentication the server must not
+              save the authentication data from the payload as the
+              data is different on all authentications.  In this case the
+              server only saves the authentication method.
+
+              Note, that this  mode is effective only in the current server.
+              The client must connect to the same server later to be able
+              to regain the channel founder rights.  The server must save
+              the public key of the channel founder and use that to identify
+              the client who is claiming the channel founder rights.
+              The rights may be claimed by the SILC_CUMODE_FOUNDER 
+              channel user mode using SILC_COMMAND_CUMODE command.  The
+              set authentication data remains valid as long as the channel
+              exists or until the founder unsets this mode.
+
+              Typical implementation would use [+|-]f on user interface
+              to set/unset this mode.
+
+
         To make the mode system work, client must keep the channel mode
         mask locally so that the mode setting and unsetting would work
         without problems.  The client receives the initial channel mode
@@ -2873,9 +2906,9 @@ List of all defined commands in SILC follows.
 
    18   SILC_COMMAND_CUMODE
 
-        Max Arguments:  3
-            Arguments:  (1) <Channel ID>  (2) <mode mask>
-                        (3) <Client ID>
+        Max Arguments:  4
+            Arguments:  (1) <Channel ID>    (2) <mode mask>
+                        (3) <Client ID>     (4) [<auth payload>]
 
         This command is used by client to change channel user modes on
         channel.  Users on channel may have some special modes and this
@@ -2899,10 +2932,13 @@ List of all defined commands in SILC follows.
 
            0x0001    SILC_CUMODE_FOUNDER
 
-              The client is channel founder of the channel.  This mode
-              cannot be set by other client, it is set by the server when
-              the channel was founded (created).  The mode is provided 
-              because client may remove the founder rights from itself.
+              The client is channel founder of the channel.  Usually this
+              mode is set only by the server when the channel was created.
+              However, if the SILC_CMODE_FOUNDER_AUTH channel mode has
+              been set, the client can claim channel founder privileges
+              by providing the <auth payload> that the server will use
+              to authenticate the client.  The client can  remove this
+              mode at any time.
 
 
            0x0002    SILC_CUMODE_OPERATOR
@@ -2934,6 +2970,7 @@ List of all defined commands in SILC follows.
             SILC_STATUS_ERR_NO_CHANNEL_PRIV
             SILC_STATUS_ERR_UNKNOWN_MODE
             SILC_STATUS_ERR_NO_SUCH_CLIENT_ID
+            SILC_STATUS_ERR_AUTH_FAILED
 
 
    19   SILC_COMMAND_KICK
@@ -2971,26 +3008,52 @@ List of all defined commands in SILC follows.
             SILC_STATUS_ERR_NO_CLIENT_ID
 
 
-   20   SILC_COMMAND_RESTART
+   20   SILC_COMMAND_BAN
 
-        Max Arguments:  0
-            Arguments:  None
+        Max Arguments:  3
+            Arguments:  (1) <Channel ID>         (2) [<adding client>]
+                        (3) [<removing client>]
+
+        This command is used to manage the ban list of the channel
+        indicated by the <Channel ID>.  A client that is banned from
+        channel is no longer able to join the channel.  The client which
+        is executing this command must have at least channel operator
+        privileges on the channel.
+
+        The <adding client> and <removing client> are used to add to and
+        remove from the ban list.  The format of the <adding client> and
+        the <removing client> is of following format:
+
+            [<nickname>[@<server>]!][<username>]@[<hostname>]
+
+        The server must send the notify type SILC_NOTIFY_TYPE_BAN to its
+        primary router after adding to or removing from the ban list.
+        The wildcards may be used with this command.  If adding or removing
+        from than one clients then the lists are an comma (`,') separated
+        list.
+
+        If this command is executed without the ban arguments the command
+        merely replies with the current ban list.
 
-        This command may only be used by server operator to force a
-        server to restart itself.
 
         Reply messages to the command:
 
-        Max Arguments:  1
-            Arguments:  (1) <Status Payload>
+        Max Arguments:  3
+            Arguments:  (1) <Status Payload>  (2) <Channel ID>
+                        (3) [<ban list>]
 
-        This command replies only with Status Payload.
+        This command replies with the <Channel ID> of the channel and
+        the current <ban list> of the channel if it exists.
 
         Status messages:
 
             SILC_STATUS_OK
             SILC_STATUS_ERR_NOT_REGISTERED
-            SILC_STATUS_ERR_NO_SERVER_PRIV
+            SILC_STATUS_ERR_TOO_MANY_PARAMS
+            SILC_STATUS_ERR_NO_SUCH_CHANNEL_ID
+            SILC_STATUS_ERR_NO_CHANNEL_ID
+            SILC_STATUS_ERR_NOT_ON_CHANNEL
+            SILC_STATUS_ERR_NO_CHANNEL_PRIV
 
 
    21   SILC_COMMAND_CLOSE
@@ -3163,54 +3226,6 @@ List of all defined commands in SILC follows.
             SILC_STATUS_ERR_NOT_ON_CHANNEL
 
 
-   26   SILC_COMMAND_BAN
-
-        Max Arguments:  3
-            Arguments:  (1) <Channel ID>         (2) [<adding client>]
-                        (3) [<removing client>]
-
-        This command is used to manage the ban list of the channel
-        indicated by the <Channel ID>.  A client that is banned from
-        channel is no longer able to join the channel.  The client which
-        is executing this command must have at least channel operator
-        privileges on the channel.
-
-        The <adding client> and <removing client> are used to add to and
-        remove from the ban list.  The format of the <adding client> and
-        the <removing client> is of following format:
-
-            [<nickname>[@<server>]!][<username>]@[<hostname>]
-
-        The server must send the notify type SILC_NOTIFY_TYPE_BAN to its
-        primary router after adding to or removing from the ban list.
-        The wildcards may be used with this command.  If adding or removing
-        from than one clients then the lists are an comma (`,') separated
-        list.
-
-        If this command is executed without the ban arguments the command
-        merely replies with the current ban list.
-
-
-        Reply messages to the command:
-
-        Max Arguments:  3
-            Arguments:  (1) <Status Payload>  (2) <Channel ID>
-                        (3) [<ban list>]
-
-        This command replies with the <Channel ID> of the channel and
-        the current <ban list> of the channel if it exists.
-
-        Status messages:
-
-            SILC_STATUS_OK
-            SILC_STATUS_ERR_NOT_REGISTERED
-            SILC_STATUS_ERR_TOO_MANY_PARAMS
-            SILC_STATUS_ERR_NO_SUCH_CHANNEL_ID
-            SILC_STATUS_ERR_NO_CHANNEL_ID
-            SILC_STATUS_ERR_NOT_ON_CHANNEL
-            SILC_STATUS_ERR_NO_CHANNEL_PRIV
-
-
    27 - 199
 
         Currently undefined commands.