aboutsummaryrefslogtreecommitdiff
path: root/contrib/libpam/modules/pam_pwdb/md5_crypt.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/libpam/modules/pam_pwdb/md5_crypt.c')
-rw-r--r--contrib/libpam/modules/pam_pwdb/md5_crypt.c72
1 files changed, 23 insertions, 49 deletions
diff --git a/contrib/libpam/modules/pam_pwdb/md5_crypt.c b/contrib/libpam/modules/pam_pwdb/md5_crypt.c
index 88be13b7f001..826087f28093 100644
--- a/contrib/libpam/modules/pam_pwdb/md5_crypt.c
+++ b/contrib/libpam/modules/pam_pwdb/md5_crypt.c
@@ -1,4 +1,4 @@
-/* $Id: md5_crypt.c,v 1.1 1996/09/05 06:43:31 morgan Exp $
+/* $Id: md5_crypt.c,v 1.2 2000/12/04 19:02:34 baggins Exp $
*
* ----------------------------------------------------------------------------
* "THE BEER-WARE LICENSE" (Revision 42):
@@ -9,10 +9,6 @@
*
* Origin: Id: crypt.c,v 1.3 1995/05/30 05:42:22 rgrimes Exp
*
- * $Log: md5_crypt.c,v $
- * Revision 1.1 1996/09/05 06:43:31 morgan
- * Initial revision
- *
*/
#include <string.h>
@@ -31,34 +27,12 @@ to64(char *s, unsigned long v, int n)
}
/*
- * i64c - convert an integer to a radix 64 character
- */
-int i64c(int i)
-{
- if (i < 0)
- return ('.');
- else if (i > 63)
- return ('z');
- if (i == 0)
- return ('.');
- if (i == 1)
- return ('/');
- if (i >= 2 && i <= 11)
- return ('0' - 2 + i);
- if (i >= 12 && i <= 37)
- return ('A' - 12 + i);
- if (i >= 38 && i <= 63)
- return ('a' - 38 + i);
- return ('\0');
-}
-
-/*
* UNIX password
*
* Use MD5 for what it is best at...
*/
-char * crypt_md5(const char *pw, const char *salt)
+char * MD5Name(crypt_md5)(const char *pw, const char *salt)
{
const char *magic = "$1$";
/* This string is magic for this algorithm. Having
@@ -84,25 +58,25 @@ char * crypt_md5(const char *pw, const char *salt)
/* get the length of the true salt */
sl = ep - sp;
- MD5Init(&ctx);
+ MD5Name(MD5Init)(&ctx);
/* The password first, since that is what is most unknown */
- MD5Update(&ctx,(unsigned const char *)pw,strlen(pw));
+ MD5Name(MD5Update)(&ctx,(unsigned const char *)pw,strlen(pw));
/* Then our magic string */
- MD5Update(&ctx,(unsigned const char *)magic,strlen(magic));
+ MD5Name(MD5Update)(&ctx,(unsigned const char *)magic,strlen(magic));
/* Then the raw salt */
- MD5Update(&ctx,(unsigned const char *)sp,sl);
+ MD5Name(MD5Update)(&ctx,(unsigned const char *)sp,sl);
/* Then just as many characters of the MD5(pw,salt,pw) */
- MD5Init(&ctx1);
- MD5Update(&ctx1,(unsigned const char *)pw,strlen(pw));
- MD5Update(&ctx1,(unsigned const char *)sp,sl);
- MD5Update(&ctx1,(unsigned const char *)pw,strlen(pw));
- MD5Final(final,&ctx1);
+ MD5Name(MD5Init)(&ctx1);
+ MD5Name(MD5Update)(&ctx1,(unsigned const char *)pw,strlen(pw));
+ MD5Name(MD5Update)(&ctx1,(unsigned const char *)sp,sl);
+ MD5Name(MD5Update)(&ctx1,(unsigned const char *)pw,strlen(pw));
+ MD5Name(MD5Final)(final,&ctx1);
for(pl = strlen(pw); pl > 0; pl -= 16)
- MD5Update(&ctx,(unsigned const char *)final,pl>16 ? 16 : pl);
+ MD5Name(MD5Update)(&ctx,(unsigned const char *)final,pl>16 ? 16 : pl);
/* Don't leave anything around in vm they could use. */
memset(final,0,sizeof final);
@@ -110,16 +84,16 @@ char * crypt_md5(const char *pw, const char *salt)
/* Then something really weird... */
for (j=0,i = strlen(pw); i ; i >>= 1)
if(i&1)
- MD5Update(&ctx, (unsigned const char *)final+j, 1);
+ MD5Name(MD5Update)(&ctx, (unsigned const char *)final+j, 1);
else
- MD5Update(&ctx, (unsigned const char *)pw+j, 1);
+ MD5Name(MD5Update)(&ctx, (unsigned const char *)pw+j, 1);
/* Now make the output string */
strcpy(passwd,magic);
strncat(passwd,sp,sl);
strcat(passwd,"$");
- MD5Final(final,&ctx);
+ MD5Name(MD5Final)(final,&ctx);
/*
* and now, just to make sure things don't run too fast
@@ -127,23 +101,23 @@ char * crypt_md5(const char *pw, const char *salt)
* need 30 seconds to build a 1000 entry dictionary...
*/
for(i=0;i<1000;i++) {
- MD5Init(&ctx1);
+ MD5Name(MD5Init)(&ctx1);
if(i & 1)
- MD5Update(&ctx1,(unsigned const char *)pw,strlen(pw));
+ MD5Name(MD5Update)(&ctx1,(unsigned const char *)pw,strlen(pw));
else
- MD5Update(&ctx1,(unsigned const char *)final,16);
+ MD5Name(MD5Update)(&ctx1,(unsigned const char *)final,16);
if(i % 3)
- MD5Update(&ctx1,(unsigned const char *)sp,sl);
+ MD5Name(MD5Update)(&ctx1,(unsigned const char *)sp,sl);
if(i % 7)
- MD5Update(&ctx1,(unsigned const char *)pw,strlen(pw));
+ MD5Name(MD5Update)(&ctx1,(unsigned const char *)pw,strlen(pw));
if(i & 1)
- MD5Update(&ctx1,(unsigned const char *)final,16);
+ MD5Name(MD5Update)(&ctx1,(unsigned const char *)final,16);
else
- MD5Update(&ctx1,(unsigned const char *)pw,strlen(pw));
- MD5Final(final,&ctx1);
+ MD5Name(MD5Update)(&ctx1,(unsigned const char *)pw,strlen(pw));
+ MD5Name(MD5Final)(final,&ctx1);
}
p = passwd + strlen(passwd);