diff options
author | Todd C. Miller <millert@cvs.openbsd.org> | 2004-04-28 16:57:11 +0000 |
---|---|---|
committer | Todd C. Miller <millert@cvs.openbsd.org> | 2004-04-28 16:57:11 +0000 |
commit | 9beaaf55421d1fd31ea92c1fabd917466089ea0b (patch) | |
tree | ed7900d70d4fa94b1c9ef38c12f6e2b686edec33 /lib/libc | |
parent | 570c37b2720c9e67ee3fd9a03077130f74643ad4 (diff) |
Remove old md[45]
Diffstat (limited to 'lib/libc')
-rw-r--r-- | lib/libc/md/Makefile.inc | 34 | ||||
-rw-r--r-- | lib/libc/md/md4.copyright | 20 | ||||
-rw-r--r-- | lib/libc/md/md4c.c | 279 | ||||
-rw-r--r-- | lib/libc/md/md5.copyright | 21 | ||||
-rw-r--r-- | lib/libc/md/md5c.c | 312 | ||||
-rw-r--r-- | lib/libc/md/mdX.3 | 189 | ||||
-rw-r--r-- | lib/libc/md/mdXhl.c | 72 |
7 files changed, 0 insertions, 927 deletions
diff --git a/lib/libc/md/Makefile.inc b/lib/libc/md/Makefile.inc deleted file mode 100644 index 9bf58fdaae1..00000000000 --- a/lib/libc/md/Makefile.inc +++ /dev/null @@ -1,34 +0,0 @@ -# $OpenBSD: Makefile.inc,v 1.7 2000/03/28 23:07:25 deraadt Exp $ - -.PATH: ${LIBCSRCDIR}/md - -SRCS+= md4c.c md5c.c md4hl.c md5hl.c - -MAN+= md4.3 md5.3 -MLINKS+=md4.3 MD4Init.3 md4.3 MD4Update.3 md4.3 MD4Final.3 -MLINKS+=md4.3 MD4End.3 md4.3 MD4File.3 md4.3 MD4Data.3 -MLINKS+=md4.3 MD4Transform.3 -MLINKS+=md5.3 MD5Init.3 md5.3 MD5Update.3 md5.3 MD5Final.3 -MLINKS+=md5.3 MD5End.3 md5.3 MD5File.3 md5.3 MD5Data.3 -MLINKS+=md5.3 MD5Transform.3 -CLEANFILES+= md[45]hl.c md[45].3 - -.if !defined(NOMAN) -all: md4.3 md5.3 - -md4.3: mdX.3 - sed -e 's/mdX/md4/g' -e 's/mdY/md5/g' -e 's/MDX/MD4/g' $> > $@ - cat ${>:H}/md4.copyright >> $@ - -md5.3: mdX.3 - sed -e 's/mdX/md5/g' -e 's/mdY/md4/g' -e 's/MDX/MD5/g' $> > $@ - cat ${>:H}/md5.copyright >> $@ -.endif - -md4hl.c: mdXhl.c - sed -e 's/mdX/md4/g' -e 's/MDX/MD4/g' $> > $@ - -md5hl.c: mdXhl.c - sed -e 's/mdX/md5/g' -e 's/MDX/MD5/g' $> > $@ - -beforedepend: md4hl.c md5hl.c diff --git a/lib/libc/md/md4.copyright b/lib/libc/md/md4.copyright deleted file mode 100644 index 7623cfa54d0..00000000000 --- a/lib/libc/md/md4.copyright +++ /dev/null @@ -1,20 +0,0 @@ -.\" $OpenBSD: md4.copyright,v 1.2 1996/10/15 22:00:10 millert Exp $ -Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All -rights reserved. -.Pp -License to copy and use this software is granted provided that it -is identified as the "RSA Data Security, Inc. MD4 Message-Digest -Algorithm" in all material mentioning or referencing this software -or this function. -License is also granted to make and use derivative works provided -that such works are identified as "derived from the RSA Data -Security, Inc. MD4 Message-Digest Algorithm" in all material -mentioning or referencing the derived work. -.Pp -RSA Data Security, Inc. makes no representations concerning either -the merchantability of this software or the suitability of this -software for any particular purpose. It is provided "as is" -without express or implied warranty of any kind. -.Pp -These notices must be retained in any copies of any part of this -documentation and/or software. diff --git a/lib/libc/md/md4c.c b/lib/libc/md/md4c.c deleted file mode 100644 index 968a3dfa815..00000000000 --- a/lib/libc/md/md4c.c +++ /dev/null @@ -1,279 +0,0 @@ -/* MD4C.C - RSA Data Security, Inc., MD4 message-digest algorithm */ - -/* Copyright (C) 1990-2, RSA Data Security, Inc. All rights reserved. - - License to copy and use this software is granted provided that it - is identified as the "RSA Data Security, Inc. MD4 Message-Digest - Algorithm" in all material mentioning or referencing this software - or this function. - - License is also granted to make and use derivative works provided - that such works are identified as "derived from the RSA Data - Security, Inc. MD4 Message-Digest Algorithm" in all material - mentioning or referencing the derived work. - - RSA Data Security, Inc. makes no representations concerning either - the merchantability of this software or the suitability of this - software for any particular purpose. It is provided "as is" - without express or implied warranty of any kind. - - These notices must be retained in any copies of any part of this - documentation and/or software. - */ - -#if defined(LIBC_SCCS) && !defined(lint) -static char rcsid[] = "$OpenBSD: md4c.c,v 1.14 2002/12/23 04:33:31 millert Exp $"; -#endif /* LIBC_SCCS and not lint */ - -#include <string.h> -#include <sys/types.h> -#include <md4.h> - -/* POINTER defines a generic pointer type */ -typedef unsigned char *POINTER; - -/* Constants for MD4Transform routine. - */ -#define S11 3 -#define S12 7 -#define S13 11 -#define S14 19 -#define S21 3 -#define S22 5 -#define S23 9 -#define S24 13 -#define S31 3 -#define S32 9 -#define S33 11 -#define S34 15 - -#if BYTE_ORDER == LITTLE_ENDIAN -#define Encode memcpy -#define Decode memcpy -#else /* BIG_ENDIAN */ -static void Encode(void *, const void *, size_t); -static void Decode(void *, const void *, size_t); -#endif /* LITTLE_ENDIAN */ - -static unsigned char PADDING[64] = { - 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; - -/* F, G and H are basic MD4 functions. - */ -#define F(x, y, z) (((x) & (y)) | ((~x) & (z))) -#define G(x, y, z) (((x) & (y)) | ((x) & (z)) | ((y) & (z))) -#define H(x, y, z) ((x) ^ (y) ^ (z)) - -/* ROTATE_LEFT rotates x left n bits. - */ -#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n)))) - -/* FF, GG and HH are transformations for rounds 1, 2 and 3 */ -/* Rotation is separate from addition to prevent recomputation */ -#define FF(a, b, c, d, x, s) do { \ - (a) += F ((b), (c), (d)) + (x); \ - (a) = ROTATE_LEFT((a), (s)); \ -} while (0) - -#define GG(a, b, c, d, x, s) do { \ - (a) += G ((b), (c), (d)) + (x) + (u_int32_t)0x5a827999; \ - (a) = ROTATE_LEFT((a), (s)); \ -} while (0) - -#define HH(a, b, c, d, x, s) do { \ - (a) += H ((b), (c), (d)) + (x) + (u_int32_t)0x6ed9eba1; \ - (a) = ROTATE_LEFT((a), (s)); \ -} while (0) - -#if BYTE_ORDER != LITTLE_ENDIAN -/* Encodes input (u_int32_t) into output (unsigned char). Assumes len is - a multiple of 4. - */ -static void -Encode(void *out, const void *in, size_t len) -{ - const u_int32_t *input = in; - unsigned char *output = out; - size_t i, j; - - for (i = 0, j = 0; j < len; i++, j += 4) { - output[j] = (unsigned char)(input[i] & 0xff); - output[j+1] = (unsigned char)((input[i] >> 8) & 0xff); - output[j+2] = (unsigned char)((input[i] >> 16) & 0xff); - output[j+3] = (unsigned char)((input[i] >> 24) & 0xff); - } -} - -/* Decodes input (unsigned char) into output (u_int32_t). Assumes len is - a multiple of 4. - */ -static void -Decode(void *out, const void *in, size_t len) -{ - u_int32_t *output = out; - const unsigned char *input = in; - size_t i, j; - - for (i = 0, j = 0; j < len; i++, j += 4) - output[i] = ((u_int32_t)input[j]) | (((u_int32_t)input[j+1]) << 8) | - (((u_int32_t)input[j+2]) << 16) | (((u_int32_t)input[j+3]) << 24); -} -#endif /* !LITTLE_ENDIAN */ - -/* MD4 initialization. Begins an MD4 operation, writing a new context. - */ -void -MD4Init(MD4_CTX *context) -{ - context->count = 0; - - /* Load magic initialization constants. - */ - context->state[0] = 0x67452301; - context->state[1] = 0xefcdab89; - context->state[2] = 0x98badcfe; - context->state[3] = 0x10325476; -} - -/* MD4 block update operation. Continues an MD4 message-digest - operation, processing another message block, and updating the - context. - */ -void -MD4Update(MD4_CTX *context, const unsigned char *input, size_t inputLen) -{ - unsigned int i, index, partLen; - - /* Compute number of bytes mod 64 */ - index = (unsigned int)((context->count >> 3) & 0x3F); - - /* Update number of bits */ - context->count += ((u_int64_t)inputLen << 3); - - partLen = 64 - index; - /* Transform as many times as possible. */ - if (inputLen >= partLen) { - memcpy((POINTER)&context->buffer[index], (POINTER)input, partLen); - MD4Transform(context->state, context->buffer); - - for (i = partLen; i + 63 < inputLen; i += 64) - MD4Transform(context->state, &input[i]); - - index = 0; - } - else - i = 0; - - /* Buffer remaining input */ - memcpy((POINTER)&context->buffer[index], (POINTER)&input[i], inputLen-i); -} - -/* MD4 finalization. Ends an MD4 message-digest operation, writing the - the message digest and zeroizing the context. - */ -void -MD4Final(unsigned char digest[16], MD4_CTX *context) -{ - unsigned char bits[8]; - unsigned int index, padLen; - u_int32_t hi, lo; - - /* Save number of bits */ - hi = context->count >> 32; - lo = (u_int32_t)context->count & 0xffffffff; - Encode(bits, &lo, 4); - Encode(bits + 4, &hi, 4); - - /* Pad out to 56 mod 64. - */ - index = (unsigned int)((context->count >> 3) & 0x3f); - padLen = (index < 56) ? (56 - index) : (120 - index); - MD4Update(context, PADDING, padLen); - - /* Append length (before padding) */ - MD4Update(context, bits, 8); - - if (digest != NULL) { - /* Store state in digest */ - Encode(digest, context->state, 16); - - /* Zeroize sensitive information. - */ - memset((POINTER)context, 0, sizeof (*context)); - } -} - -/* MD4 basic transformation. Transforms state based on block. - */ -void -MD4Transform(u_int32_t state[4], const unsigned char block[64]) -{ - u_int32_t a = state[0], b = state[1], c = state[2], d = state[3], x[16]; - - Decode(x, block, 64); - - /* Round 1 */ - FF(a, b, c, d, x[ 0], S11); /* 1 */ - FF(d, a, b, c, x[ 1], S12); /* 2 */ - FF(c, d, a, b, x[ 2], S13); /* 3 */ - FF(b, c, d, a, x[ 3], S14); /* 4 */ - FF(a, b, c, d, x[ 4], S11); /* 5 */ - FF(d, a, b, c, x[ 5], S12); /* 6 */ - FF(c, d, a, b, x[ 6], S13); /* 7 */ - FF(b, c, d, a, x[ 7], S14); /* 8 */ - FF(a, b, c, d, x[ 8], S11); /* 9 */ - FF(d, a, b, c, x[ 9], S12); /* 10 */ - FF(c, d, a, b, x[10], S13); /* 11 */ - FF(b, c, d, a, x[11], S14); /* 12 */ - FF(a, b, c, d, x[12], S11); /* 13 */ - FF(d, a, b, c, x[13], S12); /* 14 */ - FF(c, d, a, b, x[14], S13); /* 15 */ - FF(b, c, d, a, x[15], S14); /* 16 */ - - /* Round 2 */ - GG(a, b, c, d, x[ 0], S21); /* 17 */ - GG(d, a, b, c, x[ 4], S22); /* 18 */ - GG(c, d, a, b, x[ 8], S23); /* 19 */ - GG(b, c, d, a, x[12], S24); /* 20 */ - GG(a, b, c, d, x[ 1], S21); /* 21 */ - GG(d, a, b, c, x[ 5], S22); /* 22 */ - GG(c, d, a, b, x[ 9], S23); /* 23 */ - GG(b, c, d, a, x[13], S24); /* 24 */ - GG(a, b, c, d, x[ 2], S21); /* 25 */ - GG(d, a, b, c, x[ 6], S22); /* 26 */ - GG(c, d, a, b, x[10], S23); /* 27 */ - GG(b, c, d, a, x[14], S24); /* 28 */ - GG(a, b, c, d, x[ 3], S21); /* 29 */ - GG(d, a, b, c, x[ 7], S22); /* 30 */ - GG(c, d, a, b, x[11], S23); /* 31 */ - GG(b, c, d, a, x[15], S24); /* 32 */ - - /* Round 3 */ - HH(a, b, c, d, x[ 0], S31); /* 33 */ - HH(d, a, b, c, x[ 8], S32); /* 34 */ - HH(c, d, a, b, x[ 4], S33); /* 35 */ - HH(b, c, d, a, x[12], S34); /* 36 */ - HH(a, b, c, d, x[ 2], S31); /* 37 */ - HH(d, a, b, c, x[10], S32); /* 38 */ - HH(c, d, a, b, x[ 6], S33); /* 39 */ - HH(b, c, d, a, x[14], S34); /* 40 */ - HH(a, b, c, d, x[ 1], S31); /* 41 */ - HH(d, a, b, c, x[ 9], S32); /* 42 */ - HH(c, d, a, b, x[ 5], S33); /* 43 */ - HH(b, c, d, a, x[13], S34); /* 44 */ - HH(a, b, c, d, x[ 3], S31); /* 45 */ - HH(d, a, b, c, x[11], S32); /* 46 */ - HH(c, d, a, b, x[ 7], S33); /* 47 */ - HH(b, c, d, a, x[15], S34); /* 48 */ - state[0] += a; - state[1] += b; - state[2] += c; - state[3] += d; - - /* Zeroize sensitive information. - */ - memset((POINTER)x, 0, sizeof (x)); -} diff --git a/lib/libc/md/md5.copyright b/lib/libc/md/md5.copyright deleted file mode 100644 index 9b7d08bf52b..00000000000 --- a/lib/libc/md/md5.copyright +++ /dev/null @@ -1,21 +0,0 @@ -.\" $OpenBSD: md5.copyright,v 1.2 1996/10/15 22:00:11 millert Exp $ -Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All -rights reserved. -.Pp -License to copy and use this software is granted provided that it -is identified as the "RSA Data Security, Inc. MD5 Message-Digest -Algorithm" in all material mentioning or referencing this software -or this function. -.Pp -License is also granted to make and use derivative works provided -that such works are identified as "derived from the RSA Data -Security, Inc. MD5 Message-Digest Algorithm" in all material -mentioning or referencing the derived work. -.Pp -RSA Data Security, Inc. makes no representations concerning either -the merchantability of this software or the suitability of this -software for any particular purpose. It is provided "as is" -without express or implied warranty of any kind. -.Pp -These notices must be retained in any copies of any part of this -documentation and/or software. diff --git a/lib/libc/md/md5c.c b/lib/libc/md/md5c.c deleted file mode 100644 index bfe7f27a03e..00000000000 --- a/lib/libc/md/md5c.c +++ /dev/null @@ -1,312 +0,0 @@ -/* MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm */ - -/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All -rights reserved. - -License to copy and use this software is granted provided that it -is identified as the "RSA Data Security, Inc. MD5 Message-Digest -Algorithm" in all material mentioning or referencing this software -or this function. - -License is also granted to make and use derivative works provided -that such works are identified as "derived from the RSA Data -Security, Inc. MD5 Message-Digest Algorithm" in all material -mentioning or referencing the derived work. - -RSA Data Security, Inc. makes no representations concerning either -the merchantability of this software or the suitability of this -software for any particular purpose. It is provided "as is" -without express or implied warranty of any kind. - -These notices must be retained in any copies of any part of this -documentation and/or software. - */ - -#if defined(LIBC_SCCS) && !defined(lint) -static char rcsid[] = "$OpenBSD: md5c.c,v 1.15 2002/12/23 21:10:22 drahn Exp $"; -#endif /* LIBC_SCCS and not lint */ - -#include <string.h> -#include <sys/types.h> -#include <md5.h> - -/* POINTER defines a generic pointer type */ -typedef unsigned char *POINTER; - -/* Constants for MD5Transform routine. - */ -#define S11 7 -#define S12 12 -#define S13 17 -#define S14 22 -#define S21 5 -#define S22 9 -#define S23 14 -#define S24 20 -#define S31 4 -#define S32 11 -#define S33 16 -#define S34 23 -#define S41 6 -#define S42 10 -#define S43 15 -#define S44 21 - -#if BYTE_ORDER == LITTLE_ENDIAN -#define Encode memcpy -#define Decode memcpy -#else /* BIG_ENDIAN */ -static void Encode(void *, const void *, size_t); -static void Decode(void *, const void *, size_t); -#endif /* LITTLE_ENDIAN */ - -static unsigned char PADDING[64] = { - 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; - -/* F, G, H and I are basic MD5 functions. - */ -#define F(x, y, z) (((x) & (y)) | ((~x) & (z))) -#define G(x, y, z) (((x) & (z)) | ((y) & (~z))) -#define H(x, y, z) ((x) ^ (y) ^ (z)) -#define I(x, y, z) ((y) ^ ((x) | (~z))) - -/* ROTATE_LEFT rotates x left n bits. - */ -#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n)))) - -/* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4. -Rotation is separate from addition to prevent recomputation. - */ -#define FF(a, b, c, d, x, s, ac) do { \ - (a) += F ((b), (c), (d)) + (x) + (u_int32_t)(ac); \ - (a) = ROTATE_LEFT((a), (s)); \ - (a) += (b); \ -} while (0) - -#define GG(a, b, c, d, x, s, ac) do { \ - (a) += G ((b), (c), (d)) + (x) + (u_int32_t)(ac); \ - (a) = ROTATE_LEFT((a), (s)); \ - (a) += (b); \ -} while (0) - -#define HH(a, b, c, d, x, s, ac) do { \ - (a) += H ((b), (c), (d)) + (x) + (u_int32_t)(ac); \ - (a) = ROTATE_LEFT((a), (s)); \ - (a) += (b); \ -} while (0) - -#define II(a, b, c, d, x, s, ac) do { \ - (a) += I ((b), (c), (d)) + (x) + (u_int32_t)(ac); \ - (a) = ROTATE_LEFT((a), (s)); \ - (a) += (b); \ -} while (0) - -#if BYTE_ORDER != LITTLE_ENDIAN -/* Encodes input (u_int32_t) into output (unsigned char). Assumes len is - a multiple of 4. - */ -static void -Encode(void *out, const void *in, size_t len) -{ - unsigned char *output = out; - const u_int32_t *input = in; - size_t i, j; - - for (i = 0, j = 0; j < len; i++, j += 4) { - output[j] = (unsigned char)(input[i] & 0xff); - output[j+1] = (unsigned char)((input[i] >> 8) & 0xff); - output[j+2] = (unsigned char)((input[i] >> 16) & 0xff); - output[j+3] = (unsigned char)((input[i] >> 24) & 0xff); - } -} - -/* Decodes input (unsigned char) into output (u_int32_t). Assumes len is - a multiple of 4. - */ -static void -Decode(void *out, const void *in, size_t len) -{ - u_int32_t *output = out; - const unsigned char *input = in; - size_t i, j; - - for (i = 0, j = 0; j < len; i++, j += 4) - output[i] = ((u_int32_t)input[j]) | (((u_int32_t)input[j+1]) << 8) | - (((u_int32_t)input[j+2]) << 16) | (((u_int32_t)input[j+3]) << 24); -} -#endif /* !LITTLE_ENDIAN */ - -/* MD5 initialization. Begins an MD5 operation, writing a new context. - */ -void -MD5Init(MD5_CTX *context) -{ - context->count = 0; - /* Load magic initialization constants. */ - context->state[0] = 0x67452301; - context->state[1] = 0xefcdab89; - context->state[2] = 0x98badcfe; - context->state[3] = 0x10325476; -} - -/* MD5 block update operation. Continues an MD5 message-digest - operation, processing another message block, and updating the - context. - */ -void -MD5Update(MD5_CTX *context, const u_char *input, size_t inputLen) -{ - unsigned int i, index, partLen; - - /* Compute number of bytes mod 64 */ - index = (unsigned int)((context->count >> 3) & 0x3F); - - /* Update number of bits */ - context->count += ((u_int64_t)inputLen << 3); - - partLen = 64 - index; - - /* Transform as many times as possible. */ - if (inputLen >= partLen) { - memcpy((POINTER)&context->buffer[index], (POINTER)input, partLen); - MD5Transform(context->state, context->buffer); - - for (i = partLen; i + 63 < inputLen; i += 64) - MD5Transform(context->state, &input[i]); - - index = 0; - } - else - i = 0; - - /* Buffer remaining input */ - memcpy((POINTER)&context->buffer[index], (POINTER)&input[i], inputLen-i); -} - -/* MD5 finalization. Ends an MD5 message-digest operation, writing the - the message digest and zeroizing the context. - */ -void -MD5Final(u_char digest[16], MD5_CTX *context) -{ - unsigned char bits[8]; - unsigned int index; - size_t padLen; - u_int32_t hi, lo; - - /* Save number of bits */ - hi = context->count >> 32; - lo = (u_int32_t)context->count & 0xffffffff; - Encode(bits, &lo, 4); - Encode(bits + 4, &hi, 4); - - /* Pad out to 56 mod 64. */ - index = (unsigned int)((context->count >> 3) & 0x3f); - padLen = (index < 56) ? (56 - index) : (120 - index); - MD5Update(context, PADDING, padLen); - - /* Append length (before padding) */ - MD5Update(context, bits, 8); - - if (digest != NULL) { - /* Store state in digest */ - Encode(digest, context->state, 16); - - /* Zeroize sensitive information. */ - memset((POINTER)context, 0, sizeof (*context)); - } -} - -/* MD5 basic transformation. Transforms state based on block. - */ -void -MD5Transform(u_int32_t state[4], const u_char block[64]) -{ - u_int32_t a = state[0], b = state[1], c = state[2], d = state[3], x[16]; - - Decode(x, block, 64); - - /* Round 1 */ - FF(a, b, c, d, x[ 0], S11, 0xd76aa478); /* 1 */ - FF(d, a, b, c, x[ 1], S12, 0xe8c7b756); /* 2 */ - FF(c, d, a, b, x[ 2], S13, 0x242070db); /* 3 */ - FF(b, c, d, a, x[ 3], S14, 0xc1bdceee); /* 4 */ - FF(a, b, c, d, x[ 4], S11, 0xf57c0faf); /* 5 */ - FF(d, a, b, c, x[ 5], S12, 0x4787c62a); /* 6 */ - FF(c, d, a, b, x[ 6], S13, 0xa8304613); /* 7 */ - FF(b, c, d, a, x[ 7], S14, 0xfd469501); /* 8 */ - FF(a, b, c, d, x[ 8], S11, 0x698098d8); /* 9 */ - FF(d, a, b, c, x[ 9], S12, 0x8b44f7af); /* 10 */ - FF(c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */ - FF(b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */ - FF(a, b, c, d, x[12], S11, 0x6b901122); /* 13 */ - FF(d, a, b, c, x[13], S12, 0xfd987193); /* 14 */ - FF(c, d, a, b, x[14], S13, 0xa679438e); /* 15 */ - FF(b, c, d, a, x[15], S14, 0x49b40821); /* 16 */ - - /* Round 2 */ - GG(a, b, c, d, x[ 1], S21, 0xf61e2562); /* 17 */ - GG(d, a, b, c, x[ 6], S22, 0xc040b340); /* 18 */ - GG(c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */ - GG(b, c, d, a, x[ 0], S24, 0xe9b6c7aa); /* 20 */ - GG(a, b, c, d, x[ 5], S21, 0xd62f105d); /* 21 */ - GG(d, a, b, c, x[10], S22, 0x2441453); /* 22 */ - GG(c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */ - GG(b, c, d, a, x[ 4], S24, 0xe7d3fbc8); /* 24 */ - GG(a, b, c, d, x[ 9], S21, 0x21e1cde6); /* 25 */ - GG(d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */ - GG(c, d, a, b, x[ 3], S23, 0xf4d50d87); /* 27 */ - GG(b, c, d, a, x[ 8], S24, 0x455a14ed); /* 28 */ - GG(a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */ - GG(d, a, b, c, x[ 2], S22, 0xfcefa3f8); /* 30 */ - GG(c, d, a, b, x[ 7], S23, 0x676f02d9); /* 31 */ - GG(b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */ - - /* Round 3 */ - HH(a, b, c, d, x[ 5], S31, 0xfffa3942); /* 33 */ - HH(d, a, b, c, x[ 8], S32, 0x8771f681); /* 34 */ - HH(c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */ - HH(b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */ - HH(a, b, c, d, x[ 1], S31, 0xa4beea44); /* 37 */ - HH(d, a, b, c, x[ 4], S32, 0x4bdecfa9); /* 38 */ - HH(c, d, a, b, x[ 7], S33, 0xf6bb4b60); /* 39 */ - HH(b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */ - HH(a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */ - HH(d, a, b, c, x[ 0], S32, 0xeaa127fa); /* 42 */ - HH(c, d, a, b, x[ 3], S33, 0xd4ef3085); /* 43 */ - HH(b, c, d, a, x[ 6], S34, 0x4881d05); /* 44 */ - HH(a, b, c, d, x[ 9], S31, 0xd9d4d039); /* 45 */ - HH(d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */ - HH(c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */ - HH(b, c, d, a, x[ 2], S34, 0xc4ac5665); /* 48 */ - - /* Round 4 */ - II(a, b, c, d, x[ 0], S41, 0xf4292244); /* 49 */ - II(d, a, b, c, x[ 7], S42, 0x432aff97); /* 50 */ - II(c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */ - II(b, c, d, a, x[ 5], S44, 0xfc93a039); /* 52 */ - II(a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */ - II(d, a, b, c, x[ 3], S42, 0x8f0ccc92); /* 54 */ - II(c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */ - II(b, c, d, a, x[ 1], S44, 0x85845dd1); /* 56 */ - II(a, b, c, d, x[ 8], S41, 0x6fa87e4f); /* 57 */ - II(d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */ - II(c, d, a, b, x[ 6], S43, 0xa3014314); /* 59 */ - II(b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */ - II(a, b, c, d, x[ 4], S41, 0xf7537e82); /* 61 */ - II(d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */ - II(c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */ - II(b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */ - - state[0] += a; - state[1] += b; - state[2] += c; - state[3] += d; - - /* Zeroize sensitive information. */ - memset((POINTER)x, 0, sizeof (x)); -} - diff --git a/lib/libc/md/mdX.3 b/lib/libc/md/mdX.3 deleted file mode 100644 index b21d643b0ba..00000000000 --- a/lib/libc/md/mdX.3 +++ /dev/null @@ -1,189 +0,0 @@ -.\" -.\" ---------------------------------------------------------------------------- -.\" "THE BEER-WARE LICENSE" (Revision 42): -.\" <phk@login.dkuug.dk> wrote this file. As long as you retain this notice you -.\" can do whatever you want with this stuff. If we meet some day, and you think -.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp -.\" ---------------------------------------------------------------------------- -.\" -.\" $OpenBSD: mdX.3,v 1.19 2003/06/25 19:33:34 deraadt Exp $ -.\" -.Dd October 9, 1996 -.Dt MDX 3 -.Os -.Sh NAME -.Nm MDXInit , -.Nm MDXUpdate , -.Nm MDXFinal , -.Nm MDXTransform , -.Nm MDXEnd , -.Nm MDXFile , -.Nm MDXData -.Nd calculate the RSA Data Security, Inc., ``MDX'' message digest -.Sh SYNOPSIS -.Fd #include <sys/types.h> -.Fd #include <mdX.h> -.Ft void -.Fn MDXInit "MDX_CTX *context" -.Ft void -.Fn MDXUpdate "MDX_CTX *context" "const unsigned char *data" "unsigned int len" -.Ft void -.Fn MDXFinal "unsigned char digest[16]" "MDX_CTX *context" -.Ft void -.Fn MDXTransform "u_int32_t state[4]" "unsigned char block[64]" -.Ft "char *" -.Fn MDXEnd "MDX_CTX *context" "char *buf" -.Ft "char *" -.Fn MDXFile "char *filename" "char *buf" -.Ft "char *" -.Fn MDXData "const unsigned char *data" "unsigned int len" "char *buf" -.Sh DESCRIPTION -The MDX functions calculate a 128-bit cryptographic checksum (digest) -for any number of input bytes. -A cryptographic checksum is a one-way -hash-function, that is, you cannot find (except by exhaustive search) -the input corresponding to a particular output. -This net result is a -.Dq fingerprint -of the input-data, which doesn't disclose the actual input. -.Pp -MD2 is the slowest, MD4 is the fastest and MD5 is somewhere in the middle. -MD2 can only be used for Privacy-Enhanced Mail. -MD4 has been shown to have severe vulnerabilities; it should only be -used where necessary for backward compatibility. -MD5 has not yet (1999-02-11) been broken, but recent attacks have cast -some doubt on its security properties. -The attacks on both MD4 and MD5 -are both in the nature of finding -.Dq collisions -\- that is, multiple -inputs which hash to the same value; it is still unlikely for an attacker -to be able to determine the exact original input given a hash value. -.Pp -The -.Fn MDXInit , -.Fn MDXUpdate , -and -.Fn MDXFinal -functions are the core functions. -Allocate an MDX_CTX, initialize it with -.Fn MDXInit , -run over the data with -.Fn MDXUpdate , -and finally extract the result using -.Fn MDXFinal . -When a null pointer is passed to -.Fn MDXFinal -as first argument only the final padding will be applied and the -current context can still be used with -.Fn MDXUpdate . -.Pp -The -.Fn MDXTransform -function is used by -.Fn MDXUpdate -to hash 512-bit blocks and forms the core of the algorithm. -Most programs should use the interface provided by -.Fn MDXInit , -.Fn MDXUpdate -and -.Fn MDXFinal -instead of calling -.Fn MDXTransform -directly. -.Pp -.Fn MDXEnd -is a wrapper for -.Fn MDXFinal -which converts the return value to a 33-character -(including the terminating '\e0') -.Tn ASCII -string which represents the 128 bits in hexadecimal. -.Pp -.Fn MDXFile -calculates the digest of a file, and uses -.Fn MDXEnd -to return the result. -If the file cannot be opened, a null pointer is returned. -.Fn MDXData -calculates the digest of a chunk of data in memory, and uses -.Fn MDXEnd -to return the result. -.Pp -When using -.Fn MDXEnd , -.Fn MDXFile , -or -.Fn MDXData , -the -.Ar buf -argument can be a null pointer, in which case the returned string -is allocated with -.Xr malloc 3 -and subsequently must be explicitly deallocated using -.Xr free 3 -after use. -If the -.Ar buf -argument is non-null it must point to at least 33 characters of buffer space. -.Sh SEE ALSO -.Xr mdY 3 , -.Xr rmd160 3 , -.Xr sha1 3 -.Rs -.%A B. Kaliski -.%T The MD2 Message-Digest Algorithm -.%O RFC 1319 -.Re -.Rs -.%A R. Rivest -.%T The MD4 Message-Digest Algorithm -.%O RFC 1186 -.Re -.Rs -.%A R. Rivest -.%T The MD5 Message-Digest Algorithm -.%O RFC 1321 -.Re -.Rs -.%A RSA Laboratories -.%T Frequently Asked Questions About today's Cryptography -.%O \&<http://www.rsa.com/rsalabs/faq/> -.Re -.Rs -.%A H. Dobbertin -.%T Alf Swindles Ann -.%J CryptoBytes -.%N 1(3):5 -.%D 1995 -.Re -.Rs -.%A MJ. B. Robshaw -.%T On Recent Results for MD2, MD4 and MD5 -.%J RSA Laboratories Bulletin -.%N 4 -.%D November 12, 1996 -.Re -.Rs -.%A Hans Dobbertin -.%T Cryptanalysis of MD5 Compress -.Re -.Sh HISTORY -These functions appeared in -.Ox 2.0 . -.Sh AUTHORS -The original MDX routines were developed by -.Tn RSA -Data Security, Inc., and published in the above references. -This code is derived directly from these implementations by Poul-Henning Kamp -.Aq Li phk@login.dkuug.dk -.Pp -Phk ristede runen. -.Sh BUGS -Hans Dobbertin has shown collisions for the full version of MD4 and -found a collision in the compress function of MD5. -The use of SHA or RIPEMD-160 is recommended instead. -.Pp -MD2 has only been licensed for use in Privacy Enhanced Mail. -Use MD4 or MD5 if that isn't what you're doing. -.Sh COPYRIGHT diff --git a/lib/libc/md/mdXhl.c b/lib/libc/md/mdXhl.c deleted file mode 100644 index 4f1697f4ba8..00000000000 --- a/lib/libc/md/mdXhl.c +++ /dev/null @@ -1,72 +0,0 @@ -/* mdXhl.c - * ---------------------------------------------------------------------------- - * "THE BEER-WARE LICENSE" (Revision 42): - * <phk@login.dkuug.dk> wrote this file. As long as you retain this notice you - * can do whatever you want with this stuff. If we meet some day, and you think - * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp - * ---------------------------------------------------------------------------- - */ - -#if defined(LIBC_SCCS) && !defined(lint) -static const char rcsid[] = "$OpenBSD: mdXhl.c,v 1.12 2003/05/09 16:46:30 millert Exp $"; -#endif /* LIBC_SCCS and not lint */ - -#include <sys/types.h> - -#include <errno.h> -#include <fcntl.h> -#include <mdX.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <unistd.h> - -/* ARGSUSED */ -char * -MDXEnd(MDX_CTX *ctx, char *buf) -{ - int i; - unsigned char digest[16]; - static const char hex[]="0123456789abcdef"; - - if (buf == NULL && (buf = malloc(33)) == NULL) - return(NULL); - MDXFinal(digest,ctx); - for (i=0;i<16;i++) { - buf[i+i] = hex[digest[i] >> 4]; - buf[i+i+1] = hex[digest[i] & 0x0f]; - } - buf[i+i] = '\0'; - memset(digest, 0, sizeof(digest)); - return(buf); -} - -char * -MDXFile(char *filename, char *buf) -{ - unsigned char buffer[BUFSIZ]; - MDX_CTX ctx; - int f,i,j; - - MDXInit(&ctx); - f = open(filename, O_RDONLY); - if (f < 0) return 0; - while ((i = read(f,buffer,sizeof buffer)) > 0) { - MDXUpdate(&ctx,buffer,i); - } - j = errno; - close(f); - errno = j; - if (i < 0) return 0; - return(MDXEnd(&ctx, buf)); -} - -char * -MDXData(const u_char *data, size_t len, char *buf) -{ - MDX_CTX ctx; - - MDXInit(&ctx); - MDXUpdate(&ctx,data,len); - return(MDXEnd(&ctx, buf)); -} |