Blob Blame History Raw
From: Eric Biggers <ebiggers@google.com>
Date: Wed, 8 Jul 2020 09:39:40 -0700
Subject: crypto: lib/sha256 - add sha256() function
Patch-mainline: v5.9-rc1
Git-commit: 9ea9c58b40a441a0babef8c615acedcfb3733919
References: jsc#SLE-16407

Add a function sha256() which computes a SHA-256 digest in one step,
combining sha256_init() + sha256_update() + sha256_final().

This is similar to how we also have blake2s().

Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
Tested-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Acked-by: Lee, Chun-Yi <jlee@suse.com>
---
 include/crypto/sha.h |    1 +
 lib/crypto/sha256.c  |   10 ++++++++++
 2 files changed, 11 insertions(+)

--- a/include/crypto/sha.h
+++ b/include/crypto/sha.h
@@ -137,6 +137,7 @@ static inline void sha256_init(struct sh
 }
 void sha256_update(struct sha256_state *sctx, const u8 *data, unsigned int len);
 void sha256_final(struct sha256_state *sctx, u8 *out);
+void sha256(const u8 *data, unsigned int len, u8 *out);
 
 static inline void sha224_init(struct sha256_state *sctx)
 {
--- a/lib/crypto/sha256.c
+++ b/lib/crypto/sha256.c
@@ -280,4 +280,14 @@ void sha224_final(struct sha256_state *s
 }
 EXPORT_SYMBOL(sha224_final);
 
+void sha256(const u8 *data, unsigned int len, u8 *out)
+{
+	struct sha256_state sctx;
+
+	sha256_init(&sctx);
+	sha256_update(&sctx, data, len);
+	sha256_final(&sctx, out);
+}
+EXPORT_SYMBOL(sha256);
+
 MODULE_LICENSE("GPL");