]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
crypto: arm64/aes-ce-ccm - Fix AEAD decryption length
authorHerbert Xu <herbert@gondor.apana.org.au>
Wed, 30 Nov 2016 13:17:24 +0000 (21:17 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 1 Dec 2016 13:06:37 +0000 (21:06 +0800)
This patch fixes the ARM64 CE CCM implementation decryption by
using skcipher_walk_aead_decrypt instead of skcipher_walk_aead,
which ensures the correct length is used when doing the walk.

Fixes: cf2c0fe74084 ("crypto: aes-ce-ccm - Use skcipher walk interface")
Reported-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/arm64/crypto/aes-ce-ccm-glue.c

index d4f35685363b20e90c5a6365fad79c343e4ab06a..cc5515dac74a6d80deef3767d4d21bb70a0b76e8 100644 (file)
@@ -167,7 +167,7 @@ static int ccm_encrypt(struct aead_request *req)
        /* preserve the original iv for the final round */
        memcpy(buf, req->iv, AES_BLOCK_SIZE);
 
-       err = skcipher_walk_aead(&walk, req, true);
+       err = skcipher_walk_aead_encrypt(&walk, req, true);
 
        while (walk.nbytes) {
                u32 tail = walk.nbytes % AES_BLOCK_SIZE;
@@ -219,7 +219,7 @@ static int ccm_decrypt(struct aead_request *req)
        /* preserve the original iv for the final round */
        memcpy(buf, req->iv, AES_BLOCK_SIZE);
 
-       err = skcipher_walk_aead(&walk, req, true);
+       err = skcipher_walk_aead_decrypt(&walk, req, true);
 
        while (walk.nbytes) {
                u32 tail = walk.nbytes % AES_BLOCK_SIZE;