summaryrefslogtreecommitdiff
path: root/fs/ext4/crypto.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ext4/crypto.c')
-rw-r--r--fs/ext4/crypto.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/fs/ext4/crypto.c b/fs/ext4/crypto.c
index f5099a3386ec..b13cf12ebfd5 100644
--- a/fs/ext4/crypto.c
+++ b/fs/ext4/crypto.c
@@ -455,10 +455,18 @@ errout:
return err;
}
-bool ext4_valid_contents_enc_mode(uint32_t mode)
+bool ext4_valid_enc_modes(uint32_t contents_mode, uint32_t filenames_mode)
{
- return (mode == EXT4_ENCRYPTION_MODE_AES_256_XTS ||
- mode == EXT4_ENCRYPTION_MODE_PRIVATE);
+ if (contents_mode == EXT4_ENCRYPTION_MODE_AES_256_XTS ||
+ contents_mode == EXT4_ENCRYPTION_MODE_PRIVATE) {
+ return (filenames_mode == EXT4_ENCRYPTION_MODE_AES_256_CTS ||
+ filenames_mode == EXT4_ENCRYPTION_MODE_AES_256_HEH);
+ }
+
+ if (contents_mode == EXT4_ENCRYPTION_MODE_SPECK128_256_XTS)
+ return filenames_mode == EXT4_ENCRYPTION_MODE_SPECK128_256_CTS;
+
+ return false;
}
/**