]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
crypto: arm64/nhpoly1305 - implement ->digest
authorEric Biggers <ebiggers@google.com>
Tue, 10 Oct 2023 05:59:45 +0000 (22:59 -0700)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 20 Oct 2023 05:39:25 +0000 (13:39 +0800)
Implement the ->digest method to improve performance on single-page
messages by reducing the number of indirect calls.

Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/arm64/crypto/nhpoly1305-neon-glue.c

index cd882c35d9252d8608d69e4fe0d9d6978681fb37..e4a0b463f080e0a095293ac101103f2cd59f49ac 100644 (file)
@@ -34,6 +34,14 @@ static int nhpoly1305_neon_update(struct shash_desc *desc,
        return 0;
 }
 
+static int nhpoly1305_neon_digest(struct shash_desc *desc,
+                                 const u8 *src, unsigned int srclen, u8 *out)
+{
+       return crypto_nhpoly1305_init(desc) ?:
+              nhpoly1305_neon_update(desc, src, srclen) ?:
+              crypto_nhpoly1305_final(desc, out);
+}
+
 static struct shash_alg nhpoly1305_alg = {
        .base.cra_name          = "nhpoly1305",
        .base.cra_driver_name   = "nhpoly1305-neon",
@@ -44,6 +52,7 @@ static struct shash_alg nhpoly1305_alg = {
        .init                   = crypto_nhpoly1305_init,
        .update                 = nhpoly1305_neon_update,
        .final                  = crypto_nhpoly1305_final,
+       .digest                 = nhpoly1305_neon_digest,
        .setkey                 = crypto_nhpoly1305_setkey,
        .descsize               = sizeof(struct nhpoly1305_state),
 };