summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/crypto/sha2.h10
-rw-r--r--lib/crypto/sha256.c10
2 files changed, 18 insertions, 2 deletions
diff --git a/include/crypto/sha2.h b/include/crypto/sha2.h
index bb181b7996cd..e31da0743a52 100644
--- a/include/crypto/sha2.h
+++ b/include/crypto/sha2.h
@@ -114,18 +114,24 @@ struct sha512_state {
u8 buf[SHA512_BLOCK_SIZE];
};
+void sha256_update(struct sha256_state *sctx, const u8 *data, size_t len);
+
static inline void sha224_init(struct sha256_state *sctx)
{
sha224_block_init(&sctx->ctx);
}
-/* Simply use sha256_update as it is equivalent to sha224_update. */
+static inline void sha224_update(struct sha256_state *sctx,
+ const u8 *data, size_t len)
+{
+ sha256_update(sctx, data, len);
+}
void sha224_final(struct sha256_state *sctx, u8 out[SHA224_DIGEST_SIZE]);
+void sha224(const u8 *data, size_t len, u8 out[SHA224_DIGEST_SIZE]);
static inline void sha256_init(struct sha256_state *sctx)
{
sha256_block_init(&sctx->ctx);
}
-void sha256_update(struct sha256_state *sctx, const u8 *data, size_t len);
void sha256_final(struct sha256_state *sctx, u8 out[SHA256_DIGEST_SIZE]);
void sha256(const u8 *data, size_t len, u8 out[SHA256_DIGEST_SIZE]);
diff --git a/lib/crypto/sha256.c b/lib/crypto/sha256.c
index 573ccecbf48b..ccaae7088016 100644
--- a/lib/crypto/sha256.c
+++ b/lib/crypto/sha256.c
@@ -70,6 +70,16 @@ void sha256_final(struct sha256_state *sctx, u8 out[SHA256_DIGEST_SIZE])
}
EXPORT_SYMBOL(sha256_final);
+void sha224(const u8 *data, size_t len, u8 out[SHA224_DIGEST_SIZE])
+{
+ struct sha256_state sctx;
+
+ sha224_init(&sctx);
+ sha224_update(&sctx, data, len);
+ sha224_final(&sctx, out);
+}
+EXPORT_SYMBOL(sha224);
+
void sha256(const u8 *data, size_t len, u8 out[SHA256_DIGEST_SIZE])
{
struct sha256_state sctx;