]> git.proxmox.com Git - mirror_qemu.git/commit - crypto/cipher-gcrypt.c
crypto: ensure XTS is only used with ciphers with 16 byte blocks
authorDaniel P. Berrange <berrange@redhat.com>
Wed, 24 Aug 2016 15:28:15 +0000 (16:28 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Mon, 12 Sep 2016 11:00:06 +0000 (12:00 +0100)
commita5d2f44d0d3e7523670e103a8c37faed29ff2b76
tree605c0414b74ebd8bdea7a31fde1da0205a056be0
parentc2a57aae9a1c3dd7de77daf5478df10379aeeebf
crypto: ensure XTS is only used with ciphers with 16 byte blocks

The XTS cipher mode needs to be used with a cipher which has
a block size of 16 bytes. If a mis-matching block size is used,
the code will either corrupt memory beyond the IV array, or
not fully encrypt/decrypt the IV.

This fixes a memory corruption crash when attempting to use
cast5-128 with xts, since the former has an 8 byte block size.

A test case is added to ensure the cipher creation fails with
such an invalid combination.

Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
crypto/cipher-gcrypt.c
crypto/cipher-nettle.c
tests/test-crypto-cipher.c