Preparation for extending it further down the line.
--- /dev/null
+/* 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);
+}
--- /dev/null
+/* 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);
+}
/* 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,
#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"
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, \
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