• Eric Biggers's avatar
    crypto: arm64/gcm-aes-ce - fix no-NEON fallback code · 580e2951
    Eric Biggers authored
    The arm64 gcm-aes-ce algorithm is failing the extra crypto self-tests
    following my patches to test the !may_use_simd() code paths, which
    previously were untested.  The problem is that in the !may_use_simd()
    case, an odd number of AES blocks can be processed within each step of
    the skcipher_walk.  However, the skcipher_walk is being done with a
    "stride" of 2 blocks and is advanced by an even number of blocks after
    each step.  This causes the encryption to produce the wrong ciphertext
    and authentication tag, and causes the decryption to incorrectly fail.
    
    Fix it by only processing an even number of blocks per step.
    
    Fixes: c2b24c36 ("crypto: arm64/aes-gcm-ce - fix scatterwalk API violation")
    Fixes: 71e52c27 ("crypto: arm64/aes-ce-gcm - operate on two input blocks at a time")
    Cc: <stable@vger.kernel.org> # v4.19+
    Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
    Reviewed-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    580e2951
ghash-ce-glue.c 18 KB