summaryrefslogtreecommitdiff
path: root/cipher/md5.c
diff options
context:
space:
mode:
Diffstat (limited to 'cipher/md5.c')
-rw-r--r--cipher/md5.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/cipher/md5.c b/cipher/md5.c
index 9857f2c8..88745a81 100644
--- a/cipher/md5.c
+++ b/cipher/md5.c
@@ -48,7 +48,7 @@ typedef struct {
u32 A,B,C,D; /* chaining variables */
} MD5_CONTEXT;
-static void
+static unsigned int
transform ( void *ctx, const unsigned char *data );
static void
@@ -64,7 +64,6 @@ md5_init( void *context )
ctx->bctx.nblocks = 0;
ctx->bctx.count = 0;
ctx->bctx.blocksize = 64;
- ctx->bctx.stack_burn = 80+6*sizeof(void*);
ctx->bctx.bwrite = transform;
}
@@ -82,7 +81,7 @@ md5_init( void *context )
/****************
* transform n*64 bytes
*/
-static void
+static unsigned int
transform ( void *c, const unsigned char *data )
{
MD5_CONTEXT *ctx = c;
@@ -213,6 +212,8 @@ transform ( void *c, const unsigned char *data )
ctx->B += B;
ctx->C += C;
ctx->D += D;
+
+ return /*burn_stack*/ 80+6*sizeof(void*);
}
@@ -229,6 +230,7 @@ md5_final( void *context)
MD5_CONTEXT *hd = context;
u32 t, msb, lsb;
byte *p;
+ unsigned int burn;
_gcry_md_block_write(hd, NULL, 0); /* flush */;
@@ -269,8 +271,8 @@ md5_final( void *context)
hd->bctx.buf[61] = msb >> 8;
hd->bctx.buf[62] = msb >> 16;
hd->bctx.buf[63] = msb >> 24;
- transform( hd, hd->bctx.buf );
- _gcry_burn_stack (80+6*sizeof(void*));
+ burn = transform( hd, hd->bctx.buf );
+ _gcry_burn_stack (burn);
p = hd->bctx.buf;
#ifdef WORDS_BIGENDIAN