diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 15:35:18 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 15:35:18 +0000 |
commit | b750101eb236130cf056c675997decbac904cc49 (patch) | |
tree | a5df1a06754bdd014cb975c051c83b01c9a97532 /src/home/homework-password-cache.h | |
parent | Initial commit. (diff) | |
download | systemd-b750101eb236130cf056c675997decbac904cc49.tar.xz systemd-b750101eb236130cf056c675997decbac904cc49.zip |
Adding upstream version 252.22.upstream/252.22
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/home/homework-password-cache.h')
-rw-r--r-- | src/home/homework-password-cache.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/home/homework-password-cache.h b/src/home/homework-password-cache.h new file mode 100644 index 0000000..fdfbcfe --- /dev/null +++ b/src/home/homework-password-cache.h @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ +#pragma once + +#include "strv.h" +#include "user-record.h" + +typedef struct PasswordCache { + /* Passwords acquired from the kernel keyring */ + char **keyring_passswords; + + /* 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) || + strv_contains(cache->keyring_passswords, p); +} + +void password_cache_load_keyring(UserRecord *h, PasswordCache *cache); |