Imported Upstream version 0.63.0
[hcoop/debian/courier-authlib.git] / auth_sasl.html
index 315d5c6..2826e10 100644 (file)
@@ -1,12 +1,12 @@
 <?xml version="1.0"?>
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><title>auth_sasl</title><link rel="stylesheet" href="style.css" type="text/css"/><meta name="generator" content="DocBook XSL Stylesheets V1.72.0"/><link rel="start" href="#auth-sasl" title="auth_sasl"/><link xmlns="" rel="stylesheet" type="text/css" href="manpage.css"/><meta xmlns="" name="MSSmartTagsPreventParsing" content="TRUE"/><link xmlns="" rel="icon" href="icon.gif" type="image/gif"/><!--
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><title>auth_sasl</title><link rel="stylesheet" href="style.css" type="text/css"/><meta name="generator" content="DocBook XSL Stylesheets V1.73.2"/><link rel="start" href="#auth-sasl" title="auth_sasl"/><link xmlns="" rel="stylesheet" type="text/css" href="manpage.css"/><meta xmlns="" name="MSSmartTagsPreventParsing" content="TRUE"/><link xmlns="" rel="icon" href="icon.gif" type="image/gif"/><!--
 
 Copyright 1998 - 2007 Double Precision, Inc.  See COPYING for distribution
 information.
 
---></head><body><div class="refentry" lang="en" xml:lang="en"><a id="auth-sasl" shape="rect"> </a><div class="titlepage"/><div class="refnamediv"><h2>Name</h2><p>auth_sasl — <acronym class="acronym">SASL</acronym> implementation</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="literallayout"><p><br clear="none"/>
+--></head><body><div class="refentry" lang="en" xml:lang="en"><a id="auth-sasl" shape="rect"> </a><div class="titlepage"/><div class="refnamediv"><h2>Name</h2><p>auth_sasl, auth_sasl_ex — <acronym class="acronym">SASL</acronym> implementation</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="literallayout"><p><br clear="none"/>
 #include &lt;courierauthsasl.h&gt;<br clear="none"/>
-</p></div><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0"><tr><td rowspan="1" colspan="1"><code class="funcdef">int rc=<b class="fsfunc">auth_sasl</b>(</code></td><td rowspan="1" colspan="1">const char * </td><td rowspan="1" colspan="1"><var class="pdparam">method</var>, </td></tr><tr><td rowspan="1" colspan="1"> </td><td rowspan="1" colspan="1">const char * </td><td rowspan="1" colspan="1"><var class="pdparam">initialresponse</var>, </td></tr><tr><td rowspan="1" colspan="1"> </td><td rowspan="1" colspan="1">char *(* </td><td rowspan="1" colspan="1"><var class="pdparam">conversation_func</var>, </td></tr><tr><td rowspan="1" colspan="1"> </td><td rowspan="1" colspan="1">void * </td><td rowspan="1" colspan="1"><var class="pdparam">callback_arg</var>, </td></tr><tr><td rowspan="1" colspan="1"> </td><td rowspan="1" colspan="1">char ** </td><td rowspan="1" colspan="1"><var class="pdparam">authtype_ret</var>, </td></tr><tr><td rowspan="1" colspan="1"> </td><td rowspan="1" colspan="1">char ** </td><td rowspan="1" colspan="1"><var class="pdparam">authdata_ret</var><code>)</code>;</td></tr></table></div></div><div class="refsect1" lang="en" xml:lang="en"><a id="id282347" shape="rect"> </a><h2>DESCRIPTION</h2><p>
+</p></div><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0"><tr><td rowspan="1" colspan="1"><code class="funcdef">int rc=<b class="fsfunc">auth_sasl</b>(</code></td><td rowspan="1" colspan="1">const char * </td><td rowspan="1" colspan="1"><var class="pdparam">method</var>, </td></tr><tr><td rowspan="1" colspan="1"> </td><td rowspan="1" colspan="1">const char * </td><td rowspan="1" colspan="1"><var class="pdparam">initialresponse</var>, </td></tr><tr><td rowspan="1" colspan="1"> </td><td rowspan="1" colspan="1">char * </td><td rowspan="1" colspan="1"><var class="pdparam">(*conversation_func)</var><code>(</code>const char *, void *)<code>)</code>, </td></tr><tr><td rowspan="1" colspan="1"> </td><td rowspan="1" colspan="1">void * </td><td rowspan="1" colspan="1"><var class="pdparam">callback_arg</var>, </td></tr><tr><td rowspan="1" colspan="1"> </td><td rowspan="1" colspan="1">char ** </td><td rowspan="1" colspan="1"><var class="pdparam">authtype_ret</var>, </td></tr><tr><td rowspan="1" colspan="1"> </td><td rowspan="1" colspan="1">char ** </td><td rowspan="1" colspan="1"><var class="pdparam">authdata_ret</var><code>)</code>;</td></tr></table></div><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0"><tr><td rowspan="1" colspan="1"><code class="funcdef">int rc=<b class="fsfunc">auth_sasl_ex</b>(</code></td><td rowspan="1" colspan="1">const char * </td><td rowspan="1" colspan="1"><var class="pdparam">method</var>, </td></tr><tr><td rowspan="1" colspan="1"> </td><td rowspan="1" colspan="1">const char * </td><td rowspan="1" colspan="1"><var class="pdparam">initialresponse</var>, </td></tr><tr><td rowspan="1" colspan="1"> </td><td rowspan="1" colspan="1">const char * </td><td rowspan="1" colspan="1"><var class="pdparam">externalauth</var>, </td></tr><tr><td rowspan="1" colspan="1"> </td><td rowspan="1" colspan="1">char * </td><td rowspan="1" colspan="1"><var class="pdparam">(*conversation_func)</var><code>(</code>const char *, void *)<code>)</code>, </td></tr><tr><td rowspan="1" colspan="1"> </td><td rowspan="1" colspan="1">void * </td><td rowspan="1" colspan="1"><var class="pdparam">callback_arg</var>, </td></tr><tr><td rowspan="1" colspan="1"> </td><td rowspan="1" colspan="1">char ** </td><td rowspan="1" colspan="1"><var class="pdparam">authtype_ret</var>, </td></tr><tr><td rowspan="1" colspan="1"> </td><td rowspan="1" colspan="1">char ** </td><td rowspan="1" colspan="1"><var class="pdparam">authdata_ret</var><code>)</code>;</td></tr></table></div></div><div class="refsect1" lang="en" xml:lang="en"><a id="id306513" shape="rect"> </a><h2>DESCRIPTION</h2><p>
 <code class="function">auth_sasl</code>
 is a generic <acronym class="acronym">SASL</acronym> server implementation.
 <em class="parameter"><code>method</code></em> is the requested <acronym class="acronym">SASL</acronym>
