Author: dylan
Date: 2005-03-27 00:49:38 -0500 (Sun, 27 Mar 2005)
New Revision: 659
Modified:
trunk/
trunk/docs/manual/haver.texi
trunk/docs/manual/messages.texi
Log:
[EMAIL PROTECTED]: dylan | 2005-03-27 00:17:25 -0500
more stuff is done. yay!
Property changes on: trunk
___________________________________________________________________
Name: svk:merge
- 1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local/trunk:11166
1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local/trunk-merge-10131:11178
27e50396-46e3-0310-8b22-ae223a1f35ce:/local:212
e9404bb1-7af0-0310-a7ff-e22194cd388b:/haver/local:868
edfcd8bd-4ce7-0310-a97e-bb1efd40edf3:/local:238
+ 1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local/trunk:11166
1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local/trunk-merge-10131:11178
27e50396-46e3-0310-8b22-ae223a1f35ce:/local:212
e9404bb1-7af0-0310-a7ff-e22194cd388b:/haver/local:869
edfcd8bd-4ce7-0310-a97e-bb1efd40edf3:/local:238
Modified: trunk/docs/manual/haver.texi
===================================================================
--- trunk/docs/manual/haver.texi 2005-03-27 05:49:37 UTC (rev 658)
+++ trunk/docs/manual/haver.texi 2005-03-27 05:49:38 UTC (rev 659)
@@ -48,6 +48,7 @@
* Introduction::
* Protocol::
* Formats::
+* Concepts::
* Messages::
* Index::
@end menu
Modified: trunk/docs/manual/messages.texi
===================================================================
--- trunk/docs/manual/messages.texi 2005-03-27 05:49:37 UTC (rev 658)
+++ trunk/docs/manual/messages.texi 2005-03-27 05:49:38 UTC (rev 659)
@@ -5,12 +5,22 @@
applications can send and receive.
It also details how error conditions are handled.
[EMAIL PROTECTED] On the notation of messages
A message is composed of a command and zero or more parameters.
Commands are typeset as @cmd{COMMAND} and arguments @param{parameter}.
Sadly, parameters appear in all uppercase in info and plain text format.
+Parameters that are enclosed in square brackets [like this] are optional.
+When a parameter is followed by an ellipsis (@dots{}), it stands for all the
remaining
+parameters, of which there should be one. If enclosed in square brackets.
+
+Unless otherwise noted, all spaces in message definitions should be interpreted
+as Tabs (@pxref{Parsing}).
+
+
@menu
* Connection Messages::
+* Client Passcodes::
@end menu
@@ -27,9 +37,11 @@
@deffn {Client Message} HAVER client
@mustSendOnce
-This event @strong{must} be the first event sent by the client.
-If a different event is received, servers @strong{must}
+This message @strong{must} be the first message sent by the client.
+If a different message is received, servers @strong{must}
immediately terminate the connection.
+This message @strong{must not} be sent be sent more than once
+during the lifetime of the connection.
The parameter @param{client} is the name and version
number of the client software, comparable to the ``User-Agent:''
@@ -37,15 +49,18 @@
is a number from 0 to 9. This format shall not be strictly enforced,
but clients are encouraged to not deviate from it.
-The server will respond to this event
-by sending @cmd{HAVER} and @cmd{WANT IDENT}.
+The server @strong{must} respond to this message
+by sending @cmd{HAVER}, @cmd{HOST}, @cmd{WANT IDENT}.
@end deffn
@c ########################################################
@deffn {Server Message} HAVER server
-This event is sent after the client sends @cmd{HAVER}.
+
+This message @strong{must} be sent after the client sends @cmd{HAVER},
+and @strong{must not} be sent again during the lifetime of the connection.
+
The parameter @param{server} is name and version number of the server,
for example ``Haver::Server::POE/0.07''. This is the same form as
for client names and versions.
@@ -53,16 +68,78 @@
The client can just ignore this.
@end deffn
[EMAIL PROTECTED] {Server Message} HOST hostname
+This message @strong{must} be sent after the client sends @cmd{HAVER},
+and @strong{must not} be sent again during the lifetime of the connection.
+
+The parameter @param{hostname} is the @acronym{DNS} name of the server.
+It @strong{must} resolve back to the server, but a client does no have to
verify this
+(it is a good idea, however).
+
+This value should be remembered, as most clients should use when generating
passcodes
+(@pxref{Client Passcodes}).
[EMAIL PROTECTED] deffn
+
+
@c ########################################################
@deffn {Server Message} WANT cmd [EMAIL PROTECTED]
-
When the server sends this message, the client
[EMAIL PROTECTED] either reply with @cmd{cmd}
[EMAIL PROTECTED] either reply with @cmd{cmd}
or [EMAIL PROTECTED] @param{cmd}''.
+The server @strong{must not} send this message after it sends @strong{ACCEPT}.
If the client sends any other message(s), the server @strong{must} disconnect
the client.
@end deffn
[EMAIL PROTECTED] {Client Message} IDENT [type] ident
+This message @strong{must} only be sent when the server requests it with
@cmd{WANT}.
[EMAIL PROTECTED] is the identifier the client wishes to go by
(@pxref{Identifiers}).
[EMAIL PROTECTED] is optional, and may be one of ``user'' or ``service''.
+If not specified, it defaults to ``user''.
[EMAIL PROTECTED] deffn
+
[EMAIL PROTECTED] {Client Message} AUTH:TYPE name
[EMAIL PROTECTED] {Server Want} {WANT AUTH:TYPE} [EMAIL PROTECTED]
+This message @strong{must} only be sent when the server requests it with
@cmd{WANT}.
+
+Request to use authentication type @param{name}.
+Supported values for @param{name} would have been given by
[EMAIL PROTECTED] of the @cmd{WANT} that requested this message.
+
+Typical values for @param{name} are ``basic'', which is the standard
+authenticate method. In the future there could be extensions, such as
authentication based on
+OpenPGP keys or similiar.
+
+If client issues @[EMAIL PROTECTED]:TYPE} basic}, the server will respond
+with @[EMAIL PROTECTED] AUTH:BASIC}.
[EMAIL PROTECTED] deffn
+
[EMAIL PROTECTED] {Client Message} AUTH:BASIC hashtype token
[EMAIL PROTECTED] {Server Want} {WANT AUTH:BASIC} key [EMAIL PROTECTED]
+Authenticate using the basic scheme.
+
+The parameter @param{hashes} of the @cmd{WANT} is a list of hashing
+functions the sever is aware of. Typically, this list will include ``sha1''.
+However, other hashing algorithms may be available, such as ``sha256''.
+The parameter @param{key} is a unique random string.
+Its value is mostly unimportant.
+
+The algorithm for generating a token is very simple:
+
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+The client must select from @param{hashes} the hashing function
+it prefers most. What it selects will be the value of @param{hashtype}.
+
[EMAIL PROTECTED]
+Using the hashing function @param{hashtype}, let @param{token} equal the
+concatenation of @param{key} with the client's @emph{passcode} (@pxref{Client
Passcodes}).
[EMAIL PROTECTED] enumerate
[EMAIL PROTECTED] deffn
+
[EMAIL PROTECTED] Client Passcodes
[EMAIL PROTECTED]
+Foobar