Date: Wed, 25 Mar 1998 10:09:38 +0200 (EET) From: ari@suutari.iki.fi To: FreeBSD-gnats-submit@FreeBSD.ORG Subject: misc/6127: MD5Final in libmd Message-ID: <199803250809.KAA07111@osku.suutari.iki.fi>
index | next in thread | raw e-mail
>Number: 6127
>Category: misc
>Synopsis: MD5Final in libmd
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Wed Mar 25 00:10:03 PST 1998
>Last-Modified:
>Originator: Ari Suutari
>Organization:
>Release: FreeBSD 2.2.5-RELEASE i386
>Environment:
>Description:
To be able to use libmd MD5 routines in my user-process
implementation of RFC1828, an additional routine
would be required to be able to pad key data in
same way as done by MD5Final.
>How-To-Repeat:
>Fix:
Split MD5Final into two functions: MD5Pad and MD5Final.
MD5Pad does the padding currently done by first part
of MD5Final. MD5Final would first call MD5Pad.
Like this:
void
MD5Final (digest, context)
unsigned char digest[16];
MD5_CTX *context;
{
/* Padding */
MD5Pad (context);
/* Store state in digest */
Encode (digest, context->state, 16);
/* Zeroize sensitive information. */
memset ((void *)context, 0, sizeof (*context));
}
void
MD5Pad (context)
MD5_CTX *context;
{
unsigned char bits[8];
unsigned int index, padLen;
/* Save number of bits */
Encode (bits, context->count, 8);
/* Pad out to 56 mod 64. */
index = (unsigned int)((context->count[0] >> 3) & 0x3f);
padLen = (index < 56) ? (56 - index) : (120 - index);
MD5Update (context, PADDING, padLen);
/* Append length (before padding) */
MD5Update (context, bits, 8);
}
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199803250809.KAA07111>
