ppcrcd/trunk/yaboot/md5.c

sparky cvs at pld-linux.org
Fri Jan 6 00:07:48 CET 2006


Author: sparky
Date: Fri Jan  6 00:07:44 2006
New Revision: 6748

Modified:
   ppcrcd/trunk/yaboot/md5.c
Log:
- spaces -> tabs


Modified: ppcrcd/trunk/yaboot/md5.c
==============================================================================
--- ppcrcd/trunk/yaboot/md5.c	(original)
+++ ppcrcd/trunk/yaboot/md5.c	Fri Jan  6 00:07:44 2006
@@ -1,26 +1,26 @@
 /*
- *  md5.c - an implementation of the MD5 algorithm and MD5 crypt
- *
- *  Copyright (C) 2001, 2002 Ethan Benson
- * 
- *  Adapted from GRUB
- * 
- *  Copyright (C) 2000  Free Software Foundation, Inc.
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
+*  md5.c - an implementation of the MD5 algorithm and MD5 crypt
+*
+*  Copyright (C) 2001, 2002 Ethan Benson
+* 
+*  Adapted from GRUB
+* 
+*  Copyright (C) 2000  Free Software Foundation, Inc.
+*
+*  This program is free software; you can redistribute it and/or modify
+*  it under the terms of the GNU General Public License as published by
+*  the Free Software Foundation; either version 2 of the License, or
+*  (at your option) any later version.
+*
+*  This program is distributed in the hope that it will be useful,
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*  GNU General Public License for more details.
+*
+*  You should have received a copy of the GNU General Public License
+*  along with this program; if not, write to the Free Software
+*  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
 
 /* See RFC 1321 for a description of the MD5 algorithm. */
 
@@ -41,10 +41,10 @@
 #define cpu_to_le32(x) le32_to_cpu((x))
 unsigned long le32_to_cpu(unsigned long x)
 {
-        return (((x & 0x000000ffU) << 24) |
-                ((x & 0x0000ff00U) <<  8) |
-                ((x & 0x00ff0000U) >>  8) |
-                ((x & 0xff000000U) >> 24));
+	return (((x & 0x000000ffU) << 24) |
+		((x & 0x0000ff00U) <<  8) |
+		((x & 0x00ff0000U) >>  8) |
+		((x & 0xff000000U) >> 24));
 }
 
 typedef unsigned int UINT4;
@@ -62,7 +62,7 @@
 
 static UINT4 initstate[4] =
 {
-  0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476 
+	0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476 
 };
 
 static char s1[4] = {  7, 12, 17, 22 };
@@ -72,26 +72,26 @@
 
 static UINT4 T[64] =
 {
-  0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee,
-  0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501,
-  0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be,
-  0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821,
-  0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa,
-  0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8,
-  0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed,
-  0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a,
-  0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c,
-  0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70,
-  0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x04881d05,
-  0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665,
-  0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039,
-  0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1,
-  0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1,
-  0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391
+	0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee,
+	0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501,
+	0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be,
+	0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821,
+	0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa,
+	0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8,
+	0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed,
+	0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a,
+	0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c,
+	0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70,
+	0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x04881d05,
+	0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665,
+	0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039,
+	0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1,
+	0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1,
+	0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391
 };
 
 static const char *b64t =
-"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+	"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
 
 static UINT4 state[4];
 static unsigned int length;
