encryption_rounds = rounds;
}
+static void
+crypt_generate_des(const char *plaintext, const char *user ATTR_UNUSED,
+ const unsigned char **raw_password_r, size_t *size_r)
+{
+#define CRYPT_SALT_LEN 2
+ const char *password, *salt;
+
+ salt = password_generate_salt(CRYPT_SALT_LEN);
+ password = t_strdup(mycrypt(plaintext, salt));
+ *raw_password_r = (const unsigned char *)password;
+ *size_r = strlen(password);
+}
+
static void
crypt_generate_blowfisch(const char *plaintext, const char *user ATTR_UNUSED,
const unsigned char **raw_password_r, size_t *size_r)
const char *salt;
const char *expected;
} sample[] = {
+ { "08/15!test~4711", "JB", "JBOZ0DgmtucwE" },
{ "08/15!test~4711", "$2a$04$0123456789abcdefABCDEF",
"$2a$04$0123456789abcdefABCDE.N.drYX5yIAL1LkTaaZotW3yI0hQhZru" },
{ "08/15!test~4711", "$5$rounds=1000$0123456789abcdef",
/* keep in sync with the sample struct above */
static const struct password_scheme crypt_schemes[] = {
+ { "CRYPT", PW_ENCODING_NONE, 0, crypt_verify,
+ crypt_generate_des },
{ "BLF-CRYPT", PW_ENCODING_NONE, 0, crypt_verify,
crypt_generate_blowfisch },
{ "SHA256-CRYPT", PW_ENCODING_NONE, 0, crypt_verify,
return strcmp(crypted, password) == 0 ? 1 : 0;
}
-static void
-crypt_generate(const char *plaintext, const char *user ATTR_UNUSED,
- const unsigned char **raw_password_r, size_t *size_r)
-{
-#define CRYPT_SALT_LEN 2
- const char *password, *salt;
-
- salt = password_generate_salt(CRYPT_SALT_LEN);
- password = t_strdup(mycrypt(plaintext, salt));
- *raw_password_r = (const unsigned char *)password;
- *size_r = strlen(password);
-}
-
static int
md5_verify(const char *plaintext, const char *user,
const unsigned char *raw_password, size_t size, const char **error_r)
}
static const struct password_scheme builtin_schemes[] = {
- { "CRYPT", PW_ENCODING_NONE, 0, crypt_verify, crypt_generate },
{ "MD5", PW_ENCODING_NONE, 0, md5_verify, md5_crypt_generate },
{ "MD5-CRYPT", PW_ENCODING_NONE, 0,
md5_crypt_verify, md5_crypt_generate },