fscrypt: only derive the needed portion of the key
authorEric Biggers <ebiggers@google.com>
Mon, 30 Apr 2018 22:51:49 +0000 (15:51 -0700)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 20 May 2018 20:21:05 +0000 (16:21 -0400)
commit646b7d4f2c0ce2b6487c10c1a363727d6f4552ef
tree1ebc14db33fb6c9b61cb44b42213cd0f936dffe8
parent590f497d08eeae883a4fc2dd938c89520ac139fd
fscrypt: only derive the needed portion of the key

Currently the key derivation function in fscrypt uses the master key
length as the amount of output key material to derive.  This works, but
it means we can waste time deriving more key material than is actually
used, e.g. most commonly, deriving 64 bytes for directories which only
take a 32-byte AES-256-CTS-CBC key.  It also forces us to validate that
the master key length is a multiple of AES_BLOCK_SIZE, which wouldn't
otherwise be necessary.

Fix it to only derive the needed length key.

Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/crypto/keyinfo.c