@@ -100,225 +100,225 @@
 static void
 md5_transform (const unsigned char block[64])
 {
-  int i, j;
-  UINT4 a,b,c,d,tmp;
-  const UINT4 *x = (UINT4 *) block;
-
-  a = state[0];
-  b = state[1];
-  c = state[2];
-  d = state[3];
-
-  /* Round 1 */
-  for (i = 0; i < 16; i++)
-    {
-      tmp = a + F (b, c, d) + le32_to_cpu (x[i]) + T[i];
-      tmp = ROTATE_LEFT (tmp, s1[i & 3]);
-      tmp += b;
-      a = d; d = c; c = b; b = tmp;
-    }
-  /* Round 2 */
-  for (i = 0, j = 1; i < 16; i++, j += 5)
-    {
-      tmp = a + G (b, c, d) + le32_to_cpu (x[j & 15]) + T[i+16];
-      tmp = ROTATE_LEFT (tmp, s2[i & 3]);
-      tmp += b;
-      a = d; d = c; c = b; b = tmp;
-    }
-  /* Round 3 */
-  for (i = 0, j = 5; i < 16; i++, j += 3)
-    {
-      tmp = a + H (b, c, d) + le32_to_cpu (x[j & 15]) + T[i+32];
-      tmp = ROTATE_LEFT (tmp, s3[i & 3]);
-      tmp += b;
-      a = d; d = c; c = b; b = tmp;
-    }
-  /* Round 4 */
-  for (i = 0, j = 0; i < 16; i++, j += 7)
-    {
-      tmp = a + I (b, c, d) + le32_to_cpu (x[j & 15]) + T[i+48];
-      tmp = ROTATE_LEFT (tmp, s4[i & 3]);
-      tmp += b;
-      a = d; d = c; c = b; b = tmp;
-    }
-
-  state[0] += a;
-  state[1] += b;
-  state[2] += c;
-  state[3] += d;
+	int i, j;
+	UINT4 a,b,c,d,tmp;
+	const UINT4 *x = (UINT4 *) block;
+
+	a = state[0];
+	b = state[1];
+	c = state[2];
+	d = state[3];
+
+	/* Round 1 */
+	for (i = 0; i < 16; i++)
+	{
+		tmp = a + F (b, c, d) + le32_to_cpu (x[i]) + T[i];
+		tmp = ROTATE_LEFT (tmp, s1[i & 3]);
+		tmp += b;
+		a = d; d = c; c = b; b = tmp;
+	}
+	/* Round 2 */
+	for (i = 0, j = 1; i < 16; i++, j += 5)
+	{
+		tmp = a + G (b, c, d) + le32_to_cpu (x[j & 15]) + T[i+16];
+		tmp = ROTATE_LEFT (tmp, s2[i & 3]);
+		tmp += b;
+		a = d; d = c; c = b; b = tmp;
+	}
+	/* Round 3 */
+	for (i = 0, j = 5; i < 16; i++, j += 3)
+	{
+		tmp = a + H (b, c, d) + le32_to_cpu (x[j & 15]) + T[i+32];
+		tmp = ROTATE_LEFT (tmp, s3[i & 3]);
+		tmp += b;
+		a = d; d = c; c = b; b = tmp;
+	}
+	/* Round 4 */
+	for (i = 0, j = 0; i < 16; i++, j += 7)
+	{
+		tmp = a + I (b, c, d) + le32_to_cpu (x[j & 15]) + T[i+48];
+		tmp = ROTATE_LEFT (tmp, s4[i & 3]);
+		tmp += b;
+		a = d; d = c; c = b; b = tmp;
+	}
+
+	state[0] += a;
+	state[1] += b;
+	state[2] += c;
+	state[3] += d;
 }
 
 static void
 md5_init(void)
 {
-  memcpy ((char *) state, (char *) initstate, sizeof (initstate));
-  length = 0;
+	memcpy ((char *) state, (char *) initstate, sizeof (initstate));
+	length = 0;
 }
 
 static void
