From: Pekka Riikonen Date: Fri, 19 Apr 2002 07:04:50 +0000 (+0000) Subject: updates X-Git-Tag: 1.2.beta1~1406 X-Git-Url: http://git.silcnet.org/gitweb/?p=crypto.git;a=commitdiff_plain;h=fca3453b57d29a0d28a1ef2ba9d7f5b3a2801c28 updates --- diff --git a/CHANGES b/CHANGES index 5708445f..cfce68d8 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,11 @@ +Fri Apr 19 09:02:20 CEST 2002 Pekka Riikonen + + * Added service support to SILC protocol. Added new command + SILC_COMMAND_SERVICE. Updated the protocol specs and the + core library. Services are not implemented in server or + client for now. Protocol TODO #20. Affected files are + lib/silccore/silcstatus.h, lib/silccore/silccommand.h. + Thu Apr 18 14:09:51 CEST 2002 Pekka Riikonen * Added silc_mime_parse function to parse MIME headers. diff --git a/TODO b/TODO index 6bcc7fa5..314939a0 100644 --- a/TODO +++ b/TODO @@ -112,8 +112,6 @@ TODO in SILC Protocol 17. Cell wide channel founder support, and permanent channels when founder mode set. - 20. Services support? - 21. Subscription/IRC's notify kind support? 24. Implement the and the Attribute Payload to diff --git a/doc/draft-riikonen-silc-commands-03.nroff b/doc/draft-riikonen-silc-commands-03.nroff index 677ae76c..525426a1 100644 --- a/doc/draft-riikonen-silc-commands-03.nroff +++ b/doc/draft-riikonen-silc-commands-03.nroff @@ -1711,7 +1711,61 @@ List of all defined commands in SILC follows. SILC_STATUS_ERR_NO_SUCH_SERVER_ID - 27 - 199 + 27 SILC_COMMAND_SERVICE + + Max Arguments: 256 + Arguments: (1) [] (2) [] + (n) [...] + + This command is used to negotiate a service agreement with a + remote server. If this command is given without arguments it + MAY return the service list, if it is publicly available. The + is a service sepcific identifier, and the + MAY be used to authenticate the requestor to the + remote service. The authentication to a service may be based + on previous agreement with the requestor and the service + provider. The command MAY also take additional service + specific arguments. + + This document does not specify any services. How the services + are configured and put available in a server is also out of + scope of this document. + + This command MAY be used by client to start using some service + in a server, but it also MAY be used by server to negotiate + to start using a service in some other server or router. + + After the negotiation is done both of the parties need to know + from the service identifier how the service can be used. The + service can be considered to be a protocol which both of the + parties need to support. + + Reply messages to the command: + + Max Arguments: 256 + Arguments: (1) (2) [] + (3) [] (n) [...] + + + This command MAY reply with the when command is + given without arguments, and the list is a comma separated list + of service identifiers. The is the service that + the sender requested and this is provided when the server has + accepted the sender to use the . The command + reply MAY also have additional service specific arguments. + + Status messages: + + SILC_STATUS_OK + SILC_STATUS_ERR_NOT_REGISTERED + SILC_STATUS_ERR_NOT_ENOUGH_PARAMS + SILC_STATUS_ERR_TOO_MANY_PARAMS + SILC_STATUS_ERR_NO_SUCH_SERVICE + SILC_STATUS_ERR_AUTH_FAILED + SILC_STATUS_ERR_PERM_DENIED + + + 28 - 199 Currently undefined commands. @@ -2049,6 +2103,11 @@ List of all defined status types: The unknown Server ID MUST be provided as next argument in the reply. + 49 SILC_STATUS_ERR_NO_SUCH_SERVICE + + "Service does not exist". Requested service identifier is + unknown. + .in 3 diff --git a/lib/silccore/silccommand.h b/lib/silccore/silccommand.h index 691d96ee..1575a80c 100644 --- a/lib/silccore/silccommand.h +++ b/lib/silccore/silccommand.h @@ -149,6 +149,7 @@ typedef unsigned char SilcCommand; #define SILC_COMMAND_LEAVE 24 #define SILC_COMMAND_USERS 25 #define SILC_COMMAND_GETKEY 26 +#define SILC_COMMAND_SERVICE 27 /* Private range start */ #define SILC_COMMAND_PRIV_CONNECT 200 diff --git a/lib/silccore/silcstatus.h b/lib/silccore/silcstatus.h index 73f598b8..a11e693b 100644 --- a/lib/silccore/silcstatus.h +++ b/lib/silccore/silcstatus.h @@ -93,6 +93,7 @@ typedef SilcUInt8 SilcStatus; #define SILC_STATUS_ERR_AUTH_FAILED 45 #define SILC_STATUS_ERR_UNKNOWN_ALGORITHM 46 #define SILC_STATUS_ERR_NO_SUCH_SERVER_ID 47 +#define SILC_STATUS_ERR_NO_SUCH_SERVICE 49 /***/ #endif /* SILCSTATUS_H */