authsasl.h
上传用户:s81996212
上传日期:2007-01-04
资源大小:722k
文件大小:3k
源码类别:

WEB邮件程序

开发平台:

C/C++

  1. #ifndef authsasl_h
  2. #define authsasl_h
  3. /*
  4. ** Copyright 1998 - 1999 Double Precision, Inc.  See COPYING for
  5. ** distribution information.
  6. */
  7. #if HAVE_CONFIG_H
  8. #include "config.h"
  9. #endif
  10. #include <sys/types.h>
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14. static const char authsasl_h_rcsid[]="$Id: authsasl.h,v 1.1 1999/12/13 03:34:28 mrsam Exp $";
  15. /*
  16. These family of functions are used to implement the SASL interface
  17. on top of authlib.  It is mainly used by the authentication user
  18. process to build the authentication request data for authmod()
  19. based upon the SASL challenge/response interaction.
  20. */
  21. /*
  22. ** The authsasl_info is built dynamically by configure, it lists the supported
  23. ** SASL methods.  Each method is implemented by a function that's prototyped
  24. ** like this:
  25. **
  26. **  int authsasl_function(const char *method, const char *initresponse,
  27. **      char *(*getresp)(const char *),
  28. **
  29. ** char **authtype,
  30. ** char **authdata)
  31. **
  32. ** Normally, there's no need to call the appropriate function directly, as
  33. ** authsasl() automatically searches this array, and finds one.
  34. **
  35. */
  36. struct authsasl_info {
  37. const char *sasl_method; /* In uppercase */
  38. int (*sasl_func)(const char *method, const char *initresponse,
  39. char *(*getresp)(const char *),
  40. char **,
  41. char **);
  42. } ;
  43. extern struct authsasl_info authsasl_list[];
  44. /*
  45. ** authsasl searched for the right method, and calls the appropriate
  46. ** sasl function.  authsasl received the following arguments:
  47. **
  48. ** initresponse -- initial response for the authentication request,
  49. ** if provided.  If provided, the actual response MUST BE PROVIDED
  50. ** in initresponse using base64 encoding!!!
  51. **
  52. ** sasl_func -- the callback function which is used to carry out the
  53. ** SASL conversation.  The function receives a single argument, the
  54. ** base64-encoded challenge.  The callback function must return
  55. ** a malloced pointer to the base64-encoded response, or NULL to abort
  56. ** SASL.
  57. **
  58. ** authsasl returns two values, provided via call by reference:
  59. ** the authtype and authdata argument to authmod.
  60. */
  61. int authsasl(const char *, /* Method */
  62. const char *, /* Initial response - base64encoded */
  63. char *(*)(const char *), /* Callback conversation functions */
  64. char **, /* Returned - AUTHTYPE */
  65. char **); /* Returned - AUTHDATA */
  66. /* Some convenience functions */
  67. char *authsasl_tobase64(const char *, int);
  68. int authsasl_frombase64(char *);
  69. /* Return values from authsasl */
  70. #define AUTHSASL_OK 0
  71. #define AUTHSASL_ERROR -1 /*
  72. ** System error, usually malloc failure,
  73. ** authsasl reports the error to stderr.
  74. */
  75. #define AUTHSASL_ABORTED -2 /*
  76. ** SASL exchange aborted. authsasl does NOT
  77. ** report any errors.
  78. */
  79. #ifdef __cplusplus
  80. }
  81. #endif
  82. #endif