• Jason A. Donenfeld's avatar
    crypto: arm64/chacha - correctly walk through blocks · c8cfcb78
    Jason A. Donenfeld authored
    Prior, passing in chunks of 2, 3, or 4, followed by any additional
    chunks would result in the chacha state counter getting out of sync,
    resulting in incorrect encryption/decryption, which is a pretty nasty
    crypto vuln: "why do images look weird on webpages?" WireGuard users
    never experienced this prior, because we have always, out of tree, used
    a different crypto library, until the recent Frankenzinc addition. This
    commit fixes the issue by advancing the pointers and state counter by
    the actual size processed. It also fixes up a bug in the (optional,
    costly) stride test that prevented it from running on arm64.
    
    Fixes: b3aad5ba ("crypto: arm64/chacha - expose arm64 ChaCha routine as library function")
    Reported-and-tested-by: default avatarEmil Renner Berthing <kernel@esmil.dk>
    Cc: Ard Biesheuvel <ardb@kernel.org>
    Cc: stable@vger.kernel.org # v5.5+
    Signed-off-by: default avatarJason A. Donenfeld <Jason@zx2c4.com>
    Reviewed-by: default avatarEric Biggers <ebiggers@google.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    c8cfcb78
chacha20poly1305-selftest.c 393 KB