--- parser3/src/classes/math.C 2003/04/04 09:42:04 1.25 +++ parser3/src/classes/math.C 2003/04/14 14:59:29 1.26 @@ -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/14 14:59:29 $"; #include "pa_common.h" #include "pa_vint.h" @@ -153,7 +153,9 @@ static void _crypt(Request& r, const Str 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); + (const unsigned char *)normal_salt, 1/*TRUE: mix in magic string*/, + sample_buf, sample_size, + 0, 0); r.write_pass_lang(*new(pool) String(pool, sample_buf)); } else { #ifdef HAVE_CRYPT @@ -174,6 +176,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(); + const size_t sample_size=120; + char sample_buf[sample_size]; + const int sample_bytes_count=12; + unsigned char sample_bytes[sample_bytes_count]; + pa_MD5Encode((const unsigned char *)string, + (const unsigned char *)"", 0/*FALSE: mix in magic string*/, + sample_buf, sample_size, + sample_bytes, sample_bytes_count); + char *sample_bytes_hex=(char *)pool.malloc(sample_bytes_count*2/*byte->hh*/+1/*for zero-teminator*/); + unsigned char *src=sample_bytes; + unsigned char *end=sample_bytes+sample_bytes_count; + char *dest=sample_bytes_hex; + while(src