]> www.infradead.org Git - mtd-utils.git/commitdiff
mkfs.ubifs: Pass source/dest key len to key derive function
authorRichard Weinberger <richard@nod.at>
Thu, 18 Oct 2018 14:36:50 +0000 (16:36 +0200)
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>
Thu, 1 Nov 2018 11:38:52 +0000 (12:38 +0100)
fscrypto is using the max key lenth (64), so we cannot use the
AES-128-ECB len.

Signed-off-by: Richard Weinberger <richard@nod.at>
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
ubifs-utils/mkfs.ubifs/crypto.c
ubifs-utils/mkfs.ubifs/crypto.h
ubifs-utils/mkfs.ubifs/mkfs.ubifs.c

index a20bd56ba3db85efec86014d13482818d4148f38..f249b49b5b592e1fc7c7ee4150e9d5f13e8c9f92 100644 (file)
@@ -277,7 +277,7 @@ ssize_t encrypt_aes256_cbc_cts(const void *plaintext, size_t size,
 }
 
 ssize_t derive_key_aes(const void *deriving_key, const void *source_key,
-                      void *derived_key)
+                      size_t source_key_len, void *derived_key)
 {
        const EVP_CIPHER *cipher;
        size_t aes_key_len;
@@ -289,7 +289,7 @@ ssize_t derive_key_aes(const void *deriving_key, const void *source_key,
        }
        aes_key_len = EVP_CIPHER_key_length(cipher);
 
-       return do_encrypt(cipher, source_key, aes_key_len, deriving_key,
+       return do_encrypt(cipher, source_key, source_key_len, deriving_key,
                          aes_key_len, NULL, 0, derived_key);
 }
 
index 4e597004ec51378acbadb325239e6aa9ad9ed27a..5bff70fea29e5f4914e9ffbb457dec34d1420aef 100644 (file)
@@ -57,7 +57,7 @@ ssize_t encrypt_aes256_cbc_cts(const void *plaintext, size_t size,
                               const void *key, void *ciphertext);
 
 ssize_t derive_key_aes(const void *deriving_key, const void *source_key,
-                      void *derived_key);
+                      size_t source_key_len, void *derived_key);
 
 
 struct cipher *get_cipher(const char *name);
index a43b2a1620b1553f462980e0dd5320fa0644d342..c315e36dd3d37eed979e8979a3b26218ccaba9da 100644 (file)
@@ -526,7 +526,7 @@ static 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, new_key);
+       ret = derive_key_aes(fctx->nonce, fscrypt_masterkey, FS_MAX_KEY_SIZE, new_key);
        if (ret < 0) {
                err_msg("derive_key_aes failed: %i\n", ret);