Commit 7c390170b49337477985be7a624015160ffeb056

Authored by Mathias Krause
Committed by Herbert Xu
1 parent b64dc04beb

crypto: sha1 - export sha1_update for reuse

Export the update function as crypto_sha1_update() to not have the need
to reimplement the same algorithm for each SHA-1 implementation. This
way the generic SHA-1 implementation can be used as fallback for other
implementations that fail to run under certain circumstances, like the
need for an FPU context while executing in IRQ context.

Signed-off-by: Mathias Krause <minipli@googlemail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

Showing 2 changed files with 8 additions and 4 deletions Side-by-side Diff

crypto/sha1_generic.c
... ... @@ -36,7 +36,7 @@
36 36 return 0;
37 37 }
38 38  
39   -static int sha1_update(struct shash_desc *desc, const u8 *data,
  39 +int crypto_sha1_update(struct shash_desc *desc, const u8 *data,
40 40 unsigned int len)
41 41 {
42 42 struct sha1_state *sctx = shash_desc_ctx(desc);
... ... @@ -71,6 +71,7 @@
71 71  
72 72 return 0;
73 73 }
  74 +EXPORT_SYMBOL(crypto_sha1_update);
74 75  
75 76  
76 77 /* Add padding and return the message digest. */
77 78  
... ... @@ -87,10 +88,10 @@
87 88 /* Pad out to 56 mod 64 */
88 89 index = sctx->count & 0x3f;
89 90 padlen = (index < 56) ? (56 - index) : ((64+56) - index);
90   - sha1_update(desc, padding, padlen);
  91 + crypto_sha1_update(desc, padding, padlen);
91 92  
92 93 /* Append length */
93   - sha1_update(desc, (const u8 *)&bits, sizeof(bits));
  94 + crypto_sha1_update(desc, (const u8 *)&bits, sizeof(bits));
94 95  
95 96 /* Store state in digest */
96 97 for (i = 0; i < 5; i++)
... ... @@ -121,7 +122,7 @@
121 122 static struct shash_alg alg = {
122 123 .digestsize = SHA1_DIGEST_SIZE,
123 124 .init = sha1_init,
124   - .update = sha1_update,
  125 + .update = crypto_sha1_update,
125 126 .final = sha1_final,
126 127 .export = sha1_export,
127 128 .import = sha1_import,
include/crypto/sha.h
... ... @@ -82,5 +82,8 @@
82 82 u8 buf[SHA512_BLOCK_SIZE];
83 83 };
84 84  
  85 +extern int crypto_sha1_update(struct shash_desc *desc, const u8 *data,
  86 + unsigned int len);
  87 +
85 88 #endif