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

Commit bf70fa9d authored by Tim Chen's avatar Tim Chen Committed by Herbert Xu
Browse files

crypto: sha512 - Expose generic sha512 routine to be callable from other modules



Other SHA512 routines may need to use the generic routine when
FPU is not available.

Signed-off-by: default avatarTim Chen <tim.c.chen@linux.intel.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 8275d1aa
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -163,8 +163,8 @@ sha384_init(struct shash_desc *desc)
	return 0;
}

static int
sha512_update(struct shash_desc *desc, const u8 *data, unsigned int len)
int crypto_sha512_update(struct shash_desc *desc, const u8 *data,
			unsigned int len)
{
	struct sha512_state *sctx = shash_desc_ctx(desc);

@@ -197,6 +197,7 @@ sha512_update(struct shash_desc *desc, const u8 *data, unsigned int len)

	return 0;
}
EXPORT_SYMBOL(crypto_sha512_update);

static int
sha512_final(struct shash_desc *desc, u8 *hash)
@@ -215,10 +216,10 @@ sha512_final(struct shash_desc *desc, u8 *hash)
	/* Pad out to 112 mod 128. */
	index = sctx->count[0] & 0x7f;
	pad_len = (index < 112) ? (112 - index) : ((128+112) - index);
	sha512_update(desc, padding, pad_len);
	crypto_sha512_update(desc, padding, pad_len);

	/* Append length (before padding) */
	sha512_update(desc, (const u8 *)bits, sizeof(bits));
	crypto_sha512_update(desc, (const u8 *)bits, sizeof(bits));

	/* Store state in digest */
	for (i = 0; i < 8; i++)
@@ -245,7 +246,7 @@ static int sha384_final(struct shash_desc *desc, u8 *hash)
static struct shash_alg sha512_algs[2] = { {
	.digestsize	=	SHA512_DIGEST_SIZE,
	.init		=	sha512_init,
	.update		=	sha512_update,
	.update		=	crypto_sha512_update,
	.final		=	sha512_final,
	.descsize	=	sizeof(struct sha512_state),
	.base		=	{
@@ -257,7 +258,7 @@ static struct shash_alg sha512_algs[2] = { {
}, {
	.digestsize	=	SHA384_DIGEST_SIZE,
	.init		=	sha384_init,
	.update		=	sha512_update,
	.update		=	crypto_sha512_update,
	.final		=	sha384_final,
	.descsize	=	sizeof(struct sha512_state),
	.base		=	{
+3 −0
Original line number Diff line number Diff line
@@ -89,4 +89,7 @@ extern int crypto_sha1_update(struct shash_desc *desc, const u8 *data,

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

extern int crypto_sha512_update(struct shash_desc *desc, const u8 *data,
			      unsigned int len);
#endif