-md5_update (const char *input, int inputlen)
+		md5_update (const char *input, int inputlen)
 {
-  int buflen = length & 63;
-  length += inputlen;
-  if (buflen + inputlen < 64) 
-    {
-      memcpy (buffer + buflen, input, inputlen);
-      buflen += inputlen;
-      return;
-    }
-  
-  memcpy (buffer + buflen, input, 64 - buflen);
-  md5_transform (buffer);
-  input += 64 - buflen;
-  inputlen -= 64 - buflen;
-  while (inputlen >= 64)
-    {
-      md5_transform (input);
-      input += 64;
-      inputlen -= 64;
-    }
-  memcpy (buffer, input, inputlen);
-  buflen = inputlen;
+	int buflen = length & 63;
+	length += inputlen;
+	if (buflen + inputlen < 64) 
+	{
+		memcpy (buffer + buflen, input, inputlen);
+		buflen += inputlen;
+		return;
+	}
+
+	memcpy (buffer + buflen, input, 64 - buflen);
+	md5_transform (buffer);
+	input += 64 - buflen;
+	inputlen -= 64 - buflen;
+	while (inputlen >= 64)
+	{
+		md5_transform (input);
+		input += 64;
+		inputlen -= 64;
+	}
+	memcpy (buffer, input, inputlen);
+	buflen = inputlen;
 }
 
 static unsigned char *
 md5_final()
 {
-  int i, buflen = length & 63;
+	int i, buflen = length & 63;
 
-  buffer[buflen++] = 0x80;
-  memset (buffer+buflen, 0, 64 - buflen);
-  if (buflen > 56)
-    {
-      md5_transform (buffer);
-      memset (buffer, 0, 64);
-      buflen = 0;
-    }
-  
-  *(UINT4 *) (buffer + 56) = cpu_to_le32 (8 * length);
-  *(UINT4 *) (buffer + 60) = 0;
-  md5_transform (buffer);
-
-  for (i = 0; i < 4; i++)
-    state[i] = cpu_to_le32 (state[i]);
-  return (unsigned char *) state;
+	buffer[buflen++] = 0x80;
+	memset (buffer+buflen, 0, 64 - buflen);
+	if (buflen > 56)
+	{
+		md5_transform (buffer);
+		memset (buffer, 0, 64);
+		buflen = 0;
+	}
+
+	*(UINT4 *) (buffer + 56) = cpu_to_le32 (8 * length);
+	*(UINT4 *) (buffer + 60) = 0;
+	md5_transform (buffer);
+
+	for (i = 0; i < 4; i++)
+		state[i] = cpu_to_le32 (state[i]);
+	return (unsigned char *) state;
 }
 
 #ifdef USE_MD5_PASSWORDS
 /* If CHECK is true, check a password for correctness. Returns 0
-   if password was correct, and a value != 0 for error, similarly
-   to strcmp.
-   If CHECK is false, crypt KEY and save the result in CRYPTED.
-   CRYPTED must have a salt.  */
+  if password was correct, and a value != 0 for error, similarly
+  to strcmp.
+  If CHECK is false, crypt KEY and save the result in CRYPTED.
+  CRYPTED must have a salt.  */
 int
 md5_password (const char *key, char *crypted, int check)
 {
-  int keylen = strlen (key);
-  char *salt = crypted + 3; /* skip $1$ header */
-  char *p; 
-  int saltlen;
-  int i, n;
-  unsigned char alt_result[16];
-  unsigned char *digest;
-
-  if (check)
-    saltlen = strstr (salt, "$") - salt;
-  else
-    {
-      char *end = strstr (salt, "$");
-      if (end && end - salt < 8)
-	saltlen = end - salt;
-      else
-	saltlen = 8;
-
-      salt[saltlen] = '$';
-    }
-  
-  md5_init ();
-  md5_update (key, keylen);
-  md5_update (salt, saltlen);
-  md5_update (key, keylen);
-  digest = md5_final ();
-  memcpy (alt_result, digest, 16);
-  
-  memcpy ((char *) state, (char *) initstate, sizeof (initstate));
-  length = 0;
-  md5_update (key, keylen);
-  md5_update (crypted, 3 + saltlen); /* include the $1$ header */
-  for (i = keylen; i > 16; i -= 16)
-    md5_update (alt_result, 16);
-  md5_update (alt_result, i);
-
-  for (i = keylen; i > 0; i >>= 1)
-    md5_update (key + ((i & 1) ? keylen : 0), 1);
-  digest = md5_final ();
-
-  for (i = 0; i < 1000; i++)
-    {
-      memcpy (alt_result, digest, 16);
-
-      memcpy ((char *) state, (char *) initstate, sizeof (initstate));
-      length = 0;
-      if ((i & 1) != 0)
+	int keylen = strlen (key);
+	char *salt = crypted + 3; /* skip $1$ header */
+	char *p; 
+	int saltlen;
+	int i, n;
+	unsigned char alt_result[16];
+	unsigned char *digest;
+
+	if (check)
+		saltlen = strstr (salt, "$") - salt;
+	else
+	{
+		char *end = strstr (salt, "$");
+		if (end && end - salt < 8)
+			saltlen = end - salt;
+		else
+			saltlen = 8;
+
+		salt[saltlen] = '$';
+	}
+
+	md5_init ();
 	md5_update (key, keylen);
-      else
-	md5_update (alt_result, 16);
-      
-      if (i % 3 != 0)
 	md5_update (salt, saltlen);
-
-      if (i % 7 != 0)
 	md5_update (key, keylen);
+	digest = md5_final ();
+	memcpy (alt_result, digest, 16);
 
-      if ((i & 1) != 0)
-	md5_update (alt_result, 16);
-      else
+	memcpy ((char *) state, (char *) initstate, sizeof (initstate));
+	length = 0;
 	md5_update (key, keylen);
-      digest = md5_final ();
-    }
+	md5_update (crypted, 3 + saltlen); /* include the $1$ header */
+	for (i = keylen; i > 16; i -= 16)
+		md5_update (alt_result, 16);
+	md5_update (alt_result, i);
+
+	for (i = keylen; i > 0; i >>= 1)
+		md5_update (key + ((i & 1) ? keylen : 0), 1);
+	digest = md5_final ();
 
-  p = salt + saltlen + 1;
-  for (i = 0; i < 5; i++)
-    {
-      unsigned int w = 
-	digest[i == 4 ? 5 : 12+i] | (digest[6+i] << 8) | (digest[i] << 16);
-      for (n = 4; n-- > 0;)
-	{
-	  if (check)
-	    {
-	      if (*p++ != b64t[w & 0x3f])
-		return 1;
-	    }
-	  else
-	    {
-	      *p++ = b64t[w & 0x3f];
-	    }
-	  
-	  w >>= 6;
-	}
-    }
-  {
-    unsigned int w = digest[11];
-    for (n = 2; n-- > 0;)
-      {
-	if (check)
-	  {
-	    if (*p++ != b64t[w & 0x3f])
-	      return 1;
-	  }
-	else
-	  {
-	    *p++ = b64t[w & 0x3f];
-	  }
-	
-	w >>= 6;
-      }
-  }
-
-  if (! check)
-    *p = '\0';
-  
-  return *p;
+	for (i = 0; i < 1000; i++)
+	{
+		memcpy (alt_result, digest, 16);
+
+		memcpy ((char *) state, (char *) initstate, sizeof (initstate));
+		length = 0;
+		if ((i & 1) != 0)
+			md5_update (key, keylen);
+		else
+			md5_update (alt_result, 16);
+
+		if (i % 3 != 0)
+			md5_update (salt, saltlen);
+
+		if (i % 7 != 0)
+			md5_update (key, keylen);
+
+		if ((i & 1) != 0)
+			md5_update (alt_result, 16);
+		else
+			md5_update (key, keylen);
+		digest = md5_final ();
+	}
+
+	p = salt + saltlen + 1;
+	for (i = 0; i < 5; i++)
+	{
+		unsigned int w = 
+				digest[i == 4 ? 5 : 12+i] | (digest[6+i] << 8) | (digest[i] << 16);
+		for (n = 4; n-- > 0;)
+		{
+			if (check)
+			{
+				if (*p++ != b64t[w & 0x3f])
+					return 1;
+			}
+			else
+			{
+				*p++ = b64t[w & 0x3f];
+			}
+
+			w >>= 6;
+		}
+	}
+	{
+		unsigned int w = digest[11];
+		for (n = 2; n-- > 0;)
+		{
+			if (check)
+			{
+				if (*p++ != b64t[w & 0x3f])
+					return 1;
+			}
+			else
+			{
+				*p++ = b64t[w & 0x3f];
+			}
+
+			w >>= 6;
+		}
+	}
+
+	if (! check)
+		*p = '\0';
+
+	return *p;
 }
 #endif
 
