summaryrefslogtreecommitdiff
path: root/src/home/homed-home.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2020-04-14 19:18:09 +0200
committerLennart Poettering <lennart@poettering.net>2020-07-01 11:17:28 +0200
commit7b78db28e544f3007b22b612da229773987fdf74 (patch)
tree971df7fafb14062e2f9daf853bd432fdf7dd8a75 /src/home/homed-home.c
parent1c0c4a43c6118aa4057222789e4b777b61e4bb27 (diff)
downloadsystemd-7b78db28e544f3007b22b612da229773987fdf74.tar.gz
homed: add support for authenticating with fido2 hmac-secret tokens
Diffstat (limited to 'src/home/homed-home.c')
-rw-r--r--src/home/homed-home.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/home/homed-home.c b/src/home/homed-home.c
index 47ee7d2328..f0c157cb7d 100644
--- a/src/home/homed-home.c
+++ b/src/home/homed-home.c
@@ -457,6 +457,10 @@ static int convert_worker_errno(Home *h, int e, sd_bus_error *error) {
return sd_bus_error_setf(error, BUS_ERROR_TOKEN_PIN_NEEDED, "PIN for security token required.");
case -ERFKILL:
return sd_bus_error_setf(error, BUS_ERROR_TOKEN_PROTECTED_AUTHENTICATION_PATH_NEEDED, "Security token requires protected authentication path.");
+ case -EMEDIUMTYPE:
+ return sd_bus_error_setf(error, BUS_ERROR_TOKEN_USER_PRESENCE_NEEDED, "Security token requires user presence.");
+ case -ENOSTR:
+ return sd_bus_error_setf(error, BUS_ERROR_TOKEN_ACTION_TIMEOUT, "Token action timeout. (User was supposed to verify presence or similar, by interacting with the token, and didn't do that in time.)");
case -EOWNERDEAD:
return sd_bus_error_setf(error, BUS_ERROR_TOKEN_PIN_LOCKED, "PIN of security token locked.");
case -ENOLCK:
@@ -1357,7 +1361,13 @@ static int user_record_extend_with_binding(UserRecord *hr, UserRecord *with_bind
return 0;
}
-static int home_update_internal(Home *h, const char *verb, UserRecord *hr, UserRecord *secret, sd_bus_error *error) {
+static int home_update_internal(
+ Home *h,
+ const char *verb,
+ UserRecord *hr,
+ UserRecord *secret,
+ sd_bus_error *error) {
+
_cleanup_(user_record_unrefp) UserRecord *new_hr = NULL, *saved_secret = NULL, *signed_hr = NULL;
int r, c;