-/*
- * password generator
- */
-
-char *
-gen_pass (unsigned int len)
-{
- static const unsigned char autogen[] =
- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890.,";
- unsigned int i;
- Salt salt;
-
- salt.salt = NULL;
- salt.len = 0;
-
- make_salt (&salt, len);
- for (i = 0; i < len; i++)
- salt.salt[i] = autogen[salt.salt[i] % (sizeof (autogen) - 1)];
-
- return ((char *)salt.salt);
-}
-
-#ifdef SLAPD_CLEARTEXT
-char *
-hash_none (const char *pw_in, Salt * salt)
-{
- return (strdup (pw_in));
-}
-#endif
-
-#ifdef SLAPD_CRYPT
-char *
-hash_crypt (const char *pw_in, Salt * salt)
-{
- static const unsigned char crypt64[] =
- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890./";
- char *crypted_pw = NULL;
- Salt lsalt;
-
- if (salt && salt->salt && strlen ((char *)salt->salt) >= 2)
- {
- /* sanity check */
- if (!(isalnum(salt->salt[0]) || salt->salt[0] == '.' || salt->salt[0] == '/'))
- salt->salt[0] = crypt64[salt->salt[0] % (sizeof (crypt64) - 1)];
- if (!(isalnum(salt->salt[1]) || salt->salt[1] == '.' || salt->salt[1] == '/'))
- salt->salt[1] = crypt64[salt->salt[1] % (sizeof (crypt64) - 1)];
-
- crypted_pw = crypt (pw_in, (char *)salt->salt);
- }
- else
- {
- make_salt (&lsalt, 2);
- lsalt.salt[0] = crypt64[lsalt.salt[0] % (sizeof (crypt64) - 1)];
- lsalt.salt[1] = crypt64[lsalt.salt[1] % (sizeof (crypt64) - 1)];
- crypted_pw = crypt (pw_in, (char *)lsalt.salt);
- free (lsalt.salt);
- }
- return (strdup (crypted_pw));
-}
-#endif
-
-char *
-hash_md5 (const char *pw_in, Salt * salt)
-{
- lutil_MD5_CTX MD5context;
- unsigned char MD5digest[16];
-
- lutil_MD5Init (&MD5context);
- lutil_MD5Update (&MD5context,
- (const unsigned char *)pw_in, strlen(pw_in));
- if (salt && salt->salt && salt->len)
- lutil_MD5Update (&MD5context, salt->salt, salt->len);
- lutil_MD5Final (MD5digest, &MD5context);
-
- return (pw_encode (MD5digest, salt, sizeof (MD5digest)));
-}
-
-char *
-hash_sha1 (const char *pw_in, Salt * salt)
-{
- lutil_SHA1_CTX SHA1context;
- unsigned char SHA1digest[20];
-
- lutil_SHA1Init (&SHA1context);
- lutil_SHA1Update (&SHA1context,
- (const unsigned char *)pw_in, strlen(pw_in));
- if (salt && salt->salt && salt->len)
- lutil_SHA1Update (&SHA1context, salt->salt, salt->len);
- lutil_SHA1Final (SHA1digest, &SHA1context);
-
- return (pw_encode (SHA1digest, salt, sizeof (SHA1digest)));