X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=smbencrypt.c;h=2714064cbf0bf4239b1659f87dc4334cf6a17755;hb=33cddbff323efcbae1503e91e6e65b2733da80c7;hp=ad14707ff7bd4cc30384eec5e5507f86cff95f8a;hpb=ecc8edf91ce64d4c9f242fc425fe407a8acfaae6;p=~andy%2Ffetchmail diff --git a/smbencrypt.c b/smbencrypt.c index ad14707f..2714064c 100644 --- a/smbencrypt.c +++ b/smbencrypt.c @@ -26,6 +26,7 @@ extern int DEBUGLEVEL; #include #include +#include #include #include #include "smbbyteorder.h" @@ -33,10 +34,6 @@ extern int DEBUGLEVEL; #include "smbencrypt.h" #include "smbmd4.h" -#ifndef _AIX -typedef unsigned char uchar; -typedef signed short int16; -#endif typedef int BOOL; #define False 0 #define True 1 @@ -65,12 +62,6 @@ static size_t skip_multibyte_char(char c) return 0; } - -/******************************************************************* -safe string copy into a known length string. maxlength does not -include the terminating zero. -********************************************************************/ - static void strupper(char *s) { while (*s) @@ -89,7 +80,7 @@ while (*s) } } -extern void SMBOWFencrypt(uchar passwd[16], uchar *c8, uchar p24[24]); +extern void SMBOWFencrypt(unsigned char passwd[16], unsigned char *c8, unsigned char p24[24]); /* This implements the X/Open SMB password encryption @@ -97,9 +88,9 @@ extern void SMBOWFencrypt(uchar passwd[16], uchar *c8, uchar p24[24]); encrypted password into p24 */ -void SMBencrypt(uchar *passwd, uchar *c8, uchar *p24) +void SMBencrypt(unsigned char *passwd, unsigned char *c8, unsigned char *p24) { - uchar p14[15], p21[21]; + unsigned char p14[15], p21[21]; memset(p21,'\0',21); memset(p14,'\0',14); @@ -119,7 +110,7 @@ void SMBencrypt(uchar *passwd, uchar *c8, uchar *p24) } /* Routines for Windows NT MD4 Hash functions. */ -static int _my_wcslen(int16 *str) +static int _my_wcslen(int16_t *str) { int len = 0; while(*str++ != 0) @@ -134,10 +125,10 @@ static int _my_wcslen(int16 *str) * format. */ -static int _my_mbstowcs(int16 *dst, uchar *src, int len) +static int _my_mbstowcs(int16_t *dst, unsigned char *src, int len) { int i; - int16 val; + int16_t val; for(i = 0; i < len; i++) { val = *src; @@ -154,10 +145,10 @@ static int _my_mbstowcs(int16 *dst, uchar *src, int len) * Creates the MD4 Hash of the users password in NT UNICODE. */ -static void E_md4hash(uchar *passwd, uchar *p16) +static void E_md4hash(unsigned char *passwd, unsigned char *p16) { int len; - int16 wpwd[129]; + int16_t wpwd[129]; /* Password cannot be longer than 128 characters */ len = strlen((char *)passwd); @@ -167,15 +158,15 @@ static void E_md4hash(uchar *passwd, uchar *p16) _my_mbstowcs(wpwd, passwd, len); wpwd[len] = 0; /* Ensure string is null terminated */ /* Calculate length in bytes */ - len = _my_wcslen(wpwd) * sizeof(int16); + len = _my_wcslen(wpwd) * sizeof(int16_t); mdfour(p16, (unsigned char *)wpwd, len); } /* Does the des encryption from the NT or LM MD4 hash. */ -void SMBOWFencrypt(uchar passwd[16], uchar *c8, uchar p24[24]) +void SMBOWFencrypt(unsigned char passwd[16], unsigned char *c8, unsigned char p24[24]) { - uchar p21[21]; + unsigned char p21[21]; memset(p21,'\0',21); @@ -184,10 +175,9 @@ void SMBOWFencrypt(uchar passwd[16], uchar *c8, uchar p24[24]) } /* Does the NT MD4 hash then des encryption. */ - -void SMBNTencrypt(uchar *passwd, uchar *c8, uchar *p24) +void SMBNTencrypt(unsigned char *passwd, unsigned char *c8, unsigned char *p24) { - uchar p21[21]; + unsigned char p21[21]; memset(p21,'\0',21); @@ -201,43 +191,3 @@ void SMBNTencrypt(uchar *passwd, uchar *c8, uchar *p24) dump_data(100, (char *)p24, 24); #endif } - -#if 0 - -BOOL make_oem_passwd_hash(char data[516], const char *passwd, uchar old_pw_hash[16], BOOL unicode) -{ - int new_pw_len = strlen(passwd) * (unicode ? 2 : 1); - - if (new_pw_len > 512) - { - DEBUG(0,("make_oem_passwd_hash: new password is too long.\n")); - return False; - } - - /* - * Now setup the data area. - * We need to generate a random fill - * for this area to make it harder to - * decrypt. JRA. - */ - generate_random_buffer((unsigned char *)data, 516, False); - if (unicode) - { - struni2( &data[512 - new_pw_len], passwd); - } - else - { - fstrcpy( &data[512 - new_pw_len], passwd); - } - SIVAL(data, 512, new_pw_len); - -#ifdef DEBUG_PASSWORD - DEBUG(100,("make_oem_passwd_hash\n")); - dump_data(100, data, 516); -#endif - SamOEMhash( (unsigned char *)data, (unsigned char *)old_pw_hash, True); - - return True; -} - -#endif