]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
crypto: x86/aegis256 - Fix wrong key buffer size
authorOndrej Mosnacek <omosnacek@gmail.com>
Sun, 20 May 2018 08:57:23 +0000 (10:57 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Sat, 26 May 2018 16:12:12 +0000 (00:12 +0800)
AEGIS-256 key is two blocks, not one.

Fixes: 1d373d4e8e15 ("crypto: x86 - Add optimized AEGIS implementations")
Reported-by: Eric Biggers <ebiggers3@gmail.com>
Signed-off-by: Ondrej Mosnacek <omosnacek@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/x86/crypto/aegis256-aesni-glue.c

index 3181655dd862317f5776381bfd797420424530e9..2b5dd3af8f4dc4c20caad2a96825576dc17fe2be 100644 (file)
@@ -57,7 +57,7 @@ struct aegis_state {
 };
 
 struct aegis_ctx {
-       struct aegis_block key;
+       struct aegis_block key[AEGIS256_KEY_SIZE / AEGIS256_BLOCK_SIZE];
 };
 
 struct aegis_crypt_ops {
@@ -164,7 +164,7 @@ static int crypto_aegis256_aesni_setkey(struct crypto_aead *aead, const u8 *key,
                return -EINVAL;
        }
 
-       memcpy(ctx->key.bytes, key, AEGIS256_KEY_SIZE);
+       memcpy(ctx->key, key, AEGIS256_KEY_SIZE);
 
        return 0;
 }
@@ -190,7 +190,7 @@ static void crypto_aegis256_aesni_crypt(struct aead_request *req,
 
        kernel_fpu_begin();
 
-       crypto_aegis256_aesni_init(&state, ctx->key.bytes, req->iv);
+       crypto_aegis256_aesni_init(&state, ctx->key, req->iv);
        crypto_aegis256_aesni_process_ad(&state, req->src, req->assoclen);
        crypto_aegis256_aesni_process_crypt(&state, req, ops);
        crypto_aegis256_aesni_final(&state, tag_xor, req->assoclen, cryptlen);