Odamex
Setting the Standard in Multiplayer Doom
odalaunch/src/md5.h
Go to the documentation of this file.
00001 // Emacs style mode select   -*- C++ -*- 
00002 //-----------------------------------------------------------------------------
00003 //
00004 // $Id: md5.h 1622 2010-06-09 18:45:27Z russellrice $
00005 //
00006 //   Copyright (C) 1999, 2002 Aladdin Enterprises.  All rights reserved.
00007 // 
00008 //   This software is provided 'as-is', without any express or implied
00009 //   warranty.  In no event will the authors be held liable for any damages
00010 //   arising from the use of this software.
00011 // 
00012 //   Permission is granted to anyone to use this software for any purpose,
00013 //   including commercial applications, and to alter it and redistribute it
00014 //   freely, subject to the following restrictions:
00015 // 
00016 //   1. The origin of this software must not be misrepresented; you must not
00017 //      claim that you wrote the original software. If you use this software
00018 //      in a product, an acknowledgment in the product documentation would be
00019 //      appreciated but is not required.
00020 //   2. Altered source versions must be plainly marked as such, and must not be
00021 //      misrepresented as being the original software.
00022 //   3. This notice may not be removed or altered from any source distribution.
00023 // 
00024 //   L. Peter Deutsch
00025 //   ghost@aladdin.com
00026 // 
00027 // 
00028 //  Independent implementation of MD5 (RFC 1321).
00029 // 
00030 //   This code implements the MD5 Algorithm defined in RFC 1321, whose
00031 //   text is available at http://www.ietf.org/rfc/rfc1321.txt
00032 //        
00033 //   The code is derived from the text of the RFC, including the test suite
00034 //   (section A.5) but excluding the rest of Appendix A.  It does not include
00035 //   any code or documentation that is identified in the RFC as being
00036 //   copyrighted.
00037 // 
00038 //   The original and principal author of md5.h is L. Peter Deutsch
00039 //   <ghost@aladdin.com>.  Other authors are noted in the change history
00040 //   that follows (in reverse chronological order):
00041 // 
00042 //   2002-04-13 lpd Removed support for non-ANSI compilers; removed
00043 //      references to Ghostscript; clarified derivation from RFC 1321;
00044 //      now handles byte order either statically or dynamically.
00045 //   1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
00046 //   1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5);
00047 //      added conditionalization for C++ compilation from Martin
00048 //      Purschke <purschke@bnl.gov>.
00049 //   1999-05-03 lpd Original version.
00050 //  
00051 //-----------------------------------------------------------------------------
00052 
00053 
00054 #ifndef md5_INCLUDED
00055 #define md5_INCLUDED
00056 
00057 //-----------------------------------------------------------------------------
00058 // This package supports both compile-time and run-time determination of CPU
00059 // byte order.  If ARCH_IS_BIG_ENDIAN is defined as 0, the code will be
00060 // compiled to run only on little-endian CPUs; if ARCH_IS_BIG_ENDIAN is
00061 // defined as non-zero, the code will be compiled to run only on big-endian
00062 // CPUs; if ARCH_IS_BIG_ENDIAN is not defined, the code will be compiled to
00063 // run on either big- or little-endian CPUs, but will run slightly less
00064 // efficiently on either one than if ARCH_IS_BIG_ENDIAN is defined.
00065 //-----------------------------------------------------------------------------
00066 
00067 
00068 typedef unsigned char md5_byte_t; /* 8-bit byte */
00069 typedef unsigned int md5_word_t; /* 32-bit word */
00070 
00071 /* Define the state of the MD5 Algorithm. */
00072 typedef struct md5_state_s {
00073     md5_word_t count[2];        /* message length in bits, lsw first */
00074     md5_word_t abcd[4];         /* digest buffer */
00075     md5_byte_t buf[64];         /* accumulate block */
00076 } md5_state_t;
00077 
00078 #ifdef __cplusplus
00079 extern "C" 
00080 {
00081 #endif
00082 
00083 /* Initialize the algorithm. */
00084 void md5_init(md5_state_t *pms);
00085 
00086 /* Append a string to the message. */
00087 void md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes);
00088 
00089 /* Finish the message and return the digest. */
00090 void md5_finish(md5_state_t *pms, md5_byte_t digest[16]);
00091 
00092 #ifdef __cplusplus
00093 }  /* end extern "C" */
00094 #endif
00095 
00096 // denis lukianov 2006
00097 #include <string>
00098 
00099 std::string MD5SUM(const void *in, size_t size);
00100 std::string MD5SUM(std::string in);
00101 
00102 #include <wx/string.h>
00103 
00104 wxString MD5SUM(const wxString &);
00105 
00106 #endif /* md5_INCLUDED */
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends