diff options
author | Lennart Poettering <lennart@poettering.net> | 2021-11-02 23:03:17 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2021-11-13 00:22:16 +0100 |
commit | 6b945d7031f34a1652d2e6808bfffbd3761e642e (patch) | |
tree | 8ca620d74d6f27a6f016d1f53e4c513bc72aa6ff | |
parent | 0881991c3236a894378167ea9006dbf15a56ba58 (diff) | |
download | systemd-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.c | 11 | ||||
-rw-r--r-- | src/home/homework-password-cache.h | 21 | ||||
-rw-r--r-- | src/home/homework.c | 8 | ||||
-rw-r--r-- | src/home/homework.h | 18 | ||||
-rw-r--r-- | src/home/meson.build | 2 |
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 |