src/md5.h
author celestar
Mon, 19 Mar 2007 09:33:17 +0000
branchgamebalance
changeset 9894 70d78ac95d6c
parent 6527 f584ab6d87f8
child 6298 c30fe89622df
permissions -rw-r--r--
(svn r9310) [gamebalance] -Feature: Player performance now influences the wealth level of a town (albeit only on a small scale). This is the first feedback effect that the player has on the local and global economy. Please refrain from using the AI too much for the time being because it'll trash the ratings most likely.
2186
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 1884
diff changeset
     1
/* $Id$ */
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 1884
diff changeset
     2
6527
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6192
diff changeset
     3
/** @file md5.h */
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6192
diff changeset
     4
602
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
     5
/*
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
     6
  Copyright (C) 1999, 2002 Aladdin Enterprises.  All rights reserved.
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
     7
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
     8
  This software is provided 'as-is', without any express or implied
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
     9
  warranty.  In no event will the authors be held liable for any damages
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    10
  arising from the use of this software.
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    11
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    12
  Permission is granted to anyone to use this software for any purpose,
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    13
  including commercial applications, and to alter it and redistribute it
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    14
  freely, subject to the following restrictions:
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    15
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    16
  1. The origin of this software must not be misrepresented; you must not
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    17
     claim that you wrote the original software. If you use this software
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    18
     in a product, an acknowledgment in the product documentation would be
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    19
     appreciated but is not required.
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    20
  2. Altered source versions must be plainly marked as such, and must not be
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    21
     misrepresented as being the original software.
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    22
  3. This notice may not be removed or altered from any source distribution.
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    23
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    24
  L. Peter Deutsch
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    25
  ghost@aladdin.com
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    26
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    27
 */
6527
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6192
diff changeset
    28
602
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    29
/*
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    30
  Independent implementation of MD5 (RFC 1321).
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    31
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    32
  This code implements the MD5 Algorithm defined in RFC 1321, whose
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    33
  text is available at
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    34
	http://www.ietf.org/rfc/rfc1321.txt
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    35
  The code is derived from the text of the RFC, including the test suite
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    36
  (section A.5) but excluding the rest of Appendix A.  It does not include
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    37
  any code or documentation that is identified in the RFC as being
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    38
  copyrighted.
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    39
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    40
  The original and principal author of md5.h is L. Peter Deutsch
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    41
  <ghost@aladdin.com>.  Other authors are noted in the change history
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    42
  that follows (in reverse chronological order):
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    43
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    44
  2002-04-13 lpd Removed support for non-ANSI compilers; removed
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    45
	references to Ghostscript; clarified derivation from RFC 1321;
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    46
	now handles byte order either statically or dynamically.
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    47
  1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    48
  1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5);
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    49
	added conditionalization for C++ compilation from Martin
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    50
	Purschke <purschke@bnl.gov>.
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    51
  1999-05-03 lpd Original version.
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    52
 */
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    53
2436
177cb6a8339f (svn r2962) - const correctness for all Get* functions and most Draw* functions that don't change their pointer parameters
Darkvater
parents: 2186
diff changeset
    54
#ifndef MD5_INCLUDED
177cb6a8339f (svn r2962) - const correctness for all Get* functions and most Draw* functions that don't change their pointer parameters
Darkvater
parents: 2186
diff changeset
    55
#define MD5_INCLUDED
602
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    56
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    57
/*
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    58
 * This package supports both compile-time and run-time determination of CPU
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    59
 * byte order.  If ARCH_IS_BIG_ENDIAN is defined as 0, the code will be
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    60
 * compiled to run only on little-endian CPUs; if ARCH_IS_BIG_ENDIAN is
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    61
 * defined as non-zero, the code will be compiled to run only on big-endian
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    62
 * CPUs; if ARCH_IS_BIG_ENDIAN is not defined, the code will be compiled to
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    63
 * run on either big- or little-endian CPUs, but will run slightly less
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    64
 * efficiently on either one than if ARCH_IS_BIG_ENDIAN is defined.
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    65
 */
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    66
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    67
typedef unsigned char md5_byte_t; /* 8-bit byte */
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    68
typedef unsigned int md5_word_t; /* 32-bit word */
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    69
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    70
/* Define the state of the MD5 Algorithm. */
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    71
typedef struct md5_state_s {
4434
4175805666a5 (svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents: 4320
diff changeset
    72
    md5_word_t count[2]; /* message length in bits, lsw first */
4175805666a5 (svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents: 4320
diff changeset
    73
    md5_word_t abcd[4];  /* digest buffer */
4175805666a5 (svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents: 4320
diff changeset
    74
    md5_byte_t buf[64];  /* accumulate block */
602
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    75
} md5_state_t;
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    76
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    77
/* Initialize the algorithm. */
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    78
void md5_init(md5_state_t *pms);
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    79
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    80
/* Append a string to the message. */
4320
e816a2dc7bac (svn r5973) -Codechange: md5_append only uses size_t as nbytes param, so use that (michi_cc)
truelight
parents: 2436
diff changeset
    81
void md5_append(md5_state_t *pms, const void *data, size_t nbytes);
602
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    82
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    83
/* Finish the message and return the digest. */
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    84
void md5_finish(md5_state_t *pms, md5_byte_t digest[16]);
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    85
2436
177cb6a8339f (svn r2962) - const correctness for all Get* functions and most Draw* functions that don't change their pointer parameters
Darkvater
parents: 2186
diff changeset
    86
#endif /* MD5_INCLUDED */