summaryrefslogtreecommitdiff
path: root/crypto/sha512.c
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2006-05-16 16:09:29 +0400
committerHerbert Xu <herbert@gondor.apana.org.au>2006-06-26 11:34:39 +0400
commit6c2bb98bc33ae33c7a33a133a4cd5a06395fece5 (patch)
tree96684cd2c473cd05d651ce1fa3dd72b1b4b19b09 /crypto/sha512.c
parent43600106e32809a4dead79fec67a63e9860e3d5d (diff)
downloadlinux-6c2bb98bc33ae33c7a33a133a4cd5a06395fece5.tar.xz
[CRYPTO] all: Pass tfm instead of ctx to algorithms
Up until now algorithms have been happy to get a context pointer since they know everything that's in the tfm already (e.g., alignment, block size). However, once we have parameterised algorithms, such information will be specific to each tfm. So the algorithm API needs to be changed to pass the tfm structure instead of the context pointer. This patch is basically a text substitution. The only tricky bit is the assembly routines that need to get the context pointer offset through asm-offsets.h. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto/sha512.c')
-rw-r--r--crypto/sha512.c25
1 files changed, 12 insertions, 13 deletions
diff --git a/crypto/sha512.c b/crypto/sha512.c
index bc77a66d9de2..2dfe7f170b48 100644
--- a/crypto/sha512.c
+++ b/crypto/sha512.c
@@ -161,9 +161,9 @@ sha512_transform(u64 *state, u64 *W, const u8 *input)
}
static void
-sha512_init(void *ctx)
+sha512_init(struct crypto_tfm *tfm)
{
- struct sha512_ctx *sctx = ctx;
+ struct sha512_ctx *sctx = crypto_tfm_ctx(tfm);
sctx->state[0] = H0;
sctx->state[1] = H1;
sctx->state[2] = H2;
@@ -176,9 +176,9 @@ sha512_init(void *ctx)
}
static void
-sha384_init(void *ctx)
+sha384_init(struct crypto_tfm *tfm)
{
- struct sha512_ctx *sctx = ctx;
+ struct sha512_ctx *sctx = crypto_tfm_ctx(tfm);
sctx->state[0] = HP0;
sctx->state[1] = HP1;
sctx->state[2] = HP2;
@@ -191,9 +191,9 @@ sha384_init(void *ctx)
}
static void
-sha512_update(void *ctx, const u8 *data, unsigned int len)
+sha512_update(struct crypto_tfm *tfm, const u8 *data, unsigned int len)
{
- struct sha512_ctx *sctx = ctx;
+ struct sha512_ctx *sctx = crypto_tfm_ctx(tfm);
unsigned int i, index, part_len;
@@ -231,9 +231,9 @@ sha512_update(void *ctx, const u8 *data, unsigned int len)
}
static void
-sha512_final(void *ctx, u8 *hash)
+sha512_final(struct crypto_tfm *tfm, u8 *hash)
{
- struct sha512_ctx *sctx = ctx;
+ struct sha512_ctx *sctx = crypto_tfm_ctx(tfm);
static u8 padding[128] = { 0x80, };
__be64 *dst = (__be64 *)hash;
__be32 bits[4];
@@ -249,10 +249,10 @@ sha512_final(void *ctx, u8 *hash)
/* Pad out to 112 mod 128. */
index = (sctx->count[0] >> 3) & 0x7f;
pad_len = (index < 112) ? (112 - index) : ((128+112) - index);
- sha512_update(sctx, padding, pad_len);
+ sha512_update(tfm, padding, pad_len);
/* Append length (before padding) */
- sha512_update(sctx, (const u8 *)bits, sizeof(bits));
+ sha512_update(tfm, (const u8 *)bits, sizeof(bits));
/* Store state in digest */
for (i = 0; i < 8; i++)
@@ -262,12 +262,11 @@ sha512_final(void *ctx, u8 *hash)
memset(sctx, 0, sizeof(struct sha512_ctx));
}
-static void sha384_final(void *ctx, u8 *hash)
+static void sha384_final(struct crypto_tfm *tfm, u8 *hash)
{
- struct sha512_ctx *sctx = ctx;
u8 D[64];
- sha512_final(sctx, D);
+ sha512_final(tfm, D);
memcpy(hash, D, 48);
memset(D, 0, 64);