diff --git a/lib/integrity/integrity.c b/lib/integrity/integrity.c index 91826a0d..8180c7b6 100644 --- a/lib/integrity/integrity.c +++ b/lib/integrity/integrity.c @@ -130,6 +130,7 @@ int INTEGRITY_key_size(struct crypt_device *cd) int INTEGRITY_tag_size(struct crypt_device *cd, const char *integrity, + const char *cipher, const char *cipher_mode) { int iv_tag_size = 0, auth_tag_size = 0; diff --git a/lib/integrity/integrity.h b/lib/integrity/integrity.h index b22a54eb..3913e9ad 100644 --- a/lib/integrity/integrity.h +++ b/lib/integrity/integrity.h @@ -53,6 +53,7 @@ int INTEGRITY_data_sectors(struct crypt_device *cd, int INTEGRITY_key_size(struct crypt_device *cd); int INTEGRITY_tag_size(struct crypt_device *cd, const char *integrity, + const char *cipher, const char *cipher_mode); int INTEGRITY_format(struct crypt_device *cd, diff --git a/lib/setup.c b/lib/setup.c index 90c03986..f68d8a05 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -1502,7 +1502,7 @@ static int _crypt_format_luks2(struct crypt_device *cd, params->integrity_params->journal_integrity) return -ENOTSUP; } - if (!INTEGRITY_tag_size(cd, integrity, cipher_mode)) { + if (!INTEGRITY_tag_size(cd, integrity, cipher, cipher_mode)) { if (!strcmp(integrity, "none")) integrity = NULL; else @@ -3711,6 +3711,7 @@ int crypt_get_integrity_tag_size(struct crypt_device *cd) if (isLUKS2(cd->type)) return INTEGRITY_tag_size(cd, crypt_get_integrity(cd), + crypt_get_cipher(cd), crypt_get_cipher_mode(cd)); return 0; } @@ -3966,7 +3967,7 @@ int crypt_get_integrity_info(struct crypt_device *cd, ip->integrity = LUKS2_get_integrity(&cd->u.luks2.hdr, CRYPT_DEFAULT_SEGMENT); ip->integrity_key_size = crypt_get_integrity_key_size(cd); - ip->tag_size = INTEGRITY_tag_size(cd, ip->integrity, crypt_get_cipher_mode(cd)); + ip->tag_size = INTEGRITY_tag_size(cd, ip->integrity, crypt_get_cipher(cd), crypt_get_cipher_mode(cd)); ip->journal_integrity = NULL; ip->journal_integrity_key_size = 0;