--- parser3/src/classes/math.C 2003/04/04 09:42:04 1.25 +++ parser3/src/classes/math.C 2003/04/15 07:17:42 1.27 @@ -5,7 +5,7 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char* IDENT_MATH_C="$Date: 2003/04/04 09:42:04 $"; +static const char* IDENT_MATH_C="$Date: 2003/04/15 07:17:42 $"; #include "pa_common.h" #include "pa_vint.h" @@ -152,8 +152,9 @@ static void _crypt(Request& r, const Str if(strncmp(normal_salt, PA_MD5PW_ID, PA_MD5PW_IDLEN) == 0) { const size_t sample_size=120; char *sample_buf=(char *)pool.malloc(sample_size); - pa_MD5Encode((const unsigned char *)password, - (const unsigned char *)normal_salt, sample_buf, sample_size); + PA_MD5Encode((const unsigned char *)password, + (const unsigned char *)normal_salt, 1/*TRUE: mix in magic string*/, + sample_buf, sample_size); r.write_pass_lang(*new(pool) String(pool, sample_buf)); } else { #ifdef HAVE_CRYPT @@ -174,6 +175,27 @@ static void _crypt(Request& r, const Str } } +static void _md5(Request& r, const String& method_name, MethodParams *params) { + Pool& pool=r.pool(); + const char *string=params->as_string(0, "parameter must be string").cstr(); + + + PA_MD5_CTX context; + unsigned char digest[16]; + PA_MD5Init(&context); + PA_MD5Update(&context, (const unsigned char*)string, strlen(string)); + PA_MD5Final(digest, &context); + + char *digest_bytes_hex=(char *)pool.malloc(sizeof(digest)*2/*byte->hh*/+1/*for zero-teminator*/); + unsigned char *src=digest; + unsigned char *end=digest+sizeof(digest); + char *dest=digest_bytes_hex; + while(src