crypto: inside-secure - the context ipad/opad should use the state sz
authorAntoine Tenart <antoine.tenart@bootlin.com>
Mon, 19 Mar 2018 08:21:19 +0000 (09:21 +0100)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 30 Mar 2018 17:32:47 +0000 (01:32 +0800)
This patches uses the state size of the algorithms instead of their
digest size to copy the ipad and opad in the context. This doesn't fix
anything as the state and digest size are the same for many algorithms,
and for all the hmac currently supported by this driver. However
hmac(sha224) use the sha224 hash function which has a different digest
and state size. This commit prepares the addition of such algorithms.

Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/inside-secure/safexcel_hash.c

index d3ba935d02664ac8834e8cc374e39a4dd083c65a..31df97eec89a8f88627a2c316871fab09f4cccc3 100644 (file)
@@ -120,11 +120,11 @@ static void safexcel_context_control(struct safexcel_ahash_ctx *ctx,
                                ctx->base.ctxr->data[i] = cpu_to_le32(req->processed / blocksize);
                }
        } else if (req->digest == CONTEXT_CONTROL_DIGEST_HMAC) {
-               cdesc->control_data.control0 |= CONTEXT_CONTROL_SIZE(10);
+               cdesc->control_data.control0 |= CONTEXT_CONTROL_SIZE(2 * req->state_sz / sizeof(u32));
 
-               memcpy(ctx->base.ctxr->data, ctx->ipad, digestsize);
-               memcpy(ctx->base.ctxr->data + digestsize / sizeof(u32),
-                      ctx->opad, digestsize);
+               memcpy(ctx->base.ctxr->data, ctx->ipad, req->state_sz);
+               memcpy(ctx->base.ctxr->data + req->state_sz / sizeof(u32),
+                      ctx->opad, req->state_sz);
        }
 }