From c573dc0021310e1956da638ecf654d65043a42ca Mon Sep 17 00:00:00 2001 From: Richard Weinberger Date: Thu, 18 Oct 2018 16:37:10 +0200 Subject: mkfs.ubifs: Use correct sizes for keys and hash lengths This works currently by chance since the sizes match, but that might change with different cipher setups. Signed-off-by: Richard Weinberger Signed-off-by: David Oberhollenzer --- ubifs-utils/mkfs.ubifs/crypto.c | 2 +- ubifs-utils/mkfs.ubifs/fscrypt.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ubifs-utils/mkfs.ubifs/crypto.c b/ubifs-utils/mkfs.ubifs/crypto.c index ec41453..7d35ae7 100644 --- a/ubifs-utils/mkfs.ubifs/crypto.c +++ b/ubifs-utils/mkfs.ubifs/crypto.c @@ -119,7 +119,7 @@ static size_t gen_essiv_salt(const void *iv, size_t iv_len, const void *key, siz return -1; } - ret = do_encrypt(cipher, iv, iv_len, sha256, EVP_CIPHER_key_length(cipher), NULL, 0, salt); + ret = do_encrypt(cipher, iv, iv_len, sha256, EVP_MD_size(EVP_sha256()), NULL, 0, salt); if (ret != iv_len) errmsg("Unable to compute ESSIV salt, return value %zi instead of %zi", ret, iv_len); diff --git a/ubifs-utils/mkfs.ubifs/fscrypt.c b/ubifs-utils/mkfs.ubifs/fscrypt.c index 2fc0ae8..b9f9acc 100644 --- a/ubifs-utils/mkfs.ubifs/fscrypt.c +++ b/ubifs-utils/mkfs.ubifs/fscrypt.c @@ -31,7 +31,7 @@ unsigned char *calc_fscrypt_subkey(struct fscrypt_context *fctx) int ret; unsigned char *new_key = xmalloc(FS_MAX_KEY_SIZE); - ret = derive_key_aes(fctx->nonce, fscrypt_masterkey, FS_MAX_KEY_SIZE, new_key); + ret = derive_key_aes(fctx->nonce, fscrypt_masterkey, fscrypt_cipher->key_length, new_key); if (ret < 0) { err_msg("derive_key_aes failed: %i\n", ret); @@ -202,7 +202,7 @@ static int load_master_key(const char *key_file, struct cipher *fsc) return -1; } - keysize = read(kf, fscrypt_masterkey, sizeof(fscrypt_masterkey)); + keysize = read(kf, fscrypt_masterkey, fsc->key_length); if (keysize < 0) { sys_errmsg("read '%s'", key_file); goto fail; -- cgit v1.2.3