1 #ifndef SASL_SERVER_H
2 #define SASL_SERVER_H
3 
4 struct client;
5 
6 enum sasl_server_reply {
7 	SASL_SERVER_REPLY_SUCCESS,
8 	SASL_SERVER_REPLY_AUTH_FAILED,
9 	SASL_SERVER_REPLY_AUTH_ABORTED,
10 	SASL_SERVER_REPLY_MASTER_FAILED,
11 	SASL_SERVER_REPLY_CONTINUE
12 };
13 
14 typedef void sasl_server_callback_t(struct client *client,
15 				    enum sasl_server_reply reply,
16 				    const char *data, const char *const *args);
17 
18 const struct auth_mech_desc *
19 sasl_server_get_advertised_mechs(struct client *client, unsigned int *count_r);
20 const struct auth_mech_desc *
21 sasl_server_find_available_mech(struct client *client, const char *name);
22 
23 void sasl_server_auth_begin(struct client *client,
24 			    const char *service, const char *mech_name,
25 			    bool private, const char *initial_resp_base64,
26 			    sasl_server_callback_t *callback);
27 void sasl_server_auth_failed(struct client *client, const char *reason,
28 	const char *code) ATTR_NULL(3);
29 void sasl_server_auth_abort(struct client *client);
30 
31 #endif
32