Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7c390170 authored by Mathias Krause's avatar Mathias Krause Committed by Herbert Xu
Browse files

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: default avatarMathias Krause <minipli@googlemail.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent b64dc04b
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ static int sha1_init(struct shash_desc *desc)
	return 0;
}

static int sha1_update(struct shash_desc *desc, const u8 *data,
int crypto_sha1_update(struct shash_desc *desc, const u8 *data,
			unsigned int len)
{
	struct sha1_state *sctx = shash_desc_ctx(desc);
@@ -71,6 +71,7 @@ static int sha1_update(struct shash_desc *desc, const u8 *data,

	return 0;
}
EXPORT_SYMBOL(crypto_sha1_update);


/* Add padding and return the message digest. */
@@ -87,10 +88,10 @@ static int sha1_final(struct shash_desc *desc, u8 *out)
	/* Pad out to 56 mod 64 */
	index = sctx->count & 0x3f;
	padlen = (index < 56) ? (56 - index) : ((64+56) - index);
	sha1_update(desc, padding, padlen);
	crypto_sha1_update(desc, padding, padlen);

	/* Append length */
	sha1_update(desc, (const u8 *)&bits, sizeof(bits));
	crypto_sha1_update(desc, (const u8 *)&bits, sizeof(bits));

	/* Store state in digest */
	for (i = 0; i < 5; i++)
@@ -121,7 +122,7 @@ static int sha1_import(struct shash_desc *desc, const void *in)
static struct shash_alg alg = {
	.digestsize	=	SHA1_DIGEST_SIZE,
	.init		=	sha1_init,
	.update		=	sha1_update,
	.update		=	crypto_sha1_update,
	.final		=	sha1_final,
	.export		=	sha1_export,
	.import		=	sha1_import,
+3 −0
Original line number Diff line number Diff line
@@ -82,4 +82,7 @@ struct sha512_state {
	u8 buf[SHA512_BLOCK_SIZE];
};

extern int crypto_sha1_update(struct shash_desc *desc, const u8 *data,
			      unsigned int len);

#endif