From d590c74a0e2ebaa300d4a6a7b72d66ca3d172dfc Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Thu, 9 May 2024 14:09:36 +0200 Subject: [PATCH] Support aes-hctr2 mode. The HCTR2 encryption was added to Linux kernel for fscrypt, but as it is length-preserving mode (with sector tweak) it can be easily used for disk encryption too. As it need larger IV of size 32 bytes, we need to add exception for aes-hctr2[-plain64] to be accepted in cryptsetup commands. Fixes: #883 --- lib/crypto_backend/cipher_generic.c | 3 +++ tests/mode-test | 2 ++ 2 files changed, 5 insertions(+) diff --git a/lib/crypto_backend/cipher_generic.c b/lib/crypto_backend/cipher_generic.c index 81162567..41774a2c 100644 --- a/lib/crypto_backend/cipher_generic.c +++ b/lib/crypto_backend/cipher_generic.c @@ -62,6 +62,9 @@ int crypt_cipher_ivsize(const char *name, const char *mode) if (!ca) return -EINVAL; + if (mode && !strcasecmp(mode, "hctr2")) + return 32; + if (mode && !strcasecmp(mode, "ecb")) return 0; diff --git a/tests/mode-test b/tests/mode-test index a332b854..3ce8791a 100755 --- a/tests/mode-test +++ b/tests/mode-test @@ -208,6 +208,8 @@ done dmcrypt xchacha12,aes-adiantum-plain64 dmcrypt xchacha20,aes-adiantum-plain64 +dmcrypt aes-hctr2-plain64 + echo -n "CAPI format:" if dm_crypt_capi_support ; then echo $PASSWORD | $CRYPTSETUP create -h sha256 -c 'capi:xts(aes)-plain64' -s 256 "$DEV_NAME"_tstdev /dev/mapper/$DEV_NAME || fail