3 ** Copyright 2000-2008 Double Precision, Inc. See COPYING for
4 ** distribution information.
7 #include "courier_auth_config.h"
8 #include "courierauthsasl.h"
9 #include "authsaslclient.h"
16 /* Use the SASL_LIST macro to build authsaslclientlist */
18 #define SASL(a,b,c) {a, c},
20 struct authsaslclientlist_info authsaslclientlist
[] = {
26 int auth_sasl_client(const struct authsaslclientinfo
*info
)
33 ||!info
->start_conv_func
34 || !info
->plain_conv_func
) return (AUTHSASL_NOMETHODS
);
36 if ((methodbuf
=malloc(strlen(info
->sasl_funcs
)+1)) == 0)
39 return (AUTHSASL_NOMETHODS
);
42 for (i
=0; authsaslclientlist
[i
].name
; i
++)
46 strcpy(methodbuf
, info
->sasl_funcs
);
47 for (p
=methodbuf
; *p
; p
++)
48 *p
=toupper((int)(unsigned char)*p
);
49 for (p
=methodbuf
; (p
=strtok(p
, " \t\r\n")) != 0; p
=0)
50 if (strcmp(p
, authsaslclientlist
[i
].name
) == 0)
53 return ( (*authsaslclientlist
[i
].func
)(info
));
57 return (AUTHSASL_NOMETHODS
);