SOURCES: cyrus-sasl-md5sum-passwords.patch (NEW) - initial release

kosmo kosmo at pld-linux.org
Wed Aug 24 12:04:29 CEST 2005


Author: kosmo                        Date: Wed Aug 24 10:04:29 2005 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- initial release

---- Files affected:
SOURCES:
   cyrus-sasl-md5sum-passwords.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/cyrus-sasl-md5sum-passwords.patch
diff -u /dev/null SOURCES/cyrus-sasl-md5sum-passwords.patch:1.1
--- /dev/null	Wed Aug 24 12:04:29 2005
+++ SOURCES/cyrus-sasl-md5sum-passwords.patch	Wed Aug 24 12:04:23 2005
@@ -0,0 +1,73 @@
+diff -urN cyrus-sasl-2.1.21.orig/lib/checkpw.c cyrus-sasl-2.1.21/lib/checkpw.c
+--- cyrus-sasl-2.1.21.orig/lib/checkpw.c	2005-08-24 11:36:23.000000000 +0200
++++ cyrus-sasl-2.1.21/lib/checkpw.c	2005-08-24 11:36:07.000000000 +0200
+@@ -103,10 +103,12 @@
+ #define PASSWORD_FORMAT_CLEARTEXT 1
+ #define PASSWORD_FORMAT_CRYPT 2
+ #define PASSWORD_FORMAT_CRYPTTRAD 3
++#define PASSWORD_FORMAT_MD5 4
+ #define PASSWORD_SALT_BUF_LEN 22
+ 
+ /* weeds out crypt(3) password's salt */
+ int _sasl_get_salt (char *dest, char *src, int format);
++const char *_sasl_md5sum(const char *src);
+ 
+ /******************************
+  * crypt(3) patch stop        *
+@@ -192,6 +194,9 @@
+ 		/* traditional crypt(3) */
+ 		else if (strncmp(p, "crypt_trad", 11) == 0)
+ 			password_format = PASSWORD_FORMAT_CRYPTTRAD;
++		/* md5sum like hash */
++		else if (strncmp(p, "md5", 11) == 0)
++			password_format = PASSWORD_FORMAT_MD5;
+ 		/* cleartext password */
+ 		else
+ 			password_format = PASSWORD_FORMAT_CLEARTEXT;
+@@ -250,13 +255,20 @@
+ 	_sasl_get_salt(salt, (char *) auxprop_values[0].values[0], password_format);
+ 	
+ 	/* crypt(3)-ed password? */
+-	if (password_format != PASSWORD_FORMAT_CLEARTEXT) {
++	if (password_format == PASSWORD_FORMAT_CRYPT || password_format == PASSWORD_FORMAT_CRYPTTRAD) {
+ 		/* compare password */
+ 		if (auxprop_values[0].name && auxprop_values[0].values && auxprop_values[0].values[0] && strcmp(crypt(passwd, salt), auxprop_values[0].values[0]) == 0)
+ 			return SASL_OK;
+ 		else
+ 			ret = SASL_BADAUTH;
+ 	}
++	/* md5 hash password */
++	else if (password_format == PASSWORD_FORMAT_MD5) {
++		if (auxprop_values[0].name && auxprop_values[0].values && auxprop_values[0].values[0] && strcasecmp(auxprop_values[0].values[0], _sasl_md5sum(passwd)) == 0)
++			return SASL_OK;
++		else
++			ret = SASL_BADAUTH;
++	}
+ 	else if (password_format == PASSWORD_FORMAT_CLEARTEXT) {
+ 		/* compare passwords */
+ 		if (auxprop_values[0].name && auxprop_values[0].values && auxprop_values[0].values[0] && strcmp(auxprop_values[0].values[0], passwd) == 0)
+@@ -1087,3 +1099,24 @@
+ 	return 1;
+ }
+ 
++
++const char *_sasl_md5sum(const char *src) {
++    static char md5sum[33];
++    const char hex[] = "0123456789abcdef";
++    char md5[16];
++    MD5_CTX ctx;
++    int i = 0;
++    int j = 0;
++
++    _sasl_MD5Init(&ctx);
++    _sasl_MD5Update(&ctx, src, strlen(src));
++    _sasl_MD5Final(&md5, &ctx);
++    
++    for(i=0; i<16; i++) {
++	md5sum[j++] = hex[md5[i] >> 4];
++	md5sum[j++] = hex[md5[i] & 0x0F];
++    }
++    
++    md5sum[j] = 0;
++    return(md5sum);
++}
================================================================



More information about the pld-cvs-commit mailing list