From d39830f804af7fb076a578dd00453906379fef47 Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Wed, 10 May 2000 23:54:50 +0000 Subject: [PATCH] fix legal problems with md4 --- source/Makefile | 3 ++- source/mdfour.h | 48 ++++++++++++++++++++++++++++++++++++++++++ source/net_com.c | 50 ++++++++++++++++++++++++++++++++++++++++++++ source/uint32.h | 54 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 154 insertions(+), 1 deletion(-) create mode 100644 source/mdfour.h create mode 100644 source/net_com.c create mode 100644 source/uint32.h diff --git a/source/Makefile b/source/Makefile index 867ebc5..0e7cd85 100644 --- a/source/Makefile +++ b/source/Makefile @@ -45,11 +45,12 @@ EXE_sources=\ cvar.c \ mathlib.c \ math.S \ - md4.c \ + mdfour.c \ zone.c \ pmove.c \ pmovetst.c \ net_chan.c \ + net_com.c \ net_udp.c diff --git a/source/mdfour.h b/source/mdfour.h new file mode 100644 index 0000000..a39c74b --- /dev/null +++ b/source/mdfour.h @@ -0,0 +1,48 @@ +/* + mdfour.h + + an implementation of MD4 designed for use in the SMB authentication + protocol + + Copyright (C) Andrew Tridgell 1997-1998 + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to: + + Free Software Foundation, Inc. + 59 Temple Place - Suite 330 + Boston, MA 02111-1307, USA + + $Id$ +*/ + +#ifndef _UINT32_H +#include +#endif + +#ifndef _MDFOUR_H +#define _MDFOUR_H + +struct mdfour { + uint32 A, B, C, D; + uint32 totalN; +}; + +void mdfour_begin(struct mdfour *md); // old: MD4Init +void mdfour_update(struct mdfour *md, unsigned char *in, int n); //old: MD4Update +void mdfour_result(struct mdfour *md, unsigned char *out); // old: MD4Final +void mdfour(unsigned char *out, unsigned char *in, int n); + +#endif // _MDFOUR_H + diff --git a/source/net_com.c b/source/net_com.c new file mode 100644 index 0000000..f5c5cdd --- /dev/null +++ b/source/net_com.c @@ -0,0 +1,50 @@ +/* + net_com.c + + MD4-based checksum utility functions + + Copyright (C) 1999,2000 contributors of the QuakeForge project + Please see the file "AUTHORS" for a list of contributors + + Author: Jeff Teunissen + Date: 01 Jan 2000 + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to: + + Free Software Foundation, Inc. + 59 Temple Place - Suite 330 + Boston, MA 02111-1307, USA + + $Id$ +*/ + +#include + +unsigned Com_BlockChecksum (void *buffer, int length) +{ + int digest[4]; + unsigned val; + + mdfour ( (unsigned char *) digest, (unsigned char *) buffer, length ); + + val = digest[0] ^ digest[1] ^ digest[2] ^ digest[3]; + + return val; +} + +void Com_BlockFullChecksum (void *buffer, int len, unsigned char *outbuf) +{ + mdfour ( outbuf, (unsigned char *) buffer, len ); +} diff --git a/source/uint32.h b/source/uint32.h new file mode 100644 index 0000000..22a650d --- /dev/null +++ b/source/uint32.h @@ -0,0 +1,54 @@ +/* + uint32.h + + Definitions for portable (?) unsigned int + + Copyright (C) 1999,2000 contributors of the QuakeForge project + Please see the file "AUTHORS" for a list of contributors + + Author: Jeff Teunissen + Date: 01 Jan 2000 + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to: + + Free Software Foundation, Inc. + 59 Temple Place - Suite 330 + Boston, MA 02111-1307, USA + + $Id$ +*/ + +#ifndef _UINT32_H +#define _UINT32_H + +#ifndef int32 +#if (SIZEOF_INT == 4) +#define int32 int +#elif (SIZEOF_LONG == 4) +#define int32 long +#elif (SIZEOF_SHORT == 4) +#define int32 short +#else +/* I hope this works */ +#define int32 int +#define LARGE_INT32 +#endif +#endif + +#ifndef uint32 +#define uint32 unsigned int32 +#endif + +#endif // _UINT32_H