#include "auth-common.h"
#include "passdb.h"
#include "passdb-template.h"
+#include "password-scheme.h"
struct static_passdb_module {
struct passdb_module module;
};
static enum passdb_result
-static_save_fields(struct auth_request *request, const char **password_r)
+static_save_fields(struct auth_request *request, const char **password_r, const char **scheme_r)
{
struct static_passdb_module *module =
(struct static_passdb_module *)request->passdb->passdb;
auth_request_log_info(request, AUTH_SUBSYS_DB,
"No password returned (and no nopassword)");
*password_r = NULL;
+ *scheme_r = NULL;
return PASSDB_RESULT_PASSWORD_MISMATCH;
}
+
+ *scheme_r = password_get_scheme(password_r);
+
+ if (*scheme_r == NULL)
+ *scheme_r = STATIC_PASS_SCHEME;
+
+ auth_request_set_field(request, "password",
+ *password_r, *scheme_r);
+
return PASSDB_RESULT_OK;
}
{
enum passdb_result result;
const char *static_password;
+ const char *static_scheme;
+
int ret;
- result = static_save_fields(request, &static_password);
+ result = static_save_fields(request, &static_password, &static_scheme);
if (result != PASSDB_RESULT_OK) {
callback(result, request);
return;
}
ret = auth_request_password_verify(request, password, static_password,
- STATIC_PASS_SCHEME, AUTH_SUBSYS_DB);
+ static_scheme, AUTH_SUBSYS_DB);
if (ret <= 0) {
callback(PASSDB_RESULT_PASSWORD_MISMATCH, request);
return;
{
enum passdb_result result;
const char *static_password;
+ const char *static_scheme;
- result = static_save_fields(request, &static_password);
+ result = static_save_fields(request, &static_password, &static_scheme);
passdb_handle_credentials(result, static_password,
- STATIC_PASS_SCHEME, callback, request);
+ static_scheme, callback, request);
}
static struct passdb_module *