dm crypt: omit parsing of the encapsulated cipher
Only the ESSIV IV generation mode used to use cc->cipher so it could instantiate the bare cipher used to encrypt the IV. However, this is now taken care of by the ESSIV template, and so no users of cc->cipher remain. So remove it altogether. Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Tested-by: Milan Broz <gmazyland@gmail.com> Signed-off-by: Mike Snitzer <snitzer@redhat.com>
This commit is contained in:
Родитель
a1a262b66e
Коммит
b1d1e29639
|
@ -143,7 +143,6 @@ struct crypt_config {
|
|||
struct task_struct *write_thread;
|
||||
struct rb_root write_tree;
|
||||
|
||||
char *cipher;
|
||||
char *cipher_string;
|
||||
char *cipher_auth;
|
||||
char *key_string;
|
||||
|
@ -2140,7 +2139,6 @@ static void crypt_dtr(struct dm_target *ti)
|
|||
if (cc->dev)
|
||||
dm_put_device(ti, cc->dev);
|
||||
|
||||
kzfree(cc->cipher);
|
||||
kzfree(cc->cipher_string);
|
||||
kzfree(cc->key_string);
|
||||
kzfree(cc->cipher_auth);
|
||||
|
@ -2221,52 +2219,6 @@ static int crypt_ctr_ivmode(struct dm_target *ti, const char *ivmode)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Workaround to parse cipher algorithm from crypto API spec.
|
||||
* The cc->cipher is currently used only in ESSIV.
|
||||
* This should be probably done by crypto-api calls (once available...)
|
||||
*/
|
||||
static int crypt_ctr_blkdev_cipher(struct crypt_config *cc)
|
||||
{
|
||||
const char *alg_name = NULL;
|
||||
char *start, *end;
|
||||
|
||||
if (crypt_integrity_aead(cc)) {
|
||||
alg_name = crypto_tfm_alg_name(crypto_aead_tfm(any_tfm_aead(cc)));
|
||||
if (!alg_name)
|
||||
return -EINVAL;
|
||||
if (crypt_integrity_hmac(cc)) {
|
||||
alg_name = strchr(alg_name, ',');
|
||||
if (!alg_name)
|
||||
return -EINVAL;
|
||||
}
|
||||
alg_name++;
|
||||
} else {
|
||||
alg_name = crypto_tfm_alg_name(crypto_skcipher_tfm(any_tfm(cc)));
|
||||
if (!alg_name)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
start = strchr(alg_name, '(');
|
||||
end = strchr(alg_name, ')');
|
||||
|
||||
if (!start && !end) {
|
||||
cc->cipher = kstrdup(alg_name, GFP_KERNEL);
|
||||
return cc->cipher ? 0 : -ENOMEM;
|
||||
}
|
||||
|
||||
if (!start || !end || ++start >= end)
|
||||
return -EINVAL;
|
||||
|
||||
cc->cipher = kzalloc(end - start + 1, GFP_KERNEL);
|
||||
if (!cc->cipher)
|
||||
return -ENOMEM;
|
||||
|
||||
strncpy(cc->cipher, start, end - start);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Workaround to parse HMAC algorithm from AEAD crypto API spec.
|
||||
* The HMAC is needed to calculate tag size (HMAC digest size).
|
||||
|
@ -2376,12 +2328,6 @@ static int crypt_ctr_cipher_new(struct dm_target *ti, char *cipher_in, char *key
|
|||
else
|
||||
cc->iv_size = crypto_skcipher_ivsize(any_tfm(cc));
|
||||
|
||||
ret = crypt_ctr_blkdev_cipher(cc);
|
||||
if (ret < 0) {
|
||||
ti->error = "Cannot allocate cipher string";
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -2416,10 +2362,6 @@ static int crypt_ctr_cipher_old(struct dm_target *ti, char *cipher_in, char *key
|
|||
}
|
||||
cc->key_parts = cc->tfms_count;
|
||||
|
||||
cc->cipher = kstrdup(cipher, GFP_KERNEL);
|
||||
if (!cc->cipher)
|
||||
goto bad_mem;
|
||||
|
||||
chainmode = strsep(&tmp, "-");
|
||||
*ivmode = strsep(&tmp, ":");
|
||||
*ivopts = tmp;
|
||||
|
|
Загрузка…
Ссылка в новой задаче