They are only used under src/home/, but I want to add tests in test-libcrypt-util.c.
And the functions are almost trivial, so I think it is OK to move them to shared.
/* SPDX-License-Identifier: LGPL-2.1+ */
#include "dns-domain.h"
-#include "errno-util.h"
#include "home-util.h"
#include "libcrypt-util.h"
#include "memory-util.h"
return sd_bus_message_append(m, "s", formatted);
}
-
-int test_password_one(const char *hashed_password, const char *password) {
- struct crypt_data cc = {};
- const char *k;
- bool b;
-
- errno = 0;
- k = crypt_r(password, hashed_password, &cc);
- if (!k) {
- explicit_bzero_safe(&cc, sizeof(cc));
- return errno_or_else(EINVAL);
- }
-
- b = streq(k, hashed_password);
- explicit_bzero_safe(&cc, sizeof(cc));
- return b;
-}
-
-int test_password_many(char **hashed_password, const char *password) {
- char **hpw;
- int r;
-
- STRV_FOREACH(hpw, hashed_password) {
- r = test_password_one(*hpw, password);
- if (r < 0)
- return r;
- if (r > 0)
- return true;
- }
-
- return false;
-}
/* Many of our operations might be slow due to crypto, fsck, recursive chown() and so on. For these
* operations permit a *very* long timeout */
#define HOME_SLOW_BUS_CALL_TIMEOUT_USEC (2*USEC_PER_MINUTE)
-
-int test_password_one(const char *hashed_password, const char *password);
-int test_password_many(char **hashed_password, const char *password);
#include "bus-common-errors.h"
#include "errno-util.h"
#include "home-util.h"
+#include "libcrypt-util.h"
#include "pwquality-util.h"
#include "strv.h"
#include "user-record-pwquality.h"
return !STR_IN_SET(s, "x", "*");
}
+
+int test_password_one(const char *hashed_password, const char *password) {
+ struct crypt_data cc = {};
+ const char *k;
+ bool b;
+
+ errno = 0;
+ k = crypt_r(password, hashed_password, &cc);
+ if (!k) {
+ explicit_bzero_safe(&cc, sizeof(cc));
+ return errno_or_else(EINVAL);
+ }
+
+ b = streq(k, hashed_password);
+ explicit_bzero_safe(&cc, sizeof(cc));
+ return b;
+}
+
+int test_password_many(char **hashed_password, const char *password) {
+ char **hpw;
+ int r;
+
+ STRV_FOREACH(hpw, hashed_password) {
+ r = test_password_one(*hpw, password);
+ if (r < 0)
+ return r;
+ if (r > 0)
+ return true;
+ }
+
+ return false;
+}
return hash_password_full(password, NULL, NULL, ret);
}
bool looks_like_hashed_password(const char *s);
+int test_password_one(const char *hashed_password, const char *password);
+int test_password_many(char **hashed_password, const char *password);