summaryrefslogtreecommitdiff
path: root/arch/x86
diff options
context:
space:
mode:
authorOndrej Mosnacek <omosnacek@gmail.com>2018-05-20 10:57:23 +0200
committerHerbert Xu <herbert@gondor.apana.org.au>2018-05-27 00:12:12 +0800
commitdd09f58ce0c7011f1c7d0a52779dafc7a5ba5506 (patch)
tree1ca7a15f1fa6200e5fa37a9823b7618933664a53 /arch/x86
parent9f50fd5bb66e5303f86aa5fec7a51dbd9219c0ec (diff)
crypto: x86/aegis256 - Fix wrong key buffer size
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>
Diffstat (limited to 'arch/x86')
-rw-r--r--arch/x86/crypto/aegis256-aesni-glue.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/x86/crypto/aegis256-aesni-glue.c b/arch/x86/crypto/aegis256-aesni-glue.c
index 3181655dd862..2b5dd3af8f4d 100644
--- a/arch/x86/crypto/aegis256-aesni-glue.c
+++ b/arch/x86/crypto/aegis256-aesni-glue.c
@@ -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);