All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
To: linux-crypto@vger.kernel.org
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>,
	Herbert Xu <herbert@gondor.apana.org.au>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Biggers <ebiggers@google.com>,
	linux-arm-kernel@lists.infradead.org,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Jason Wang <jasowang@redhat.com>,
	Gonglei <arei.gonglei@huawei.com>,
	virtualization@lists.linux-foundation.org
Subject: [PATCH v2 01/27] crypto: virtio - implement missing support for output IVs
Date: Thu, 24 Oct 2019 15:23:19 +0200	[thread overview]
Message-ID: <20191024132345.5236-2-ard.biesheuvel@linaro.org> (raw)
In-Reply-To: <20191024132345.5236-1-ard.biesheuvel@linaro.org>

In order to allow for CBC to be chained, which is something that the
CTS template relies upon, implementations of CBC need to pass the
IV to be used for subsequent invocations via the IV buffer. This was
not implemented yet for virtio-crypto so implement it now.

Fixes: dbaf0624ffa5 ("crypto: add virtio-crypto driver")
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Jason Wang <jasowang@redhat.com>
Cc: Gonglei <arei.gonglei@huawei.com>
Cc: virtualization@lists.linux-foundation.org
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
 drivers/crypto/virtio/virtio_crypto_algs.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/crypto/virtio/virtio_crypto_algs.c b/drivers/crypto/virtio/virtio_crypto_algs.c
index 42d19205166b..65ec10800137 100644
--- a/drivers/crypto/virtio/virtio_crypto_algs.c
+++ b/drivers/crypto/virtio/virtio_crypto_algs.c
@@ -437,6 +437,11 @@ __virtio_crypto_ablkcipher_do_req(struct virtio_crypto_sym_request *vc_sym_req,
 		goto free;
 	}
 	memcpy(iv, req->info, ivsize);
+	if (!vc_sym_req->encrypt)
+		scatterwalk_map_and_copy(req->info, req->src,
+					 req->nbytes - AES_BLOCK_SIZE,
+					 AES_BLOCK_SIZE, 0);
+
 	sg_init_one(&iv_sg, iv, ivsize);
 	sgs[num_out++] = &iv_sg;
 	vc_sym_req->iv = iv;
@@ -563,6 +568,10 @@ static void virtio_crypto_ablkcipher_finalize_req(
 	struct ablkcipher_request *req,
 	int err)
 {
+	if (vc_sym_req->encrypt)
+		scatterwalk_map_and_copy(req->info, req->dst,
+					 req->nbytes - AES_BLOCK_SIZE,
+					 AES_BLOCK_SIZE, 0);
 	crypto_finalize_ablkcipher_request(vc_sym_req->base.dataq->engine,
 					   req, err);
 	kzfree(vc_sym_req->iv);
-- 
2.20.1


WARNING: multiple messages have this Message-ID (diff)
From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
To: linux-crypto@vger.kernel.org
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>,
	Herbert Xu <herbert@gondor.apana.org.au>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Eric Biggers <ebiggers@google.com>,
	virtualization@lists.linux-foundation.org,
	"David S. Miller" <davem@davemloft.net>,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 01/27] crypto: virtio - implement missing support for output IVs
Date: Thu, 24 Oct 2019 15:23:19 +0200	[thread overview]
Message-ID: <20191024132345.5236-2-ard.biesheuvel@linaro.org> (raw)
In-Reply-To: <20191024132345.5236-1-ard.biesheuvel@linaro.org>

In order to allow for CBC to be chained, which is something that the
CTS template relies upon, implementations of CBC need to pass the
IV to be used for subsequent invocations via the IV buffer. This was
not implemented yet for virtio-crypto so implement it now.

Fixes: dbaf0624ffa5 ("crypto: add virtio-crypto driver")
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Jason Wang <jasowang@redhat.com>
Cc: Gonglei <arei.gonglei@huawei.com>
Cc: virtualization@lists.linux-foundation.org
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
 drivers/crypto/virtio/virtio_crypto_algs.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/crypto/virtio/virtio_crypto_algs.c b/drivers/crypto/virtio/virtio_crypto_algs.c
