crypto: sha256 - Remove sha256/224_init code duplication
authorHans de Goede <hdegoede@redhat.com>
Sun, 1 Sep 2019 20:35:32 +0000 (22:35 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 5 Sep 2019 04:54:54 +0000 (14:54 +1000)
lib/crypto/sha256.c and include/crypto/sha256_base.h define
99% identical functions to init a sha256_state struct for sha224 or
sha256 use.

This commit moves the functions from lib/crypto/sha256.c to
include/crypto/sha.h (making them static inline) and makes the
sha224/256_base_init static inline functions from
include/crypto/sha256_base.h wrappers around the now also
static inline include/crypto/sha.h functions.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
include/crypto/sha.h
include/crypto/sha256_base.h
lib/crypto/sha256.c

index 535955c84187a904343c8ac941e91a07a16f799a..5c2132c7190095bc941dbd2b335234d8d9e12f22 100644 (file)
@@ -123,12 +123,38 @@ extern int crypto_sha512_finup(struct shash_desc *desc, const u8 *data,
  * For details see lib/crypto/sha256.c
  */
 
-extern int sha256_init(struct sha256_state *sctx);
+static inline int sha256_init(struct sha256_state *sctx)
+{
+       sctx->state[0] = SHA256_H0;
+       sctx->state[1] = SHA256_H1;
+       sctx->state[2] = SHA256_H2;
+       sctx->state[3] = SHA256_H3;
+       sctx->state[4] = SHA256_H4;
+       sctx->state[5] = SHA256_H5;
+       sctx->state[6] = SHA256_H6;
+       sctx->state[7] = SHA256_H7;
+       sctx->count = 0;
+
+       return 0;
+}
 extern int sha256_update(struct sha256_state *sctx, const u8 *input,
                         unsigned int length);
 extern int sha256_final(struct sha256_state *sctx, u8 *hash);
 
-extern int sha224_init(struct sha256_state *sctx);
+static inline int sha224_init(struct sha256_state *sctx)
+{
+       sctx->state[0] = SHA224_H0;
+       sctx->state[1] = SHA224_H1;
+       sctx->state[2] = SHA224_H2;
+       sctx->state[3] = SHA224_H3;
+       sctx->state[4] = SHA224_H4;
+       sctx->state[5] = SHA224_H5;
+       sctx->state[6] = SHA224_H6;
+       sctx->state[7] = SHA224_H7;
+       sctx->count = 0;
+
+       return 0;
+}
 extern int sha224_update(struct sha256_state *sctx, const u8 *input,
                         unsigned int length);
 extern int sha224_final(struct sha256_state *sctx, u8 *hash);
index b50a035a2bc789fb6351993d999587f17d0b715d..cea60cff80bd870f5c9153d07277e2d47919b413 100644 (file)
@@ -22,34 +22,14 @@ static inline int sha224_base_init(struct shash_desc *desc)
 {
        struct sha256_state *sctx = shash_desc_ctx(desc);
 
-       sctx->state[0] = SHA224_H0;
-       sctx->state[1] = SHA224_H1;
-       sctx->state[2] = SHA224_H2;
-       sctx->state[3] = SHA224_H3;
-       sctx->state[4] = SHA224_H4;
-       sctx->state[5] = SHA224_H5;
-       sctx->state[6] = SHA224_H6;
-       sctx->state[7] = SHA224_H7;
-       sctx->count = 0;
-
-       return 0;
+       return sha224_init(sctx);
 }
 
 static inline int sha256_base_init(struct shash_desc *desc)
 {
        struct sha256_state *sctx = shash_desc_ctx(desc);
 
-       sctx->state[0] = SHA256_H0;
-       sctx->state[1] = SHA256_H1;
-       sctx->state[2] = SHA256_H2;
-       sctx->state[3] = SHA256_H3;
-       sctx->state[4] = SHA256_H4;
-       sctx->state[5] = SHA256_H5;
-       sctx->state[6] = SHA256_H6;
-       sctx->state[7] = SHA256_H7;
-       sctx->count = 0;
-
-       return 0;
+       return sha256_init(sctx);
 }
 
 static inline int sha256_base_do_update(struct shash_desc *desc,
index 220b74c2bbd8c628406d71ad9a740181c80ca160..66cb04b0cf4e7e57ad1b241c134c02ea99f454ca 100644 (file)
@@ -206,38 +206,6 @@ static void sha256_transform(u32 *state, const u8 *input)
        memzero_explicit(W, 64 * sizeof(u32));
 }
 
-int sha256_init(struct sha256_state *sctx)
-{
-       sctx->state[0] = SHA256_H0;
-       sctx->state[1] = SHA256_H1;
-       sctx->state[2] = SHA256_H2;
-       sctx->state[3] = SHA256_H3;
-       sctx->state[4] = SHA256_H4;
-       sctx->state[5] = SHA256_H5;
-       sctx->state[6] = SHA256_H6;
-       sctx->state[7] = SHA256_H7;
-       sctx->count = 0;
-
-       return 0;
-}
-EXPORT_SYMBOL(sha256_init);
-
-int sha224_init(struct sha256_state *sctx)
-{
-       sctx->state[0] = SHA224_H0;
-       sctx->state[1] = SHA224_H1;
-       sctx->state[2] = SHA224_H2;
-       sctx->state[3] = SHA224_H3;
-       sctx->state[4] = SHA224_H4;
-       sctx->state[5] = SHA224_H5;
-       sctx->state[6] = SHA224_H6;
-       sctx->state[7] = SHA224_H7;
-       sctx->count = 0;
-
-       return 0;
-}
-EXPORT_SYMBOL(sha224_init);
-
 int sha256_update(struct sha256_state *sctx, const u8 *data, unsigned int len)
 {
        unsigned int partial, done;