Skip to content

Commit e5c2892

Browse files
committed
cryptsetup: Adjust XTS keys size also if cipher is specified with capi: prefix.
Fixes: #776
1 parent bd2f7eb commit e5c2892

File tree

4 files changed

+5
-5
lines changed

4 files changed

+5
-5
lines changed

src/cryptsetup.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1589,7 +1589,7 @@ int luksFormat(struct crypt_device **r_cd, struct crypt_keyslot_context **r_kc)
15891589
goto out;
15901590
}
15911591

1592-
keysize = get_adjusted_key_size(cipher_mode, ARG_UINT32(OPT_KEY_SIZE_ID),
1592+
keysize = get_adjusted_key_size(cipher, cipher_mode, ARG_UINT32(OPT_KEY_SIZE_ID),
15931593
DEFAULT_LUKS1_KEYBITS, integrity_keysize);
15941594

15951595
if (ARG_SET(OPT_HW_OPAL_ONLY_ID))

src/utils_luks.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,11 +139,11 @@ int set_tries_tty(bool keyring)
139139
return (tools_is_stdin(ARG_STR(OPT_KEY_FILE_ID)) && isatty(STDIN_FILENO)) ? ARG_UINT32(OPT_TRIES_ID) : 1;
140140
}
141141

142-
int get_adjusted_key_size(const char *cipher_mode, uint32_t keysize_bits,
142+
int get_adjusted_key_size(const char *cipher, const char *cipher_mode, uint32_t keysize_bits,
143143
uint32_t default_size_bits, int integrity_keysize)
144144
{
145145
#if ENABLE_LUKS_ADJUST_XTS_KEYSIZE
146-
if (!keysize_bits && !strncmp(cipher_mode, "xts-", 4)) {
146+
if (!keysize_bits && (!strncmp(cipher_mode, "xts-", 4) || !strncmp(cipher, "capi:xts(", 9))) {
147147
if (default_size_bits == 128)
148148
keysize_bits = 256;
149149
else if (default_size_bits == 256)

src/utils_luks.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ int set_pbkdf_params(struct crypt_device *cd, const char *dev_type);
2727

2828
int set_tries_tty(bool keyring);
2929

30-
int get_adjusted_key_size(const char *cipher_mode, uint32_t keysize_bits,
30+
int get_adjusted_key_size(const char *cipher, const char *cipher_mode, uint32_t keysize_bits,
3131
uint32_t default_size_bits, int integrity_keysize);
3232

3333
int luksFormat(struct crypt_device **r_cd, struct crypt_keyslot_context **r_kc);

src/utils_reencrypt.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1910,7 +1910,7 @@ static int reencrypt_luks2_init(struct crypt_device *cd, const char *data_device
19101910
new_key_size = ARG_UINT32(OPT_NEW_KEY_SIZE_ID);
19111911

19121912
if (new_key_size || new_cipher)
1913-
new_key_size = get_adjusted_key_size(mode, new_key_size,
1913+
new_key_size = get_adjusted_key_size(cipher, mode, new_key_size,
19141914
DEFAULT_LUKS1_KEYBITS, 0);
19151915
else
19161916
new_key_size = key_size;

0 commit comments

Comments
 (0)