index 42d19205166b..65ec10800137 100644
--- a/drivers/crypto/virtio/virtio_crypto_algs.c
+++ b/drivers/crypto/virtio/virtio_crypto_algs.c
@@ -437,6 +437,11 @@ __virtio_crypto_ablkcipher_do_req(struct virtio_crypto_sym_request *vc_sym_req,
 		goto free;
 	}
 	memcpy(iv, req->info, ivsize);
+	if (!vc_sym_req->encrypt)
+		scatterwalk_map_and_copy(req->info, req->src,
+					 req->nbytes - AES_BLOCK_SIZE,
+					 AES_BLOCK_SIZE, 0);
+
 	sg_init_one(&iv_sg, iv, ivsize);
 	sgs[num_out++] = &iv_sg;
 	vc_sym_req->iv = iv;
@@ -563,6 +568,10 @@ static void virtio_crypto_ablkcipher_finalize_req(
 	struct ablkcipher_request *req,
 	int err)
 {
+	if (vc_sym_req->encrypt)
+		scatterwalk_map_and_copy(req->info, req->dst,
+					 req->nbytes - AES_BLOCK_SIZE,
+					 AES_BLOCK_SIZE, 0);
 	crypto_finalize_ablkcipher_request(vc_sym_req->base.dataq->engine,
 					   req, err);
 	kzfree(vc_sym_req->iv);
-- 
2.20.1

WARNING: multiple messages have this Message-ID (diff)
From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
To: linux-crypto@vger.kernel.org
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>,
	Herbert Xu <herbert@gondor.apana.org.au>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Jason Wang <jasowang@redhat.com>,
	Eric Biggers <ebiggers@google.com>,
	virtualization@lists.linux-foundation.org,
	Gonglei <arei.gonglei@huawei.com>,
	"David S. Miller" <davem@davemloft.net>,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 01/27] crypto: virtio - implement missing support for output IVs
Date: Thu, 24 Oct 2019 15:23:19 +0200	[thread overview]
Message-ID: <20191024132345.5236-2-ard.biesheuvel@linaro.org> (raw)
In-Reply-To: <20191024132345.5236-1-ard.biesheuvel@linaro.org>

In order to allow for CBC to be chained, which is something that the
CTS template relies upon, implementations of CBC need to pass the
IV to be used for subsequent invocations via the IV buffer. This was
not implemented yet for virtio-crypto so implement it now.

Fixes: dbaf0624ffa5 ("crypto: add virtio-crypto driver")
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Jason Wang <jasowang@redhat.com>
Cc: Gonglei <arei.gonglei@huawei.com>
Cc: virtualization@lists.linux-foundation.org
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
 drivers/crypto/virtio/virtio_crypto_algs.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/crypto/virtio/virtio_crypto_algs.c b/drivers/crypto/virtio/virtio_crypto_algs.c
index 42d19205166b..65ec10800137 100644
--- a/drivers/crypto/virtio/virtio_crypto_algs.c
+++ b/drivers/crypto/virtio/virtio_crypto_algs.c
@@ -437,6 +437,11 @@ __virtio_crypto_ablkcipher_do_req(struct virtio_crypto_sym_request *vc_sym_req,
 		goto free;
 	}
 	memcpy(iv, req->info, ivsize);
+	if (!vc_sym_req->encrypt)
+		scatterwalk_map_and_copy(req->info, req->src,
+					 req->nbytes - AES_BLOCK_SIZE,
+					 AES_BLOCK_SIZE, 0);
+
 	sg_init_one(&iv_sg, iv, ivsize);
 	sgs[num_out++] = &iv_sg;
 	vc_sym_req->iv = iv;
