Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
AUTH_SASL(3)			 S. Varshavchik.		    AUTH_SASL(3)

NAME
     auth_sasl, auth_sasl_ex - SASL implementation

SYNOPSIS
     #include <courierauthsasl.h>

     int      rc=auth_sasl(const char *method,	    const char *initialresponse,
		      char *(*conversation_func)(const char *, void *)),
		      void *callback_arg,   char **authtype_ret,    char **auth-
		      data_ret);

     int     rc=auth_sasl_ex(const char *method,    const char *initialresponse,
			 const char *externalauth,	       char *(*conversa-
			 tion_func)(const char *, void *)),  void *callback_arg,
			 char **authtype_ret, char **authdata_ret);

DESCRIPTION
     auth_sasl is a generic SASL server implementation.  method is the requested
     SASL method. At this time auth_sasl knows how to handle the following  SASL
     methods:

     *	 LOGIN

     *	 PLAIN

     *	 CRAM-MD5

     *	 CRAM-SHA1

     initialresponse  is  a  base64-encoded  initial  response	provided  in the
     client's SASL request.  initialresponse must be NULL if an initial response
     was not included in the client's SASL request.

     conversation_func is the application-implemented SASL conversation callback
     function.	conversation_func receives a base64-encoded SASL prompt, and the
     callback_arg argument to auth_sasl.  conversation_func must return a buffer
     containing the  base64-encoded  reply  from  the  client.	 auth_sasl  will
     free(3)  this  buffer when it's done.  conversation_func should return NULL
     to abort the SASL conversation.

     auth_sasl_ex is a version of auth_sasl that recognizes  the  EXTERNAL  SASL
     method. It takes an extra parameter, externalauth. This parameter should be
     set  to indicate an login that was authenticated via some other means, such
     as, perhaps, an SSL certificate, or  NULL	if  no	externally-authenticated
     identity was established.

     If  method is not EXTERNAL, auth_sasl_ex is identical to auth_sasl, and ex-
     ternalauth is ignored. Otherwise, if method is EXTERNAL and externalauth is
     not NULL, auth_sasl_ex returns AUTHSASL_OK, and sets *authtype_ret and *au-
     thdata_ret accordingly, so that the subsequent invocation of auth_generic()
     returns authentication information for the login  ID  specified  by  exter-
     nalauth.

RETURNS
     If  the SASL conversation successfully completes, auth_sasl or auth_sasl_ex
     initializes *authtype_ret and *authdata_ret. They will be	set  to  a  mal-
     loc(3)-ed	 buffers   that   can	be   directly  passed  as  arguments  to
     auth_generic_meta(3)[1]. It is the application's responsibility to  free(3)
     these buffers when it's done with them.

     auth_sasl	or  auth_sasl_ex  returns AUTHSASL_OK when the SASL conversation
     successfully completes, and *authtype_ret and  *authdata_ret  are	success-
     fully  assembled.	Any other return indicates an error condition. Right now
     two error conditions are defined:

     AUTHSASL_ABORTED
	 The SASL conversation was aborted by the client.

     AUTHSASL_ERROR
	 General error (insufficient memory, or some other reason). Check  errno
	 for any clues.

SEE ALSO
     authlib(3)[2], auth_generic_meta(3)[1].

NOTES
      1. auth_generic_meta(3)
	 https://www.courier-mta.org/authlib/auth_generic.html

      2. authlib(3)
	 https://www.courier-mta.org/authlib/authlib.html

S. Varshavchik. 		   06/18/2026			    AUTH_SASL(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=auth_sasl&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help