From 3534b428629be185e096be99e3bd5fdfe32d5544 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Thu, 18 Sep 2014 18:55:44 +0000 Subject: initial commit with rc for skalibs-2.0.0.0 --- src/libstdcrypto/md5_final.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/libstdcrypto/md5_final.c (limited to 'src/libstdcrypto/md5_final.c') diff --git a/src/libstdcrypto/md5_final.c b/src/libstdcrypto/md5_final.c new file mode 100644 index 0000000..834d57c --- /dev/null +++ b/src/libstdcrypto/md5_final.c @@ -0,0 +1,30 @@ +/* ISC license. */ + +#include +#include +#include +#include "md5-internal.h" + +void md5_final (MD5Schedule_ref ctx, char *digest /* 16 chars */) +{ + register unsigned int count = (ctx->bits[0] >> 3) & 0x3F ; + register unsigned char *p = ctx->in + count ; + *p++ = 0x80; + count = 63 - count ; + if (count < 8) + { + byte_zero(p, count) ; + uint32_little_endian((char *)ctx->in, 16) ; + md5_transform(ctx->buf, (uint32 *)ctx->in) ; + byte_zero(ctx->in, 56) ; + } + else byte_zero(p, count - 8) ; + uint32_little_endian((char *)ctx->in, 14) ; + + byte_copy(ctx->in + 56, 4, (char *)&ctx->bits[0]) ; + byte_copy(ctx->in + 60, 4, (char *)&ctx->bits[1]) ; + + md5_transform(ctx->buf, (uint32 *)ctx->in) ; + uint32_little_endian((char *)ctx->buf, 4) ; + byte_copy(digest, 16, (char *)ctx->buf) ; +} -- cgit v1.2.3