From: Antoine Tenart <antoine.tenart@bootlin.com>
To: Pascal van Leeuwen <pascalvanl@gmail.com>
Cc: linux-crypto@vger.kernel.org, antoine.tenart@bootlin.com,
herbert@gondor.apana.org.au, davem@davemloft.net,
Pascal van Leeuwen <pvanleeuwen@verimatrix.com>
Subject: Re: [PATCH 2/3] crypto: inside-secure - Added support for HMAC-SM3 ahash
Date: Wed, 11 Sep 2019 16:41:59 +0100 [thread overview]
Message-ID: <20190911154159.GD5492@kwain> (raw)
In-Reply-To: <1568187671-8540-3-git-send-email-pvanleeuwen@verimatrix.com>
On Wed, Sep 11, 2019 at 09:41:10AM +0200, Pascal van Leeuwen wrote:
> Added support for the hmac(sm3) ahash authentication algorithm
>
> Signed-off-by: Pascal van Leeuwen <pvanleeuwen@verimatrix.com>
Acked-by: Antoine Tenart <antoine.tenart@bootlin.com>
Thanks!
Antoine
> ---
> drivers/crypto/inside-secure/safexcel.c | 1 +
> drivers/crypto/inside-secure/safexcel.h | 1 +
> drivers/crypto/inside-secure/safexcel_hash.c | 70 ++++++++++++++++++++++++++++
> 3 files changed, 72 insertions(+)
>
> diff --git a/drivers/crypto/inside-secure/safexcel.c b/drivers/crypto/inside-secure/safexcel.c
> index 826d1fb..7d907d5 100644
> --- a/drivers/crypto/inside-secure/safexcel.c
> +++ b/drivers/crypto/inside-secure/safexcel.c
> @@ -1177,6 +1177,7 @@ static int safexcel_request_ring_irq(void *pdev, int irqid,
> &safexcel_alg_chachapoly,
> &safexcel_alg_chachapoly_esp,
> &safexcel_alg_sm3,
> + &safexcel_alg_hmac_sm3,
> };
>
> static int safexcel_register_algorithms(struct safexcel_crypto_priv *priv)
> diff --git a/drivers/crypto/inside-secure/safexcel.h b/drivers/crypto/inside-secure/safexcel.h
> index fc2aba2..7ee09fe 100644
> --- a/drivers/crypto/inside-secure/safexcel.h
> +++ b/drivers/crypto/inside-secure/safexcel.h
> @@ -871,5 +871,6 @@ int safexcel_hmac_setkey(const char *alg, const u8 *key, unsigned int keylen,
> extern struct safexcel_alg_template safexcel_alg_chachapoly;
> extern struct safexcel_alg_template safexcel_alg_chachapoly_esp;
> extern struct safexcel_alg_template safexcel_alg_sm3;
> +extern struct safexcel_alg_template safexcel_alg_hmac_sm3;
>
> #endif
> diff --git a/drivers/crypto/inside-secure/safexcel_hash.c b/drivers/crypto/inside-secure/safexcel_hash.c
> index a4107bb..fdf4bcc 100644
> --- a/drivers/crypto/inside-secure/safexcel_hash.c
> +++ b/drivers/crypto/inside-secure/safexcel_hash.c
> @@ -2280,3 +2280,73 @@ struct safexcel_alg_template safexcel_alg_sm3 = {
> },
> },
> };
> +
> +static int safexcel_hmac_sm3_setkey(struct crypto_ahash *tfm, const u8 *key,
> + unsigned int keylen)
> +{
> + return safexcel_hmac_alg_setkey(tfm, key, keylen, "safexcel-sm3",
> + SM3_DIGEST_SIZE);
> +}
> +
> +static int safexcel_hmac_sm3_init(struct ahash_request *areq)
> +{
> + struct safexcel_ahash_ctx *ctx = crypto_ahash_ctx(crypto_ahash_reqtfm(areq));
> + struct safexcel_ahash_req *req = ahash_request_ctx(areq);
> +
> + memset(req, 0, sizeof(*req));
> +
> + /* Start from ipad precompute */
> + memcpy(req->state, ctx->ipad, SM3_DIGEST_SIZE);
> + /* Already processed the key^ipad part now! */
> + req->len = SM3_BLOCK_SIZE;
> + req->processed = SM3_BLOCK_SIZE;
> +
> + ctx->alg = CONTEXT_CONTROL_CRYPTO_ALG_SM3;
> + req->digest = CONTEXT_CONTROL_DIGEST_PRECOMPUTED;
> + req->state_sz = SM3_DIGEST_SIZE;
> + req->block_sz = SM3_BLOCK_SIZE;
> + req->hmac = true;
> +
> + return 0;
> +}
> +
> +static int safexcel_hmac_sm3_digest(struct ahash_request *areq)
> +{
> + int ret = safexcel_hmac_sm3_init(areq);
> +
> + if (ret)
> + return ret;
> +
> + return safexcel_ahash_finup(areq);
> +}
> +
> +struct safexcel_alg_template safexcel_alg_hmac_sm3 = {
> + .type = SAFEXCEL_ALG_TYPE_AHASH,
> + .algo_mask = SAFEXCEL_ALG_SM3,
> + .alg.ahash = {
> + .init = safexcel_hmac_sm3_init,
> + .update = safexcel_ahash_update,
> + .final = safexcel_ahash_final,
> + .finup = safexcel_ahash_finup,
> + .digest = safexcel_hmac_sm3_digest,
> + .setkey = safexcel_hmac_sm3_setkey,
> + .export = safexcel_ahash_export,
> + .import = safexcel_ahash_import,
> + .halg = {
> + .digestsize = SM3_DIGEST_SIZE,
> + .statesize = sizeof(struct safexcel_ahash_export_state),
> + .base = {
> + .cra_name = "hmac(sm3)",
> + .cra_driver_name = "safexcel-hmac-sm3",
> + .cra_priority = SAFEXCEL_CRA_PRIORITY,
> + .cra_flags = CRYPTO_ALG_ASYNC |
> + CRYPTO_ALG_KERN_DRIVER_ONLY,
> + .cra_blocksize = SM3_BLOCK_SIZE,
> + .cra_ctxsize = sizeof(struct safexcel_ahash_ctx),
> + .cra_init = safexcel_ahash_cra_init,
> + .cra_exit = safexcel_ahash_cra_exit,
> + .cra_module = THIS_MODULE,
> + },
> + },
> + },
> +};
> --
> 1.8.3.1
>
--
Antoine Ténart, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
next prev parent reply other threads:[~2019-09-11 15:42 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-11 7:41 [PATCH 0/3] crypto: inside-secure - Add support for (HMAC) SM3 Pascal van Leeuwen
2019-09-11 7:41 ` [PATCH 1/3] crypto: inside-secure - Added support for basic SM3 ahash Pascal van Leeuwen
2019-09-11 15:40 ` Antoine Tenart
2019-09-11 15:47 ` Pascal Van Leeuwen
2019-09-11 15:52 ` Antoine Tenart
2019-09-11 7:41 ` [PATCH 2/3] crypto: inside-secure - Added support for HMAC-SM3 ahash Pascal van Leeuwen
2019-09-11 15:41 ` Antoine Tenart [this message]
2019-09-11 7:41 ` [PATCH 3/3] crypto: testmgr - Added testvectors for the hmac(sm3) ahash Pascal van Leeuwen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190911154159.GD5492@kwain \
--to=antoine.tenart@bootlin.com \
--cc=davem@davemloft.net \
--cc=herbert@gondor.apana.org.au \
--cc=linux-crypto@vger.kernel.org \
--cc=pascalvanl@gmail.com \
--cc=pvanleeuwen@verimatrix.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.