lkml.org 
[lkml]   [2018]   [Mar]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL for 4.15 76/78] crypto: artpec6 - set correct iv size for gcm(aes)
    Date
    From: Lars Persson <lars.persson@axis.com>

    [ Upstream commit 6d6e71feb183aa588c849e20e7baa47cb162928a ]

    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 <larper@axis.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    drivers/crypto/axis/artpec6_crypto.c | 5 +++--
    1 file changed, 3 insertions(+), 2 deletions(-)

    diff --git a/drivers/crypto/axis/artpec6_crypto.c b/drivers/crypto/axis/artpec6_crypto.c
    index 456278440863..22df6b55e172 100644
    --- a/drivers/crypto/axis/artpec6_crypto.c
    +++ b/drivers/crypto/axis/artpec6_crypto.c
    @@ -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 = {
    --
    2.14.1
    \
     
     \ /
      Last update: 2018-03-08 07:55    [W:2.473 / U:0.360 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site