@@ -563,6 +568,10 @@ static void virtio_crypto_ablkcipher_finalize_req(
 	struct ablkcipher_request *req,
 	int err)
 {
+	if (vc_sym_req->encrypt)
+		scatterwalk_map_and_copy(req->info, req->dst,
+					 req->nbytes - AES_BLOCK_SIZE,
+					 AES_BLOCK_SIZE, 0);
 	crypto_finalize_ablkcipher_request(vc_sym_req->base.dataq->engine,
 					   req, err);
 	kzfree(vc_sym_req->iv);
-- 
2.20.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2019-10-24 13:23 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-24 13:23 [PATCH v2 00/27] crypto: convert h/w accelerator drivers to skcipher API Ard Biesheuvel
2019-10-24 13:23 ` Ard Biesheuvel
2019-10-24 13:23 ` Ard Biesheuvel [this message]
2019-10-24 13:23   ` [PATCH v2 01/27] crypto: virtio - implement missing support for output IVs Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23 ` [PATCH v2 02/27] crypto: virtio - deal with unsupported input sizes Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23 ` [PATCH v2 03/27] crypto: virtio - switch to skcipher API Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23 ` [PATCH v2 04/27] crypto: ccp - switch from ablkcipher to skcipher Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23 ` [PATCH v2 05/27] crypto: omap - switch to skcipher API Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:41   ` Tony Lindgren
2019-10-24 13:41     ` Tony Lindgren
2019-10-24 13:41     ` Tony Lindgren
2019-10-24 13:42     ` Ard Biesheuvel
2019-10-24 13:42       ` Ard Biesheuvel
2019-10-24 13:42       ` Ard Biesheuvel
2019-10-25  7:32       ` Tero Kristo
2019-10-25  7:32         ` Tero Kristo
2019-10-25  7:32         ` Tero Kristo
2019-10-25 10:19         ` Ard Biesheuvel
2019-10-25 10:19           ` Ard Biesheuvel
2019-10-25 10:19           ` Ard Biesheuvel
2019-10-24 13:23 ` [PATCH v2 06/27] crypto: ux500 " Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23 ` [PATCH v2 07/27] crypto: s5p " Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23 ` [PATCH v2 08/27] crypto: atmel-aes " Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23 ` [PATCH v2 09/27] crypto: atmel-tdes " Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23 ` [PATCH v2 10/27] crypto: bcm-spu " Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23 ` [PATCH v2 11/27] crypto: nitrox - remove cra_type reference to ablkcipher Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23 ` [PATCH v2 12/27] crypto: cavium/cpt - switch to skcipher API Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23 ` [PATCH v2 13/27] crypto: chelsio " Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23 ` [PATCH v2 14/27] crypto: hifn " Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23 ` [PATCH v2 15/27] crypto: ixp4xx " Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23 ` [PATCH v2 16/27] crypto: mxs " Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23 ` [PATCH v2 17/27] crypto: mediatek " Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23 ` [PATCH v2 18/27] crypto: sahara " Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23 ` [PATCH v2 19/27] crypto: picoxcell " Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23 ` [PATCH v2 20/27] crypto: qce " Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-27  9:51   ` Stanimir Varbanov
2019-10-27  9:51     ` Stanimir Varbanov
2019-10-24 13:23 ` [PATCH v2 21/27] crypto: stm32 " Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23 ` [PATCH v2 22/27] crypto: niagara2 " Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23 ` [PATCH v2 23/27] crypto: rockchip " Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23 ` [PATCH v2 24/27] crypto: talitos " Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-27 10:45   ` Christophe Leroy
2019-10-27 10:45     ` Christophe Leroy
2019-10-27 11:05     ` Ard Biesheuvel
2019-10-27 11:05       ` Ard Biesheuvel
2019-10-27 13:05       ` Christophe Leroy
2019-10-27 13:05         ` Christophe Leroy
2019-10-28  6:20         ` Ard Biesheuvel
2019-10-28  6:20           ` Ard Biesheuvel
2019-10-28 10:36           ` Christophe Leroy
2019-10-28 10:36             ` Christophe Leroy
2019-10-28 10:39             ` Ard Biesheuvel
2019-10-28 10:39               ` Ard Biesheuvel
2019-10-24 13:23 ` [PATCH v2 25/27] crypto: qat " Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23 ` [PATCH v2 26/27] crypto: marvell/cesa - rename blkcipher to skcipher Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel
2019-10-24 13:23 ` [PATCH v2 27/27] crypto: nx - remove stale comment referring to the blkcipher walk API Ard Biesheuvel
2019-10-24 13:23   ` Ard Biesheuvel

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=20191024132345.5236-2-ard.biesheuvel@linaro.org \
    --to=ard.biesheuvel@linaro.org \
    --cc=arei.gonglei@huawei.com \
    --cc=davem@davemloft.net \
    --cc=ebiggers@google.com \
    --cc=herbert@gondor.apana.org.au \
    --cc=jasowang@redhat.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-crypto@vger.kernel.org \
    --cc=mst@redhat.com \
    --cc=virtualization@lists.linux-foundation.org \
    /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.