homework: split out password cache logic into its own .c/.h file
Preparation for extending it further down the line.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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,
|
||||
|
||||
+1
-17
@@ -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, \
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user