mirror of
https://gitlab.com/cryptsetup/cryptsetup.git
synced 2025-12-17 13:50:06 +01:00
Verify volume key passed by kernel keyring.
Verify volume key passed by --volume-key-keyring before trying to add new keyslot.
This commit is contained in:
committed by
Milan Broz
parent
723ad6afdf
commit
e48d5b6d19
@@ -2331,10 +2331,15 @@ static int action_luksAddKey(void)
|
|||||||
crypt_safe_free(key);
|
crypt_safe_free(key);
|
||||||
} else if (ARG_SET(OPT_VOLUME_KEY_KEYRING_ID)) {
|
} else if (ARG_SET(OPT_VOLUME_KEY_KEYRING_ID)) {
|
||||||
r = tools_parse_vk_description(ARG_STR(OPT_VOLUME_KEY_KEYRING_ID), &vk_description);
|
r = tools_parse_vk_description(ARG_STR(OPT_VOLUME_KEY_KEYRING_ID), &vk_description);
|
||||||
if (!r) {
|
if (r < 0)
|
||||||
r = crypt_keyslot_context_init_by_vk_in_keyring(cd, vk_description, &kc);
|
goto out;
|
||||||
free(vk_description);
|
r = crypt_keyslot_context_init_by_vk_in_keyring(cd, vk_description, &kc);
|
||||||
}
|
free(vk_description);
|
||||||
|
if (r < 0)
|
||||||
|
goto out;
|
||||||
|
r = crypt_activate_by_keyslot_context(cd, NULL, CRYPT_ANY_SLOT, kc, CRYPT_ANY_SLOT, NULL, 0);
|
||||||
|
if (r == -EPERM)
|
||||||
|
log_err(_("Volume key does not match the volume."));
|
||||||
} else if (ARG_SET(OPT_TOKEN_ID_ID) || ARG_SET(OPT_TOKEN_TYPE_ID) || ARG_SET(OPT_TOKEN_ONLY_ID)) {
|
} else if (ARG_SET(OPT_TOKEN_ID_ID) || ARG_SET(OPT_TOKEN_TYPE_ID) || ARG_SET(OPT_TOKEN_ONLY_ID)) {
|
||||||
r = crypt_keyslot_context_init_by_token(cd,
|
r = crypt_keyslot_context_init_by_token(cd,
|
||||||
ARG_INT32(OPT_TOKEN_ID_ID),
|
ARG_INT32(OPT_TOKEN_ID_ID),
|
||||||
|
|||||||
Reference in New Issue
Block a user