Merge branch 'debian'
[hcoop/debian/courier-authlib.git] / auth_sasl.3
... / ...
CommitLineData
1'\" t
2.\" <!-- Copyright 2004-2008 Double Precision, Inc. See COPYING for -->
3.\" <!-- distribution information. -->
4.\" Title: auth_sasl
5.\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
6.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
7.\" Date: 09/08/2017
8.\" Manual: Double Precision, Inc.
9.\" Source: Double Precision, Inc.
10.\" Language: English
11.\"
12.TH "AUTH_SASL" "3" "09/08/2017" "Double Precision, Inc." "Double Precision, Inc."
13.\" -----------------------------------------------------------------
14.\" * Define some portability stuff
15.\" -----------------------------------------------------------------
16.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17.\" http://bugs.debian.org/507673
18.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
19.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20.ie \n(.g .ds Aq \(aq
21.el .ds Aq '
22.\" -----------------------------------------------------------------
23.\" * set default formatting
24.\" -----------------------------------------------------------------
25.\" disable hyphenation
26.nh
27.\" disable justification (adjust text to left margin only)
28.ad l
29.\" -----------------------------------------------------------------
30.\" * MAIN CONTENT STARTS HERE *
31.\" -----------------------------------------------------------------
32.SH "NAME"
33auth_sasl, auth_sasl_ex \- SASL implementation
34.SH "SYNOPSIS"
35.sp
36.nf
37#include <courierauthsasl\&.h>
38.fi
39.HP \w'int\ rc=auth_sasl('u
40.BI "int rc=auth_sasl(const\ char\ *" "method" ", const\ char\ *" "initialresponse" ", char\ *" "(*conversation_func)" "(const\ char\ *,\ void\ *)), void\ *" "callback_arg" ", char\ **" "authtype_ret" ", char\ **" "authdata_ret" ");"
41.HP \w'int\ rc=auth_sasl_ex('u
42.BI "int rc=auth_sasl_ex(const\ char\ *" "method" ", const\ char\ *" "initialresponse" ", const\ char\ *" "externalauth" ", char\ *" "(*conversation_func)" "(const\ char\ *,\ void\ *)), void\ *" "callback_arg" ", char\ **" "authtype_ret" ", char\ **" "authdata_ret" ");"
43.SH "DESCRIPTION"
44.PP
45\fBauth_sasl\fR
46is a generic
47SASL
48server implementation\&.
49\fImethod\fR
50is the requested
51SASL
52method\&. At this time
53\fBauth_sasl\fR
54knows how to handle the following SASL methods:
55.sp
56.RS 4
57.ie n \{\
58\h'-04'\(bu\h'+03'\c
59.\}
60.el \{\
61.sp -1
62.IP \(bu 2.3
63.\}
64LOGIN
65.RE
66.sp
67.RS 4
68.ie n \{\
69\h'-04'\(bu\h'+03'\c
70.\}
71.el \{\
72.sp -1
73.IP \(bu 2.3
74.\}
75PLAIN
76.RE
77.sp
78.RS 4
79.ie n \{\
80\h'-04'\(bu\h'+03'\c
81.\}
82.el \{\
83.sp -1
84.IP \(bu 2.3
85.\}
86CRAM\-MD5
87.RE
88.sp
89.RS 4
90.ie n \{\
91\h'-04'\(bu\h'+03'\c
92.\}
93.el \{\
94.sp -1
95.IP \(bu 2.3
96.\}
97CRAM\-SHA1
98.RE
99.PP
100\fIinitialresponse\fR
101is a base64\-encoded initial response provided in the client\*(Aqs
102SASL
103request\&.
104\fIinitialresponse\fR
105must be
106NULL
107if an initial response was not included in the client\*(Aqs
108SASL
109request\&.
110.PP
111\fIconversation_func\fR
112is the application\-implemented
113SASL
114conversation callback function\&.
115\fIconversation_func\fR
116receives a base64\-encoded
117SASL
118prompt, and the
119\fIcallback_arg\fR
120argument to
121\fBauth_sasl\fR\&.
122\fIconversation_func\fR
123must return a buffer containing the base64\-encoded reply from the client\&.
124\fBauth_sasl\fR
125will
126\fBfree\fR(3)
127this buffer when it\*(Aqs done\&.
128\fIconversation_func\fR
129should return
130NULL
131to abort the
132SASL
133conversation\&.
134.PP
135\fBauth_sasl_ex\fR
136is a version of
137\fBauth_sasl\fR
138that recognizes the
139EXTERNAL
140SASL
141method\&. It takes an extra parameter,
142\fIexternalauth\fR\&. This parameter should be set to indicate an login that was authenticated via some other means, such as, perhaps, an
143SSL
144certificate, or
145NULL
146if no externally\-authenticated identity was established\&.
147.PP
148If
149\fImethod\fR
150is not
151EXTERNAL,
152\fBauth_sasl_ex\fR
153is identical to
154\fBauth_sasl\fR, and
155\fIexternalauth\fR
156is ignored\&. Otherwise, if
157\fImethod\fR
158is
159EXTERNAL
160and
161\fIexternalauth\fR
162is not
163NULL,
164\fBauth_sasl_ex\fR
165returns
166AUTHSASL_OK, and sets
167\fI*authtype_ret\fR
168and
169\fI*authdata_ret\fR
170accordingly, so that the subsequent invocation of
171\fBauth_generic\fR() returns authentication information for the login ID specified by
172\fIexternalauth\fR\&.
173.SH "RETURNS"
174.PP
175If the
176SASL
177conversation succesfully completes,
178\fBauth_sasl\fR
179or
180\fBauth_sasl_ex\fR
181initializes
182\fI*authtype_ret\fR
183and
184\fI*authdata_ret\fR\&. They will be set to a
185\fBmalloc\fR(3)\-ed buffers that can be directly passed as arguments to
186\m[blue]\fB\fBauth_generic\fR(3)\fR\m[]\&\s-2\u[1]\d\s+2\&. It is the application\*(Aqs responsibility to
187\fBfree\fR(3)
188these buffers when it\*(Aqs done with them\&.
189.PP
190\fBauth_sasl\fR
191or
192\fBauth_sasl_ex\fR
193returns
194AUTHSASL_OK
195when the
196SASL
197conversation succesfully completes, and
198\fI*authtype_ret\fR
199and
200\fI*authdata_ret\fR
201are succesfully assembled\&. Any other return indicates an error condition\&. Right now two error conditions are defined:
202.PP
203AUTHSASL_ABORTED
204.RS 4
205The
206SASL
207conversation was aborted by the client\&.
208.RE
209.PP
210AUTHSASL_ERROR
211.RS 4
212General error (insufficient memory, or some other reason)\&. Check
213\fIerrno\fR
214for any clues\&.
215.RE
216.SH "SEE ALSO"
217.PP
218\m[blue]\fB\fBauthlib\fR(3)\fR\m[]\&\s-2\u[2]\d\s+2,
219\m[blue]\fB\fBauth_generic\fR(3)\fR\m[]\&\s-2\u[1]\d\s+2\&.
220.SH "NOTES"
221.IP " 1." 4
222\fBauth_generic\fR(3)
223.RS 4
224\%http://www.courier-mta.org/authlib/auth_generic.html
225.RE
226.IP " 2." 4
227\fBauthlib\fR(3)
228.RS 4
229\%http://www.courier-mta.org/authlib/authlib.html
230.RE