@settitle Emacs SASL Library @value{VERSION}
+@ifinfo
+This file describes the Emacs SASL library.
+
+Copyright (C) 2000 Daiki Ueno.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts. A copy of the license is included in the section entitled "GNU
+Free Documentation License".
+@end ifinfo
+
+@tex
+
+@titlepage
+@title Emacs SASL Library
+
+@author by Daiki Ueno
+@page
+
+@vskip 0pt plus 1filll
+Copyright @copyright{} 2000 Daiki Ueno.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts. A copy of the license is included in the section entitled "GNU
+Free Documentation License".
+@end titlepage
+@page
+
+@end tex
+
@node Top
@top Emacs SASL
This manual describes the Emacs SASL library.
-This library provides a common interface to share several authentication
-mechanisms between applications using different protocols.
-
+A common interface to share several authentication mechanisms between
+applications using different protocols.
@menu
-* Overview::
-* Mechanisms::
-* Clients::
-* Steps::
-* Backend Drivers::
+* Overview:: What Emacs SASL library is.
+* How to use:: Adding authentication support to your applications.
+* Data types::
+* Backend drivers:: Writing your own drivers.
* Index::
* Function Index::
* Variable Index::
The toplevel interface of this library is inspired by Java @sc{sasl}
Application Program Interface. It defines an abstraction over a series
-of authentication mechanism drivers.
+of authentication mechanism drivers (@ref{Backend drivers}).
+
+Backend drivers are designed to be close as possible to the
+authentication mechanism. You can access the additional configuration
+information anywhere from the implementation.
+
+@node How to use
+@chapter How to use
+
+(Not yet written).
+
+To use Emacs SASL library, please evaluate following expression at the
+beginning of your application program.
+
+@lisp
+(require 'sasl)
+@end lisp
+
+If you want to check existence of sasl.el at runtime, instead you
+can list autoload settings for functions you want.
+
+@node Data types
+@chapter Data types
There are three data types to be used for carrying a negotiated
security layer---a mechanism, a client parameter and an authentication
step.
+@menu
+* Mechanisms::
+* Clients::
+* Steps::
+@end menu
+
@node Mechanisms
-@chapter Mechanisms
+@section Mechanisms
A mechanism (@code{sasl-mechanism} object) is a schema of the @sc{sasl}
authentication mechanism driver.
Retrieve an apropriate mechanism.
This function compares MECHANISMS and @code{sasl-mechanisms} then
-returns apropriate @sc{sasl} mechanism object.
+returns apropriate @code{sasl-mechanism} object.
@example
(let ((sasl-mechanisms '("CRAM-MD5" "DIGEST-MD5")))
@end defun
If you want to write an authentication mechanism driver (@ref{Backend
-Drivers}), use @code{sasl-make-mechanism} and modify
+drivers}), use @code{sasl-make-mechanism} and modify
@code{sasl-mechanisms} and @code{sasl-mechanism-alist} correctly.
@defun sasl-make-mechanism name steps
-Allocate a mechanism.
+Allocate a @code{sasl-mechanism} object.
This function takes two parameters---name of the mechanism, and a list
of authentication functions.
@end defun
@node Clients
-@chapter Clients
+@section Clients
A client (@code{sasl-client} object) initialized with four
parameters---a mechanism, a user name, name of the service and name of
the server.
@defun sasl-make-client mechanism name service server
-Prepare a client parameter object.
+Prepare a @code{sasl-client} object.
@end defun
@defun sasl-client-mechanism client
-Return the authentication mechanism driver of CLIENT.
+Return the mechanism (@code{sasl-mechanism} object) of client.
@end defun
@defun sasl-client-name client
-Return the authorization name of CLIENT, a string.
+Return the authorization name of client, a string.
@end defun
@defun sasl-client-service client
-Return the service name of CLIENT, a string.
+Return the service name of client, a string.
@end defun
@defun sasl-client-server client
-Return the server name of CLIENT, a string.
+Return the server name of client, a string.
@end defun
If you want to specify additional configuration properties, please use
@code{sasl-client-set-property}.
@defun sasl-client-set-property client property value
-Add the given property/value to CLIENT.
+Add the given property/value to client.
@end defun
@defun sasl-client-property client property
-Return the value of the PROPERTY of CLIENT.
+Return the value of the property of client.
@end defun
@defun sasl-client-set-properties client plist
-Destructively set the properties of CLIENT.
-The second argument PLIST is the new property list.
+Destructively set the properties of client.
+The second argument is the new property list.
@end defun
@defun sasl-client-properties client
-Return the whole property list of CLIENT configuration.
+Return the whole property list of client configuration.
@end defun
@node Steps
-@chapter Steps
+@section Steps
A step (@code{sasl-step} object) is an abstraction of authentication
"step" which holds the response value and the next entry point for the
At the first time STEP should be set to nil.
@end defun
-@node Backend Drivers
-@chapter Backend Drivers
+@node Backend drivers
+@chapter Backend drivers
(Not yet written).