@@ -35,19 +35,38 @@ will
 this buffer when it's done.
 <em class="parameter"><code>conversation_func</code></em>
 should return <code class="literal">NULL</code>
-to abort the <acronym class="acronym">SASL</acronym> conversation.</p></div><div class="refsect1" lang="en" xml:lang="en"><a id="id282718" shape="rect"> </a><h2>RETURNS</h2><p>
+to abort the <acronym class="acronym">SASL</acronym> conversation.</p><p>
+<code class="function">auth_sasl_ex</code> is a version of
+<code class="function">auth_sasl</code> that recognizes the <code class="literal">EXTERNAL</code>
+<acronym class="acronym">SASL</acronym> method. It takes an extra parameter,
+<em class="parameter"><code>externalauth</code></em>. This parameter should be set to indicate
+an login that was authenticated via some other means, such as, perhaps,
+an <acronym class="acronym">SSL</acronym> certificate, or <code class="literal">NULL</code> if no
+externally-authenticated identity was established.</p><p>
+If <em class="parameter"><code>method</code></em> is not <code class="literal">EXTERNAL</code>,
+<code class="function">auth_sasl_ex</code> is identical to
+<code class="function">auth_sasl</code>, and <em class="parameter"><code>externalauth</code></em> is
+ignored. Otherwise, if <em class="parameter"><code>method</code></em> is
+<code class="literal">EXTERNAL</code> and <em class="parameter"><code>externalauth</code></em> is not
+<code class="literal">NULL</code>, <code class="function">auth_sasl_ex</code> returns
+<code class="literal">AUTHSASL_OK</code>, and sets
+<em class="parameter"><code>*authtype_ret</code></em> and
+<em class="parameter"><code>*authdata_ret</code></em> accordingly, so that the subsequent
+invocation of <code class="function">auth_generic</code>() returns authentication
+information for the login ID specified by
+<em class="parameter"><code>externalauth</code></em>.</p></div><div class="refsect1" lang="en" xml:lang="en"><a id="id306832" shape="rect"> </a><h2>RETURNS</h2><p>
 If the <acronym class="acronym">SASL</acronym> conversation succesfully completes,
-<code class="function">auth_sasl</code>
+<code class="function">auth_sasl</code> or <code class="function">auth_sasl_ex</code>
 initializes <em class="parameter"><code>*authtype_ret</code></em> and
 <em class="parameter"><code>*authdata_ret</code></em>.
 They will be set to a
 <span class="citerefentry"><span class="refentrytitle">malloc</span>(3)</span>-ed
 buffers that can be directly passed as arguments to
-<a href="auth_generic.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">auth_generic</span>(3)</span></a>.
+<a class="ulink" href="auth_generic.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">auth_generic</span>(3)</span></a>.
 It is the application's responsibility to
 <span class="citerefentry"><span class="refentrytitle">free</span>(3)</span>
 these buffers when it's done with them.</p><p>
-<code class="function">auth_sasl</code>
+<code class="function">auth_sasl</code> or <code class="function">auth_sasl_ex</code>
 returns
 <code class="literal">AUTHSASL_OK</code> when the
 <acronym class="acronym">SASL</acronym> conversation succesfully completes, and
@@ -57,7 +76,7 @@ Any other return indicates an error condition.
 Right now two error conditions are defined:</p><div class="variablelist"><dl><dt><span class="term"><code class="literal">AUTHSASL_ABORTED</code></span></dt><dd><p>
 The <acronym class="acronym">SASL</acronym> conversation was aborted by the client.</p></dd><dt><span class="term"><code class="literal">AUTHSASL_ERROR</code></span></dt><dd><p>
 General error (insufficient memory, or some other reason).
-Check <code class="varname">errno</code> for any clues.</p></dd></dl></div></div><div class="refsect1" lang="en" xml:lang="en"><a id="id282008" shape="rect"> </a><h2>SEE ALSO</h2><p>
-<a href="authlib.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">authlib</span>(3)</span></a>,
+Check <code class="varname">errno</code> for any clues.</p></dd></dl></div></div><div class="refsect1" lang="en" xml:lang="en"><a id="id351169" shape="rect"> </a><h2>SEE ALSO</h2><p>
+<a class="ulink" href="authlib.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">authlib</span>(3)</span></a>,
  
-<a href="auth_generic.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">auth_generic</span>(3)</span></a>.</p></div></div></body></html>
+<a class="ulink" href="auth_generic.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">auth_generic</span>(3)</span></a>.</p></div></div></body></html>