| Server IP : 176.32.38.42 / Your IP : 216.73.216.200 Web Server : LiteSpeed System : Linux ha006.mymail.zone 4.18.0-553.51.1.lve.1.el8.x86_64 #1 SMP Wed May 14 14:34:57 UTC 2025 x86_64 User : s1225329 ( 1835) PHP Version : 7.4.33 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /usr/include/dovecot/ |
Upload File : |
#ifndef MECH_H
#define MECH_H
#include "auth-client-interface.h"
struct auth_settings;
struct auth_request;
#include "auth-request.h"
#include "auth-request-handler.h"
/* Used only for string sanitization. */
#define MAX_MECH_NAME_LEN 64
enum mech_passdb_need {
/* Mechanism doesn't need a passdb at all */
MECH_PASSDB_NEED_NOTHING = 0,
/* Mechanism just needs to verify a given plaintext password */
MECH_PASSDB_NEED_VERIFY_PLAIN,
/* Mechanism needs to verify a given challenge+response combination,
i.e. there is only a single response from client.
(Currently implemented the same as _LOOKUP_CREDENTIALS) */
MECH_PASSDB_NEED_VERIFY_RESPONSE,
/* Mechanism needs to look up credentials with appropriate scheme */
MECH_PASSDB_NEED_LOOKUP_CREDENTIALS,
/* Mechanism needs to look up credentials and also modify them */
MECH_PASSDB_NEED_SET_CREDENTIALS
};
struct mech_module {
const char *mech_name;
enum mech_security_flags flags;
enum mech_passdb_need passdb_need;
struct auth_request *(*auth_new)(void);
void (*auth_initial)(struct auth_request *request,
const unsigned char *data, size_t data_size);
void (*auth_continue)(struct auth_request *request,
const unsigned char *data, size_t data_size);
void (*auth_free)(struct auth_request *request);
};
struct mech_module_list {
struct mech_module_list *next;
struct mech_module module;
};
struct mechanisms_register {
pool_t pool;
const struct auth_settings *set;
struct mech_module_list *modules;
buffer_t *handshake;
};
extern const struct mech_module mech_dovecot_token;
void mech_register_module(const struct mech_module *module);
void mech_unregister_module(const struct mech_module *module);
const struct mech_module *mech_module_find(const char *name);
void mech_generic_auth_initial(struct auth_request *request,
const unsigned char *data, size_t data_size);
void mech_generic_auth_free(struct auth_request *request);
struct mechanisms_register *
mech_register_init(const struct auth_settings *set);
void mech_register_deinit(struct mechanisms_register **reg);
const struct mech_module *
mech_register_find(const struct mechanisms_register *reg, const char *name);
void mech_init(const struct auth_settings *set);
void mech_deinit(const struct auth_settings *set);
#endif