passdb.c revision 0af3274706d337b2930bd34f0377f2cc2dbcd18a
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen/* Copyright (C) 2002-2003 Timo Sirainen */
ba3a54872528db0eae3f36e45592219965b9faf8Timo Sirainenextern struct passdb_module passdb_passwd_file;
ba3a54872528db0eae3f36e45592219965b9faf8Timo Sirainenextern struct passdb_module passdb_checkpassword;
473080c7c0d25ddfdf77e7dfa0ba8f73c6c669d5Timo Sirainenpassdb_credentials_to_str(enum passdb_credentials credentials)
473080c7c0d25ddfdf77e7dfa0ba8f73c6c669d5Timo Sirainen return "PLAIN";
473080c7c0d25ddfdf77e7dfa0ba8f73c6c669d5Timo Sirainen return "CRYPT";
6c07b8ddc5e894feead4d422075b079451721241Timo Sirainen return "HMAC-MD5";
473080c7c0d25ddfdf77e7dfa0ba8f73c6c669d5Timo Sirainen return "DIGEST-MD5";
d43c646d4b84635aa795946555be04a553d5413aTimo Sirainen return "LANMAN";
c7480644202e5451fbed448508ea29a25cffc99cTimo Sirainen return "NTLM";
a4ac325c2802693c6b761e5a8fda961e5d7490eaTimo Sirainen return "RPA";
517d1e7142d57299c733b30423e35e7e1f8d01d6Timo Sirainenvoid passdb_handle_credentials(enum passdb_result result,
473080c7c0d25ddfdf77e7dfa0ba8f73c6c669d5Timo Sirainen if (credentials == PASSDB_CREDENTIALS_CRYPT) {
473080c7c0d25ddfdf77e7dfa0ba8f73c6c669d5Timo Sirainen /* anything goes */
517d1e7142d57299c733b30423e35e7e1f8d01d6Timo Sirainen password = t_strdup_printf("{%s}%s", scheme, password);
517d1e7142d57299c733b30423e35e7e1f8d01d6Timo Sirainen wanted_scheme = passdb_credentials_to_str(credentials);
49e513d090753ccbf95560b2f3a21f081a5b6c51Timo Sirainen auth_request_log_info(auth_request, "password",
49e513d090753ccbf95560b2f3a21f081a5b6c51Timo Sirainen "Requested %s scheme, but we have only %s",
517d1e7142d57299c733b30423e35e7e1f8d01d6Timo Sirainen /* we can generate anything out of plaintext passwords */
517d1e7142d57299c733b30423e35e7e1f8d01d6Timo Sirainen password = password_generate(password, auth_request->user,
517d1e7142d57299c733b30423e35e7e1f8d01d6Timo Sirainen callback(PASSDB_RESULT_OK, password, auth_request);
e9503210d3521a6833ed62dc332fc42ffb0e7a13Timo Sirainenvoid passdb_preinit(struct auth *auth, const char *driver, const char *args)
e9503210d3521a6833ed62dc332fc42ffb0e7a13Timo Sirainen auth_passdb = p_new(auth->pool, struct auth_passdb, 1);
e9503210d3521a6833ed62dc332fc42ffb0e7a13Timo Sirainen auth_passdb->args = p_strdup(auth->pool, args);
e9503210d3521a6833ed62dc332fc42ffb0e7a13Timo Sirainen for (dest = &auth->passdbs; *dest != NULL; dest = &(*dest)->next)
e9503210d3521a6833ed62dc332fc42ffb0e7a13Timo Sirainen auth_passdb->module = auth_module_open(driver);
e9503210d3521a6833ed62dc332fc42ffb0e7a13Timo Sirainen i_fatal("Unknown passdb driver '%s'", driver);
e9503210d3521a6833ed62dc332fc42ffb0e7a13Timo Sirainen auth_passdb->passdb->preinit(auth_passdb->args);
e9503210d3521a6833ed62dc332fc42ffb0e7a13Timo Sirainen i_assert(passdb->passdb->default_pass_scheme != NULL ||
66d2db642fe24d555d113ba463e446b038d476efTimo Sirainen /* blocking passdb - we need an auth server */