summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2021-11-02 23:03:17 +0100
committerLennart Poettering <lennart@poettering.net>2021-11-13 00:22:16 +0100
commit6b945d7031f34a1652d2e6808bfffbd3761e642e (patch)
tree8ca620d74d6f27a6f016d1f53e4c513bc72aa6ff
parent0881991c3236a894378167ea9006dbf15a56ba58 (diff)
downloadsystemd-6b945d7031f34a1652d2e6808bfffbd3761e642e.tar.gz
homework: split out password cache logic into its own .c/.h file
Preparation for extending it further down the line.
-rw-r--r--src/home/homework-password-cache.c11
-rw-r--r--src/home/homework-password-cache.h21
-rw-r--r--src/home/homework.c8
-rw-r--r--src/home/homework.h18
-rw-r--r--src/home/meson.build2
5 files changed, 35 insertions, 25 deletions
diff --git a/src/home/homework-password-cache.c b/src/home/homework-password-cache.c
new file mode 100644
index 0000000000..87d90c9184
--- /dev/null
+++ b/src/home/homework-password-cache.c
@@ -0,0 +1,11 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#include "homework-password-cache.h"
+
+void password_cache_free(PasswordCache *cache) {
+ if (!cache)
+ return;
+
+ cache->pkcs11_passwords = strv_free_erase(cache->pkcs11_passwords);
+ cache->fido2_passwords = strv_free_erase(cache->fido2_passwords);
+}
diff --git a/src/home/homework-password-cache.h b/src/home/homework-password-cache.h
new file mode 100644
index 0000000000..6b4de15724
--- /dev/null
+++ b/src/home/homework-password-cache.h
@@ -0,0 +1,21 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#pragma once
+
+#include "strv.h"
+#include "user-record.h"
+
+typedef struct PasswordCache {
+ /* Decoding passwords from security tokens is expensive and typically requires user interaction,
+ * hence cache any we already figured out. */
+ char **pkcs11_passwords;
+ char **fido2_passwords;
+} PasswordCache;
+
+void password_cache_free(PasswordCache *cache);
+
+static inline bool password_cache_contains(const PasswordCache *cache, const char *p) {
+ if (!cache)
+ return false;
+
+ return strv_contains(cache->pkcs11_passwords, p) || strv_contains(cache->fido2_passwords, p);
+}
diff --git a/src/home/homework.c b/src/home/homework.c
index c9b1734492..65066a5156 100644
--- a/src/home/homework.c
+++ b/src/home/homework.c
@@ -36,14 +36,6 @@
/* Make sure a bad password always results in a 3s delay, no matter what */
#define BAD_PASSWORD_DELAY_USEC (3 * USEC_PER_SEC)
-void password_cache_free(PasswordCache *cache) {
- if (!cache)
- return;
-
- cache->pkcs11_passwords = strv_free_erase(cache->pkcs11_passwords);
- cache->fido2_passwords = strv_free_erase(cache->fido2_passwords);
-}
-
int user_record_authenticate(
UserRecord *h,
UserRecord *secret,
diff --git a/src/home/homework.h b/src/home/homework.h
index d7ad6fbdfa..053def6360 100644
--- a/src/home/homework.h
+++ b/src/home/homework.h
@@ -6,8 +6,8 @@
#include "sd-id128.h"
+#include "homework-password-cache.h"
#include "loop-util.h"
-#include "strv.h"
#include "user-record.h"
#include "user-record-util.h"
@@ -43,22 +43,6 @@ typedef struct HomeSetup {
char *temporary_image_path;
} HomeSetup;
-typedef struct PasswordCache {
- /* Decoding passwords from security tokens is expensive and typically requires user interaction,
- * hence cache any we already figured out. */
- char **pkcs11_passwords;
- char **fido2_passwords;
-} PasswordCache;
-
-void password_cache_free(PasswordCache *cache);
-
-static inline bool password_cache_contains(const PasswordCache *cache, const char *p) {
- if (!cache)
- return false;
-
- return strv_contains(cache->pkcs11_passwords, p) || strv_contains(cache->fido2_passwords, p);
-}
-
#define HOME_SETUP_INIT \
{ \
.root_fd = -1, \
diff --git a/src/home/meson.build b/src/home/meson.build
index 53a387fd97..439eabc9bf 100644
--- a/src/home/meson.build
+++ b/src/home/meson.build
@@ -16,6 +16,8 @@ systemd_homework_sources = files('''
homework-luks.h
homework-mount.c
homework-mount.h
+ homework-password-cache.c
+ homework-password-cache.h
homework-pkcs11.h
homework-quota.c
homework-quota.h