@@ -326,57 +326,57 @@
 static char *
 md5 (const char *input) 
 {
-  memcpy ((char *) state, (char *) initstate, sizeof (initstate));
-  length = 0;
-  md5_update (input, strlen (input));
-  return md5_final ();
+	memcpy ((char *) state, (char *) initstate, sizeof (initstate));
+	length = 0;
+	md5_update (input, strlen (input));
+	return md5_final ();
 }
 
 static void
 test (char *buffer, char *expected) 
 {
-  char result[16 * 3 +1];
-  unsigned char* digest = md5 (buffer);
-  int i;
-
-  for (i=0; i < 16; i++)
-    sprintf (result+2*i, "%02x", digest[i]);
-
-  if (strcmp (result, expected))
-    printf ("MD5(%s) failed: %s\n", buffer, result);
-  else
-    printf ("MD5(%s) OK\n", buffer);
+	char result[16 * 3 +1];
+	unsigned char* digest = md5 (buffer);
+	int i;
+
+	for (i=0; i < 16; i++)
+		sprintf (result+2*i, "%02x", digest[i]);
+
+	if (strcmp (result, expected))
+		printf ("MD5(%s) failed: %s\n", buffer, result);
+	else
+		printf ("MD5(%s) OK\n", buffer);
 }
 
 int
 main (void)
 {
-  test ("", "d41d8cd98f00b204e9800998ecf8427e");
-  test ("a", "0cc175b9c0f1b6a831c399e269772661");
-  test ("abc", "900150983cd24fb0d6963f7d28e17f72");
-  test ("message digest", "f96b697d7cb7938d525a2f31aaf161d0");
-  test ("abcdefghijklmnopqrstuvwxyz", "c3fcd3d76192e4007dfb496cca67e13b");
-  test ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
-	"d174ab98d277d9f5a5611c2c9f419d9f");
-  test ("12345678901234567890123456789012345678901234567890123456789012345678901234567890",
-	"57edf4a22be3c955ac49da2e2107b67a");
-  test ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz3456",
-	"6831fa90115bb9a54fbcd4f9fee0b5c4");
-  test ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz345",
-	"bc40505cc94a43b7ff3e2ac027325233");
-  test ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz34567",
-	"fa94b73a6f072a0239b52acacfbcf9fa");
-  test ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz345678901234",
-	"bd201eae17f29568927414fa326f1267");
-  test ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz34567890123",
-	"80063db1e6b70a2e91eac903f0e46b85");
-
-  if (check_md5_password ("Hello world!",
-			  "$1$saltstri$YMyguxXMBpd2TEZ.vS/3q1"))
-    printf ("Password differs\n");
-  else
-    printf ("Password OK\n");
-  return 0;
+	test ("", "d41d8cd98f00b204e9800998ecf8427e");
+	test ("a", "0cc175b9c0f1b6a831c399e269772661");
+	test ("abc", "900150983cd24fb0d6963f7d28e17f72");
+	test ("message digest", "f96b697d7cb7938d525a2f31aaf161d0");
+	test ("abcdefghijklmnopqrstuvwxyz", "c3fcd3d76192e4007dfb496cca67e13b");
+	test ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
+	      "d174ab98d277d9f5a5611c2c9f419d9f");
+	test ("12345678901234567890123456789012345678901234567890123456789012345678901234567890",
+	      "57edf4a22be3c955ac49da2e2107b67a");
+	test ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz3456",
+	      "6831fa90115bb9a54fbcd4f9fee0b5c4");
+	test ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz345",
+	      "bc40505cc94a43b7ff3e2ac027325233");
+	test ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz34567",
+	      "fa94b73a6f072a0239b52acacfbcf9fa");
+	test ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz345678901234",
+	      "bd201eae17f29568927414fa326f1267");
+	test ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz34567890123",
+	      "80063db1e6b70a2e91eac903f0e46b85");
+
+	if (check_md5_password ("Hello world!",
+			"$1$saltstri$YMyguxXMBpd2TEZ.vS/3q1"))
+		printf ("Password differs\n");
+	else
+		printf ("Password OK\n");
+	return 0;
 }
 #endif
 


More information about the pld-cvs-commit mailing list