summaryrefslogtreecommitdiffstats
path: root/lib/keyslot_context.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/keyslot_context.h')
-rw-r--r--lib/keyslot_context.h52
1 files changed, 46 insertions, 6 deletions
diff --git a/lib/keyslot_context.h b/lib/keyslot_context.h
index 7ca7428..fd15159 100644
--- a/lib/keyslot_context.h
+++ b/lib/keyslot_context.h
@@ -1,8 +1,8 @@
/*
* LUKS - Linux Unified Key Setup, keyslot unlock helpers
*
- * Copyright (C) 2022-2023 Red Hat, Inc. All rights reserved.
- * Copyright (C) 2022-2023 Ondrej Kozina
+ * Copyright (C) 2022-2024 Red Hat, Inc. All rights reserved.
+ * Copyright (C) 2022-2024 Ondrej Kozina
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -40,6 +40,17 @@ typedef int (*keyslot_context_get_volume_key) (
int keyslot,
struct volume_key **r_vk);
+typedef int (*keyslot_context_get_generic_volume_key) (
+ struct crypt_device *cd,
+ struct crypt_keyslot_context *kc,
+ struct volume_key **r_vk);
+
+typedef int (*keyslot_context_get_generic_signed_key) (
+ struct crypt_device *cd,
+ struct crypt_keyslot_context *kc,
+ struct volume_key **r_vk,
+ struct volume_key **r_signature);
+
typedef int (*keyslot_context_get_passphrase) (
struct crypt_device *cd,
struct crypt_keyslot_context *kc,
@@ -71,6 +82,18 @@ struct crypt_keyslot_context {
const char *volume_key;
size_t volume_key_size;
} k;
+ struct {
+ const char *volume_key;
+ size_t volume_key_size;
+ const char *signature;
+ size_t signature_size;
+ } ks;
+ struct {
+ const char *key_description;
+ } kr;
+ struct {
+ const char *key_description;
+ } vk_kr;
} u;
int error;
@@ -78,10 +101,15 @@ struct crypt_keyslot_context {
char *i_passphrase;
size_t i_passphrase_size;
- keyslot_context_get_key get_luks2_key;
- keyslot_context_get_volume_key get_luks1_volume_key;
- keyslot_context_get_volume_key get_luks2_volume_key;
- keyslot_context_get_passphrase get_passphrase;
+ keyslot_context_get_key get_luks2_key;
+ keyslot_context_get_volume_key get_luks1_volume_key;
+ keyslot_context_get_volume_key get_luks2_volume_key;
+ keyslot_context_get_generic_volume_key get_plain_volume_key;
+ keyslot_context_get_generic_volume_key get_bitlk_volume_key;
+ keyslot_context_get_generic_volume_key get_fvault2_volume_key;
+ keyslot_context_get_generic_signed_key get_verity_volume_key;
+ keyslot_context_get_generic_volume_key get_integrity_volume_key;
+ keyslot_context_get_passphrase get_passphrase;
};
void crypt_keyslot_context_destroy_internal(struct crypt_keyslot_context *method);
@@ -90,6 +118,12 @@ void crypt_keyslot_unlock_by_key_init_internal(struct crypt_keyslot_context *kc,
const char *volume_key,
size_t volume_key_size);
+void crypt_keyslot_unlock_by_signed_key_init_internal(struct crypt_keyslot_context *kc,
+ const char *volume_key,
+ size_t volume_key_size,
+ const char *signature,
+ size_t signature_size);
+
void crypt_keyslot_unlock_by_passphrase_init_internal(struct crypt_keyslot_context *kc,
const char *passphrase,
size_t passphrase_size);
@@ -106,6 +140,12 @@ void crypt_keyslot_unlock_by_token_init_internal(struct crypt_keyslot_context *k
size_t pin_size,
void *usrptr);
+void crypt_keyslot_unlock_by_keyring_internal(struct crypt_keyslot_context *kc,
+ const char *key_description);
+
+void crypt_keyslot_unlock_by_vk_in_keyring_internal(struct crypt_keyslot_context *kc,
+ const char *key_description);
+
const char *keyslot_context_type_string(const struct crypt_keyslot_context *kc);
#endif /* KEYSLOT_CONTEXT_H */