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>
next in thread | raw e-mail | index | archive | help
>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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199803250809.KAA07111>