updates.
authorPekka Riikonen <priikone@silcnet.org>
Tue, 3 Feb 2004 18:36:02 +0000 (18:36 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Tue, 3 Feb 2004 18:36:02 +0000 (18:36 +0000)
doc/draft-riikonen-silc-commands-06.nroff
doc/draft-riikonen-silc-pp-08.nroff
doc/draft-riikonen-silc-spec-08.nroff

index 1db15932bbea27dac04de74dd1ab399be94e138c..0c3a514bf60469376cda0d5ea7b8e3e58e90a2a5 100644 (file)
@@ -213,10 +213,9 @@ ID, length of the ID and the actual ID data.  This way variable length
 ID's can be sent as arguments.
 
 All passphrases that may be sent in commands as arguments MUST be
-UTF-8 [RFC2279] encoded.  All strings, with exeption of nicknames and
-channel names [SILC1], are UTF-8 encoded.  This includes strings like
-algorithm names, quit, kick and kill messages, service identifiers and
-others.
+UTF-8 [RFC3629] encoded.  All strings sent as arguments in command and
+command reply are also UTF-8 encoded, unless otherwise defined.  See
+the [SILC1] for general UTF-8 definition in SILC protocol.
 
 All public keys and certificates that are sent as arguments are actually
 Public Key Payloads [SILC2].  This way it is possible to send different
@@ -260,9 +259,9 @@ List of all defined commands in SILC follows.
 
         It is also possible to search the user by Client ID.  If the
         <Client ID> is provided server MUST use it as the search value
-        instead of the <nickname>.  It is also possible to define multiple 
-        Client ID's to search multiple users sending only one WHOIS 
-        command.  In this case the Client ID's are appended as normal 
+        instead of the <nickname>.  It is also possible to define multiple
+        Client ID's to search multiple users sending only one WHOIS
+        command.  In this case the Client ID's are appended as normal
         arguments.
 
         The <Requested Attributes> is defined in [ATTRS] and can be used
@@ -280,8 +279,8 @@ List of all defined commands in SILC follows.
         to request all users on some server.  The WHOIS requests MUST
         be based on explicit nickname request.
 
-        The WHOIS request MUST be always sent to the router by normal 
-        server so that all users are searched.  However, the server still 
+        The WHOIS request MUST be always sent to the router by normal
+        server so that all users are searched.  However, the server still
         MUST search its locally connected clients.  The router MUST send
         this command to the server which owns the requested client, if
         the router is unable to provide all mandatory information about
@@ -489,9 +488,8 @@ List of all defined commands in SILC follows.
             Arguments:  (1) <nickname>
 
         Set/change nickname.  This command is used to set nickname for
-        user.  Nickname MUST NOT include any whitespaces (` '),
-        non-printable characters, commas (`,'), '@', '!' or any wildcard
-        characters.
+        user.  See [SILC1] for definition of correctly formatted
+        nickname.
 
         When nickname is changed new Client ID is generated.  Server MUST
         distribute SILC_NOTIFY_TYPE_NICK_CHANGE to local clients on the
@@ -932,10 +930,8 @@ List of all defined commands in SILC follows.
         created.  If server is normal server this command MUST be sent
         to router which will create the channel.  The channel MAY be
         protected with passphrase.  If this is the case the passphrase
-        MUST be sent along the join command.
-
-        The name of the <channel> MUST NOT include any spaces (` '),
-        non-printable characters, commas (`,') or any wildcard characters.
+        MUST be sent along the join command.  See the [SILC1] for
+        definition of correctly formatted channel name, <channel>.
 
         The second argument <Client ID> is the Client ID of the client
         which is joining to the client.  When client sends this command
@@ -2004,7 +2000,7 @@ List of all defined commands in SILC follows.
         remote service.  The authentication to a service may be based
         on previous agreement with the requester and the service
         provider.  The command MAY also take additional service
-        specific arguments.  The <service name> is UTF-8 string.
+        specific arguments.
 
         This document does not specify any services.  How the services
         are configured and put available in a server is also out of
@@ -2524,8 +2520,8 @@ security of this protocol.
 [RFC2119]    Bradner, S., "Key Words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.
 
-[RFC2279]    Yergeau, F., "UTF-8, a transformation format of ISO
-             10646", RFC 2279, January 1998.
+[RFC3629]    Yergeau, F., "UTF-8, a transformation format of ISO
+             10646", RFC 3629, November 2003.
 
 [ATTRS]      Riikonen, P., "User Online Presence and Information
              Attributes", Internet Draft, May 2002.
index 85743ab811f894186b79e0094c85471792b0322c..9d98dbac35e82d7fce86be3f427ee8b3b5d560ce 100644 (file)
@@ -1344,12 +1344,12 @@ o Argument Nums (1 byte) - Indicates the number of Argument
   arguments to be sent along the notify message.
 .in 3
 
-The following list of currently defined notify types.  The format for
+Following the list of currently defined notify types.  The format for
 notify arguments is same as in SILC commands described in [SILC4].
 Note that all IDs sent in arguments are sent inside ID Payload.  Also
-note that all passphrases that may be sent inside arguments MUST be
-UTF-8 [RFC2279] encoded.  Also note that all public keys or certificates
-sent inside arguments are actually Public Key Payloads.
+note that all strings sent as arguments MUST be UTF-8 [RFC3629] encoded,
+unless otherwise defined.  Also note that all public keys or
+certificates sent inside arguments are actually Public Key Payloads.
 
 
 .in 6
@@ -1361,7 +1361,7 @@ sent inside arguments are actually Public Key Payloads.
       Max Arguments:  1
           Arguments:  (1) <message>
 
-      The <message> is implementation specific free UTF-8 text string.
+      The <message> is implementation specific free text string.
       Receiver MAY ignore this message.
 
 
@@ -1372,7 +1372,7 @@ sent inside arguments are actually Public Key Payloads.
       is sent to local servers on the channel, but MUST NOT be sent
       to clients on the channel.  Router MUST broadcast this to its
       primary router and to local servers on the channel.  When a client
-      was directly invited to the channel this is also sent to that 
+      was directly invited to the channel this is also sent to that
       client.  In this case the packet is destined to the client.
 
       Max Arguments:  5
@@ -1392,7 +1392,7 @@ sent inside arguments are actually Public Key Payloads.
       The <invite list> format is defined in [SILC4] with
       SILC_COMMAND_INVITE command.  When this notify is destined to
       a client the <add | del> and <invite list> MUST NOT be sent.
-      When <add | del> is used  to announce information during server 
+      When <add | del> is used  to announce information during server
       connecting phase the argument type MUST be 0x03.  See section
       4.2.1 in [SILC1] for more information.
 
@@ -1560,7 +1560,7 @@ sent inside arguments are actually Public Key Payloads.
           Arguments:  (1) <motd>
 
       The <motd> is the Message of the Day.  This notify MAY be
-      ignored.
+      ignored and is OPTIONAL.
 
 
 10    SILC_NOTIFY_TYPE_CHANNEL_CHANGE
@@ -1618,8 +1618,8 @@ sent inside arguments are actually Public Key Payloads.
                       (3) <Kicker's Client ID>
 
       The <Client ID> is the client which was kicked from the channel.
-      The kicker may have set the <comment> to indicate the reason for
-      the kicking.  The <Kicker's Client ID> is the kicker.
+      The kicker may have set the <comment> string to indicate the
+      reason for the kicking.  The <Kicker's Client ID> is the kicker.
 
 
 13    SILC_NOTIFY_TYPE_KILLED
@@ -1641,9 +1641,9 @@ sent inside arguments are actually Public Key Payloads.
                       (3) <Killer's ID>
 
       The <Client ID> is the client which was killed from the network.
-      The killer may have set the <comment> to indicate the reason for
-      the killing.  The <Killer's ID> is the killer, which may be
-      client but also router server.
+      The killer may have set the  <comment> string to indicate the
+      reason for the killing.  The <Killer's ID> is the killer, which
+      may be client but also router server.
 
 
 14    SILC_NOTIFY_TYPE_UMODE_CHANGE
@@ -1675,7 +1675,7 @@ sent inside arguments are actually Public Key Payloads.
       from ban list.  The <ban list> indicates the information to be
       added to or removed from the ban list.  The <ban list> format
       format is defined in [SILC4] with SILC_COMMAND_BAN command.
-      When <add | del> is used  to announce information during server 
+      When <add | del> is used  to announce information during server
       connecting phase the argument type MUST be 0x03.  See section
       4.2.1 in [SILC1] for more information.
 
@@ -1769,7 +1769,7 @@ Figure 14:  Error Payload
 
 .in 6
 o Error Message (variable length) - Human readable error
-  message as UTF-8 string.
+  message.
 .in 3
 
 
@@ -2377,9 +2377,9 @@ o Hostname Length (2 bytes) - Indicates the length of the
   Hostname field.
 
 o Hostname (variable length) - The hostname or IP address where
-  the SKE protocol is running.  The sender MAY fill this field
-  when sending the payload.  If the receiver sends this payload
-  as reply to the request it MUST fill this field.
+  the SKE protocol is running, as UTF-8 encoded string.  The sender
+  MAY fill this field when sending the payload.  If the receiver
+  sends this payload as reply to the request it MUST fill this field.
 
 o Port (4 bytes) - The port where the SKE protocol is bound.
   The sender MAY fill this field when sending the payload.  If
@@ -3002,8 +3002,8 @@ security of this protocol.
 [SFTP]       Ylonen T., and Lehtinen S., "Secure Shell File Transfer
              Protocol", Internet Draft, March 2001.
 
-[RFC2279]    Yergeau, F., "UTF-8, a transformation format of ISO
-             10646", RFC 2279, January 1998.
+[RFC3629]    Yergeau, F., "UTF-8, a transformation format of ISO
+             10646", RFC 3629, November 2003.
 
 
 .ti 0
index cff55e930349f8069916e9d21859466c92baf878..bb8f6da56c9ad792f20a3010e4dbcf14f3c976de 100644 (file)
@@ -113,9 +113,11 @@ Table of Contents
       3.10.5 Compression Algorithms ............................. 28
   3.11 SILC Public Key .......................................... 29
   3.12 SILC Version Detection ................................... 31
-  3.13 Backup Routers ........................................... 31
-      3.13.1 Switching to Backup Router ......................... 33
-      3.13.2 Resuming Primary Router ............................ 34
+  3.13 UTF-8 Strings in SILC .................................... XXXX
+      3.13.1 UTF-8 Nicknames and Channel Names .................. XXXX
+  3.14 Backup Routers ........................................... 31
+      3.14.1 Switching to Backup Router ......................... 33
+      3.14.2 Resuming Primary Router ............................ 34
 4 SILC Procedures ............................................... 36
   4.1 Creating Client Connection ................................ 37
   4.2 Creating Server Connection ................................ 38
@@ -466,8 +468,8 @@ host names to be used along with the nicknames on user interface to
 identify specific users when sending messages.  This feature of SILC
 makes IRC style nickname-wars obsolete as no one owns their nickname;
 there can always be someone else with the same nickname.  Also, any kind
-of nickname registering service becomes obsolete.  The maximum length of
-nickname is 128 bytes.
+of nickname registering service becomes obsolete.  See the section 3.13.1
+for more information about nicknames.
 
 
 .ti 0
@@ -506,7 +508,11 @@ o MD5 hash - MD5 hash value of the lowercase nickname is
   truncated taking 88 bits from the start of the hash value.
   This hash value is used to search the user's Client ID
   from the ID lists.  Note that the nickname MUST be in
-  lowercase format.
+  lowercase format before computing the hash value.  Since
+  nicknames are UTF-8 encoded, some characters cannot be
+  converted to lower case.  All characters that has a
+  lowercase alternative in the Unicode standard MUST be
+  converted to lowercase.
 
 .in 3
 Collisions could occur when more than 2^8 clients using same nickname
@@ -754,14 +760,12 @@ channel.
 
 Channel names are unique although the real uniqueness comes from 64 bit
 Channel ID.  However, channel names are still unique and no two global
-channels with same name may exist.  The channel name is a string of
-maximum length of 256 bytes.  Channel names MUST NOT contain any
-whitespaces (`  '), any non-printable ASCII characters, commas (`,')
-and wildcard characters.
+channels with same name may exist.  See the section 3.13.1 for more
+information about channel names.
 
-Channels can have operators that can administrate the channel and
-operate all of its modes.  The following operators on channel exist on
-the SILC network.
+Channels can have operators that can administrate the channel and operate
+all of its modes.  The following operators on channel exist on the
+SILC network.
 
 .in 6
 o Channel founder - When channel is created the joining client becomes
@@ -1082,7 +1086,7 @@ to connect to server without explicit authentication.  Servers are
 REQUIRED to use authentication protocol when connecting.  The
 authentication may be based on passphrase (pre-shared secret) or public
 key based on digital signatures.  All passphrases sent in SILC protocol
-MUST be UTF-8 [RFC2279] encoded. The connection authentication protocol
+MUST be UTF-8 [RFC3629] encoded. The connection authentication protocol
 is described in detail in [SILC3].
 
 
@@ -1621,7 +1625,70 @@ SILC-1.2-2.4.5 Vendor Limited
 
 
 .ti 0
-3.13 Backup Routers
+3.13 UTF-8 Strings in SILC
+
+By default all strings that are sent in SILC protocol MUST be UTF-8
+[RFC3269] encoded, unless otherwise defined.  This means that any string
+sent inside, for example, command, command reply, notify or any packet
+payload is UTF-8 encoded.  Also nicknames, channel names, server names,
+and hostnames are UTF-8 encoded.  This definition does not affect
+messages sent in SILC, as the Message Payload provides its own mechanism
+to indicate whether a message is UTF-8 text message, data message, which
+might use its own character encoding, or pure binary message [SILC2].
+
+Certain limitations are imposed on the UTF-8 encoded strings in SILC.
+The UTF-8 encoded strings MUST NOT include any characters that are
+marked in the Unicode standard as control codes, Unicode noncharacters,
+reserved or private range characters, or any other illegal Unicode
+characters.  Also the BOM (Byte-Order Mark) MUST NOT be used as byte
+order signature in UTF-8 encoded strings.
+
+Because of these limitations on the UTF-8 encoded strings the
+implementation may need to have access to full Unicode implementation
+to be able to validate the contents of the strings.  This is especially
+important in server implementation because server must verify that,
+for example, nicknames does not include any prohibited characters.
+Server also need to have the capability to convert character case from
+upper case to lower case characters, when applicable.
+
+On user interface where UTF-8 strings are displayed the implementation
+is RECOMMENDED to escape any character that it is unable to render
+properly.  The escaping may be done for example as described in
+[RFC2253].
+
+
+.ti 0
+3.13.1 UTF-8 Nicknames and Channel Names
+
+The nicknames and channel names are also UTF-8 encoded in SILC protocol.
+As these strings may be used as message destination indicator on the
+user interface certain additional limitations has been imposed to it.
+In addition of general UTF-8 string limitations described in previous
+section, the UTF-8 encoded nickname and channel name strings MUST NOT
+include any characters that has been marked in the Unicode standard as
+space (white space) characters, line and paragraph separators,
+mathematical and currency symbol characters, or any other symbol
+characters, special characters or tags.  In addition nicknames and
+channel names MUST NOT include commas (','), '@', '!' or any wildcard
+characters.
+
+This definition means that these strings generally may only include
+letters, numbers, most punctuation characters and some other characters.
+For practical reasons all symbol characters and many other special
+characters are prohibited.  Conforming implementation MUST treat
+strings with prohibited characters as malformed strings.
+
+The length of a nickname string in SILC MUST NOT exceed 128 bytes.
+The length of a channel name string in SILC MUST NOT exceed 256 bytes.
+Since these strings are UTF-8 encoded the length of one character
+may be longer than one byte.  This means that the character length
+of these strings may be shorter than the maximum length of the string
+in bytes.  The minimum length of these strings MUST be at least one
+character, which may be one byte or more in length.
+
+
+.ti 0
+3.14 Backup Routers
 
 Backup routers may exist in the cell in addition to the primary router.
 However, they must not be active routers or act as routers in the cell.
@@ -1702,7 +1769,7 @@ router as described above.
 
 
 .ti 0
-3.13.1 Switching to Backup Router
+3.14.1 Switching to Backup Router
 
 When the primary router of the cell becomes unresponsive, for example
 by sending EOF to the connection, all the parties of this protocol MUST
@@ -1750,7 +1817,7 @@ and Servers.
 
 
 .ti 0
-3.13.2 Resuming Primary Router
+3.14.2 Resuming Primary Router
 
 Usually the primary router is unresponsive only a short period of time
 and it is intended that the original router of the cell will resume
@@ -2009,7 +2076,7 @@ MUST be announced by compiling a list of Notify Payloads with the
 SILC_NOTIFY_TOPIC_SET notify type into the SILC_PACKET_NOTIFY packet.
 Also, channel's invite and ban lists MUST be announced by compiling list
 of Notify Payloads with the SILC_NOTIFY_TYPE_INVITE and
-SILC_NOTIFY_TYPE_BAN notify types, respectively, into the 
+SILC_NOTIFY_TYPE_BAN notify types, respectively, into the
 SILC_PACKET_NOTIFY packet.
 
 The router which receives these lists MUST process them and broadcast
@@ -2539,8 +2606,8 @@ should have a forum to discuss the cell management issues.
 [RFC2119]    Bradner, S., "Key Words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.
 
-[RFC2279]    Yergeau, F., "UTF-8, a transformation format of ISO
-             10646", RFC 2279, January 1998.
+[RFC3629]    Yergeau, F., "UTF-8, a transformation format of ISO
+             10646", RFC 3629, November 2003.
 
 [RFC1321]    Rivest R., "The MD5 Message-Digest Algorithm", RFC 1321,
              April 1992.