crypto: artpec6: set correct iv size for gcm(aes)
Subsystems (2)
Lars Persson
maintainerPATCH v2 1/1 crypto: artpec6: set correct iv size for gcm(aes)
The IV size should not include the 32 bit counter. Because we had the IV size set as 16 the transform only worked when the IV input was zero padded.
Fixes a21eb94fc4d3 ("crypto: axis - add ARTPEC-6/7 crypto accelerator driver")
Signed-off-by Lars Persson <[email protected]>
---
v2: Use GCM_AES_IV_SIZE instead of 12.
--- drivers/crypto/axis/artpec6_crypto.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/crypto/axis/artpec6_crypto.c +3 -2
@@ -22,6 +22,7 @@#include <linux/slab.h> #include <crypto/aes.h> +#include <crypto/gcm.h> #include <crypto/internal/aead.h> #include <crypto/internal/hash.h> #include <crypto/internal/skcipher.h>
@@ -1934,7 +1935,7 @@ static int artpec6_crypto_prepare_aead(struct aead_request *areq)memcpy (req_ctx->hw_ctx.J0, areq->iv,crypto_aead_ivsize (cipher));// The HW omits the initial increment of the counter field. -crypto_inc (req_ctx->hw_ctx.J0+12 ,4 ); +memcpy (req_ctx->hw_ctx.J0 +GCM_AES_IV_SIZE ,"\x00\x00\x00\x01" ,4 ); ret =artpec6_crypto_setup_out_descr (common, &req_ctx->hw_ctx,sizeof (struct artpec6_crypto_aead_hw_ctx ), false, false);
@@ -2956,7 +2957,7 @@ static struct aead_alg aead_algos[] = { .setkey = artpec6_crypto_aead_set_key, .encrypt = artpec6_crypto_aead_encrypt, .decrypt = artpec6_crypto_aead_decrypt, - .ivsize = AES_BLOCK_SIZE, + .ivsize = GCM_AES_IV_SIZE, .maxauthsize = AES_BLOCK_SIZE, .base = {
Signature · 1 line
2.11.0
Herbert Xu
maintainerQuoted 6 lines · Lars Persson
The IV size should not include the 32 bit counter. Because we had the IV size set as 16 the transform only worked when the IV input was zero padded.
Fixes a21eb94fc4d3 ("crypto: axis - add ARTPEC-6/7 crypto accelerator driver")Signed-off-by Lars Persson <[email protected]>
Patch applied. Thanks.
Signature · 3 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt