From: "Daniel P. Berrangé" <berrange@redhat.com>
To: "Cédric Le Goater" <clg@redhat.com>,
qemu-devel@nongnu.org, kris.conklin@seagate.com,
jonathan.henze@seagate.com, evan.burgess@seagate.com,
peter.maydell@linaro.org,
"Alejandro Zeise" <alejandro.zeise@seagate.com>
Subject: Re: [PATCH v5 05/16] crypto/hash-nettle: Implement new hash API
Date: Thu, 10 Oct 2024 12:43:19 +0100 [thread overview]
Message-ID: <Zwe91xD7yeSoiCB4@redhat.com> (raw)
In-Reply-To: <ZwexMpP8SidNul6G@redhat.com>
On Thu, Oct 10, 2024 at 11:49:22AM +0100, Daniel P. Berrangé wrote:
> On Tue, Oct 08, 2024 at 09:57:12AM +0200, Cédric Le Goater wrote:
> > From: Alejandro Zeise <alejandro.zeise@seagate.com>
> >
> > Implements the new hashing API in the nettle hash driver.
> > Supports creating/destroying a context, updating the context
> > with input data and obtaining an output hash.
> >
> > Signed-off-by: Alejandro Zeise <alejandro.zeise@seagate.com>
> > [ clg: - Dropped qcrypto_hash_supports() in qcrypto_nettle_hash_new() ]
> > Signed-off-by: Cédric Le Goater <clg@redhat.com>
> > ---
> > crypto/hash-nettle.c | 70 ++++++++++++++++++++++++++++++++++++++++++++
> > 1 file changed, 70 insertions(+)
>
> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
>
> >
> > diff --git a/crypto/hash-nettle.c b/crypto/hash-nettle.c
> > index 8b08a9c67531..07e18ce26cba 100644
> > --- a/crypto/hash-nettle.c
> > +++ b/crypto/hash-nettle.c
>
> > +static
> > +int qcrypto_nettle_hash_update(QCryptoHash *hash,
> > + const struct iovec *iov,
> > + size_t niov,
> > + Error **errp)
> > +{
> > + union qcrypto_hash_ctx *ctx = hash->opaque;
> > +
> > + for (int i = 0; i < niov; i++) {
> > + /*
> > + * Some versions of nettle have functions
> > + * declared with 'int' instead of 'size_t'
> > + * so to be safe avoid writing more than
> > + * UINT_MAX bytes at a time
> > + */
>
> This is copying the pre-existing code, and I've just
> realized this is now obsolete. We bumped min nettle
> to 3.4 ages ago and >= 3.0 is using size_t, so we can
> simplify now.
>
> No need to change this though. I'll do that as a
> distinct patch to make it a visible change.
>
> > + size_t len = iov[i].iov_len;
> > + uint8_t *base = iov[i].iov_base;
> > + while (len) {
> > + size_t shortlen = MIN(len, UINT_MAX);
> > + qcrypto_hash_alg_map[hash->alg].write(ctx, len, base);
> > + len -= shortlen;
> > + base += len;
> > + }
> > + }
> > +
> > + return 0;
> > +}
I'm going to add the following patch on the end of your series:
commit 638ae66c176f8077ccaac10028812e177224a99f
Author: Daniel P. Berrangé <berrange@redhat.com>
Date: Thu Oct 10 12:40:49 2024 +0100
crypto: drop obsolete back compat logic for old nettle
The nettle 2.x series declared all the hash functions with 'int' for
the data size. Since we dropped support for anything older than 3.4
we can assume nettle is using 'size_t' and thus avoid the back compat
looping logic.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
diff --git a/crypto/hash-nettle.c b/crypto/hash-nettle.c
index 570ce8a645..3b847aa60e 100644
--- a/crypto/hash-nettle.c
+++ b/crypto/hash-nettle.c
@@ -135,20 +135,9 @@ int qcrypto_nettle_hash_update(QCryptoHash *hash,
union qcrypto_hash_ctx *ctx = hash->opaque;
for (int i = 0; i < niov; i++) {
- /*
- * Some versions of nettle have functions
- * declared with 'int' instead of 'size_t'
- * so to be safe avoid writing more than
- * UINT_MAX bytes at a time
- */
- size_t len = iov[i].iov_len;
- uint8_t *base = iov[i].iov_base;
- while (len) {
- size_t shortlen = MIN(len, UINT_MAX);
- qcrypto_hash_alg_map[hash->alg].write(ctx, len, base);
- len -= shortlen;
- base += len;
- }
+ qcrypto_hash_alg_map[hash->alg].write(ctx,
+ iov[i].iov_len,
+ iov[i].iov_base);
}
return 0;
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2024-10-10 11:43 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-08 7:57 [PATCH v5 00/16] hw/misc/aspeed_hace: Fix SG Accumulative Hash Calculations Cédric Le Goater
2024-10-08 7:57 ` [PATCH v5 01/16] crypto: accumulative hashing API Cédric Le Goater
2024-10-10 10:09 ` Daniel P. Berrangé
2024-10-08 7:57 ` [PATCH v5 02/16] crypto/hash-glib: Implement new hash API Cédric Le Goater
2024-10-10 10:11 ` Daniel P. Berrangé
2024-10-08 7:57 ` [PATCH v5 03/16] crypto/hash-gcrypt: " Cédric Le Goater
2024-10-10 10:29 ` Daniel P. Berrangé
2024-10-08 7:57 ` [PATCH v5 04/16] crypto/hash-gnutls: " Cédric Le Goater
2024-10-10 10:36 ` Daniel P. Berrangé
2024-10-08 7:57 ` [PATCH v5 05/16] crypto/hash-nettle: " Cédric Le Goater
2024-10-10 10:49 ` Daniel P. Berrangé
2024-10-10 11:43 ` Daniel P. Berrangé [this message]
2024-10-10 12:01 ` Cédric Le Goater
2024-10-08 7:57 ` [PATCH v5 06/16] util/iov: Introduce iov_send_recv_with_flags() Cédric Le Goater
2024-10-10 10:51 ` Daniel P. Berrangé
2024-10-08 7:57 ` [PATCH v5 07/16] crypto/hash-afalg: Implement new hash API Cédric Le Goater
2024-10-10 11:16 ` Daniel P. Berrangé
2024-10-08 7:57 ` [PATCH v5 08/16] crypto/hash: Implement and use " Cédric Le Goater
2024-10-10 11:21 ` Daniel P. Berrangé
2024-10-08 7:57 ` [PATCH v5 09/16] tests/unit/test-crypto-hash: accumulative hashing Cédric Le Goater
2024-10-10 11:22 ` Daniel P. Berrangé
2024-10-08 7:57 ` [PATCH v5 10/16] crypto/hash-glib: Remove old hash API functions Cédric Le Goater
2024-10-08 7:57 ` [PATCH v5 11/16] crypto/hash-gcrypt: " Cédric Le Goater
2024-10-08 7:57 ` [PATCH v5 12/16] crypto/hash-gnutls: " Cédric Le Goater
2024-10-08 7:57 ` [PATCH v5 13/16] crypto/hash-nettle: " Cédric Le Goater
2024-10-08 7:57 ` [PATCH v5 14/16] crypto/hash-afalg: " Cédric Le Goater
2024-10-08 7:57 ` [PATCH v5 15/16] crypto/hashpriv: Remove old hash API function Cédric Le Goater
2024-10-08 7:57 ` [PATCH v5 16/16] hw/misc/aspeed_hace: Fix SG Accumulative hashing Cédric Le Goater
2024-10-10 11:25 ` Daniel P. Berrangé
2024-10-08 8:01 ` [PATCH v5 00/16] hw/misc/aspeed_hace: Fix SG Accumulative Hash Calculations Cédric Le Goater
2024-10-10 11:28 ` Daniel P. Berrangé
2024-10-10 11:40 ` Cédric Le Goater
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=Zwe91xD7yeSoiCB4@redhat.com \
--to=berrange@redhat.com \
--cc=alejandro.zeise@seagate.com \
--cc=clg@redhat.com \
--cc=evan.burgess@seagate.com \
--cc=jonathan.henze@seagate.com \
--cc=kris.conklin@seagate.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).