CrystalSpace

Public API Reference

Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

csutil/csmd5.h

Go to the documentation of this file.
00001 /*
00002     Crystal Space utility library: MD5 class
00003     Original C code written by L. Peter Deutsch (see below)
00004     Adapted for Crystal Space by Michael Dale Long
00005     Completely re-engineered by Eric Sunshine <sunshine@sunshineco.com>
00006 
00007     This library is free software; you can redistribute it and/or
00008     modify it under the terms of the GNU Library General Public
00009     License as published by the Free Software Foundation; either
00010     version 2 of the License, or (at your option) any later version.
00011 
00012     This library is distributed in the hope that it will be useful,
00013     but WITHOUT ANY WARRANTY; without even the implied warranty of
00014     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00015     Library General Public License for more details.
00016 
00017     You should have received a copy of the GNU Library General Public
00018     License along with this library; if not, write to the Free
00019     Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00020 
00021 */
00022 
00023 /*
00024   Copyright (C) 1999 Aladdin Enterprises.  All rights reserved.
00025 
00026   This software is provided 'as-is', without any express or implied
00027   warranty.  In no event will the authors be held liable for any damages
00028   arising from the use of this software.
00029 
00030   Permission is granted to anyone to use this software for any purpose,
00031   including commercial applications, and to alter it and redistribute it
00032   freely, subject to the following restrictions:
00033 
00034   1. The origin of this software must not be misrepresented; you must not
00035      claim that you wrote the original software. If you use this software
00036      in a product, an acknowledgment in the product documentation would be
00037      appreciated but is not required.
00038   2. Altered source versions must be plainly marked as such, and must not be
00039      misrepresented as being the original software.
00040   3. This notice may not be removed or altered from any source distribution.
00041 
00042   L. Peter Deutsch
00043   ghost@aladdin.com
00044 
00045  */
00064 #ifndef __CS_CSMD5_H__
00065 #define __CS_CSMD5_H__
00066 
00067 #include "csextern.h"
00068 #include "csstring.h"
00069 
00077 class CS_CSUTIL_EXPORT csMD5
00078 {
00079 public:
00081   typedef unsigned char md5_byte_t;
00083   typedef unsigned int md5_word_t;
00084 
00086   struct CS_CSUTIL_EXPORT md5_state_t
00087   {
00088     size_t count[2]; // message length in bits, lsw first
00089     md5_word_t abcd[4];  // digest buffer
00090     md5_byte_t buf[64];  // accumulate block
00091   };
00092 
00094   static void md5_init(md5_state_t*);
00096   static void md5_append(md5_state_t*, const md5_byte_t* data, size_t nbytes);
00098   static void md5_finish(md5_state_t*, md5_byte_t digest[16]);
00099 
00100 protected:
00101   static void md5_process(md5_state_t*, const md5_byte_t* data/*[64]*/);
00102 
00103 // Our friendly interface.
00104 public:
00106   struct CS_CSUTIL_EXPORT Digest
00107   {
00108     enum { DigestLen = 16 };
00110     md5_byte_t data[DigestLen];
00112     csString HexString() const;
00114     csString HEXString() const;
00115   };
00116 
00118   static Digest Encode(csString const&);
00120   static Digest Encode(const char*);
00122   static Digest Encode(const void*, size_t nbytes);
00123 };
00124 
00125 #endif // __CS_CSMD5_H__
00126 

Generated for Crystal Space by doxygen 1.2.18