diff options
Diffstat (limited to '')
-rw-r--r-- | src/lib-sasl/dsasl-client.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/lib-sasl/dsasl-client.h b/src/lib-sasl/dsasl-client.h new file mode 100644 index 0000000..999008d --- /dev/null +++ b/src/lib-sasl/dsasl-client.h @@ -0,0 +1,50 @@ +#ifndef DSASL_CLIENT_H +#define DSASL_CLIENT_H + +struct dsasl_client_settings { + /* authentication ID - must be set with most mechanisms */ + const char *authid; + /* authorization ID (who to log in as, if authentication ID is a + master user) */ + const char *authzid; + /* password - must be set with most mechanisms */ + const char *password; +}; + +/* PLAIN mechanism always exists and can be accessed directly via this. */ +extern const struct dsasl_client_mech dsasl_client_mech_plain; + +const struct dsasl_client_mech *dsasl_client_mech_find(const char *name); +const char *dsasl_client_mech_get_name(const struct dsasl_client_mech *mech); + +struct dsasl_client *dsasl_client_new(const struct dsasl_client_mech *mech, + const struct dsasl_client_settings *set); +void dsasl_client_free(struct dsasl_client **client); + +/* Call for server input. */ +int dsasl_client_input(struct dsasl_client *client, + const unsigned char *input, size_t input_len, + const char **error_r); +/* Call for getting server output. Also used to get the initial SASL response + if supported by the protocol. */ +int dsasl_client_output(struct dsasl_client *client, + const unsigned char **output_r, size_t *output_len_r, + const char **error_r); + +/* Call for setting extra parameters for authentication, these are mechanism + dependent. -1 = error, 0 = not found, 1 = ok + value can be NULL. */ +int dsasl_client_set_parameter(struct dsasl_client *client, + const char *param, const char *value, + const char **error_r) ATTR_NULL(3); + +/* Call for getting extra result information. + -1 = error, 0 = not found, 1 = ok */ +int dsasl_client_get_result(struct dsasl_client *client, + const char *key, const char **value_r, + const char **error_r); + +void dsasl_clients_init(void); +void dsasl_clients_deinit(void); + +#endif |