summaryrefslogtreecommitdiffstats
path: root/src/basic/user-util.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2019-11-13 23:13:42 +0100
committerLennart Poettering <lennart@poettering.net>2020-01-15 15:26:27 +0100
commit42f3b2f97510ab364717154c01a03f5ddd9541a1 (patch)
tree06849d5179287878f3e53890573fbec197cedd0b /src/basic/user-util.c
parentnss-util: add macros for generating getpwent()/getgrent() prototypes (diff)
downloadsystemd-42f3b2f97510ab364717154c01a03f5ddd9541a1.tar.xz
systemd-42f3b2f97510ab364717154c01a03f5ddd9541a1.zip
shared: split out crypt() specific helpers into its own .c/.h in src/shared/
This way we can use libxcrypt specific functionality such as crypt_gensalt() and thus take benefit of the newer algorithms libxcrypt implements. (Also adds support for a new env var $SYSTEMD_CRYPT_PREFIX which may be used to select the hash algorithm to use for libxcrypt.) Also, let's move the weird crypt.h inclusion into libcrypt.h so that there's a single place for it.
Diffstat (limited to 'src/basic/user-util.c')
-rw-r--r--src/basic/user-util.c37
1 files changed, 0 insertions, 37 deletions
diff --git a/src/basic/user-util.c b/src/basic/user-util.c
index 571578c4e4..68c6dd0da7 100644
--- a/src/basic/user-util.c
+++ b/src/basic/user-util.c
@@ -945,40 +945,3 @@ int fgetsgent_sane(FILE *stream, struct sgrp **sg) {
return !!s;
}
#endif
-
-int make_salt(char **ret) {
- static const char table[] =
- "abcdefghijklmnopqrstuvwxyz"
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "0123456789"
- "./";
-
- uint8_t raw[16];
- char *salt, *j;
- size_t i;
- int r;
-
- /* This is a bit like crypt_gensalt_ra(), but doesn't require libcrypt, and doesn't do anything but
- * SHA512, i.e. is legacy-free and minimizes our deps. */
-
- assert_cc(sizeof(table) == 64U + 1U);
-
- /* Insist on the best randomness by setting RANDOM_BLOCK, this is about keeping passwords secret after all. */
- r = genuine_random_bytes(raw, sizeof(raw), RANDOM_BLOCK);
- if (r < 0)
- return r;
-
- salt = new(char, 3+sizeof(raw)+1+1);
- if (!salt)
- return -ENOMEM;
-
- /* We only bother with SHA512 hashed passwords, the rest is legacy, and we don't do legacy. */
- j = stpcpy(salt, "$6$");
- for (i = 0; i < sizeof(raw); i++)
- j[i] = table[raw[i] & 63];
- j[i++] = '$';
- j[i] = 0;
-
- *ret = salt;
- return 0;
-}