md5.h
author peter1138
Sun, 01 Oct 2006 12:00:32 +0000
changeset 4694 c917a3ad0dd2
parent 4434 a08cb4b5c179
permissions -rw-r--r--
(svn r6601) - Codechange: Support cargo subtypes in the refit window. The refit window has been altered to support resizing and scrolling. Note that the cargo subtype isn't yet passed for actual refitting yet. (Based on mart3p's patch)
2186
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 1884
diff changeset
     1
/* $Id$ */
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 1884
diff changeset
     2
602
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
     3
/*
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
     4
  Copyright (C) 1999, 2002 Aladdin Enterprises.  All rights reserved.
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
     5
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
     6
  This software is provided 'as-is', without any express or implied
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
     7
  warranty.  In no event will the authors be held liable for any damages
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
     8
  arising from the use of this software.
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
     9
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    10
  Permission is granted to anyone to use this software for any purpose,
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    11
  including commercial applications, and to alter it and redistribute it
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    12
  freely, subject to the following restrictions:
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    13
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    14
  1. The origin of this software must not be misrepresented; you must not
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    15
     claim that you wrote the original software. If you use this software
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    16
     in a product, an acknowledgment in the product documentation would be
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    17
     appreciated but is not required.
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    18
  2. Altered source versions must be plainly marked as such, and must not be
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    19
     misrepresented as being the original software.
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    20
  3. This notice may not be removed or altered from any source distribution.
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    21
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    22
  L. Peter Deutsch
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    23
  ghost@aladdin.com
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    24
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    25
 */
2186
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 1884
diff changeset
    26
/* $Id$ */
602
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    27
/*
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    28
  Independent implementation of MD5 (RFC 1321).
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    29
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    30
  This code implements the MD5 Algorithm defined in RFC 1321, whose
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    31
  text is available at
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    32
	http://www.ietf.org/rfc/rfc1321.txt
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    33
  The code is derived from the text of the RFC, including the test suite
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    34
  (section A.5) but excluding the rest of Appendix A.  It does not include
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    35
  any code or documentation that is identified in the RFC as being
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    36
  copyrighted.
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    37
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    38
  The original and principal author of md5.h is L. Peter Deutsch
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    39
  <ghost@aladdin.com>.  Other authors are noted in the change history
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    40
  that follows (in reverse chronological order):
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    41
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    42
  2002-04-13 lpd Removed support for non-ANSI compilers; removed
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    43
	references to Ghostscript; clarified derivation from RFC 1321;
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    44
	now handles byte order either statically or dynamically.
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    45
  1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    46
  1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5);
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    47
	added conditionalization for C++ compilation from Martin
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    48
	Purschke <purschke@bnl.gov>.
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    49
  1999-05-03 lpd Original version.
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    50
 */
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    51
2436
7d5df545bd5d (svn r2962) - const correctness for all Get* functions and most Draw* functions that don't change their pointer parameters
Darkvater
parents: 2186
diff changeset
    52
#ifndef MD5_INCLUDED
7d5df545bd5d (svn r2962) - const correctness for all Get* functions and most Draw* functions that don't change their pointer parameters
Darkvater
parents: 2186
diff changeset
    53
#define MD5_INCLUDED
602
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    54
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    55
/*
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    56
 * This package supports both compile-time and run-time determination of CPU
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    57
 * byte order.  If ARCH_IS_BIG_ENDIAN is defined as 0, the code will be
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    58
 * compiled to run only on little-endian CPUs; if ARCH_IS_BIG_ENDIAN is
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    59
 * defined as non-zero, the code will be compiled to run only on big-endian
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    60
 * CPUs; if ARCH_IS_BIG_ENDIAN is not defined, the code will be compiled to
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    61
 * run on either big- or little-endian CPUs, but will run slightly less
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    62
 * efficiently on either one than if ARCH_IS_BIG_ENDIAN is defined.
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    63
 */
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    64
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    65
typedef unsigned char md5_byte_t; /* 8-bit byte */
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    66
typedef unsigned int md5_word_t; /* 32-bit word */
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    67
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    68
/* Define the state of the MD5 Algorithm. */
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    69
typedef struct md5_state_s {
4434
a08cb4b5c179 (svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents: 4320
diff changeset
    70
    md5_word_t count[2]; /* message length in bits, lsw first */
a08cb4b5c179 (svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents: 4320
diff changeset
    71
    md5_word_t abcd[4];  /* digest buffer */
a08cb4b5c179 (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_byte_t buf[64];  /* accumulate block */
602
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    73
} md5_state_t;
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    74
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    75
#ifdef __cplusplus
915
d845fe7cf6f2 (svn r1402) Trim trailing whitespace
tron
parents: 602
diff changeset
    76
extern "C"
602
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    77
{
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    78
#endif
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    79
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    80
/* Initialize the algorithm. */
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    81
void md5_init(md5_state_t *pms);
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    82
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    83
/* Append a string to the message. */
4320
5cb29aa480cc (svn r5973) -Codechange: md5_append only uses size_t as nbytes param, so use that (michi_cc)
truelight
parents: 2436
diff changeset
    84
void md5_append(md5_state_t *pms, const void *data, size_t nbytes);
602
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    85
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    86
/* Finish the message and return the digest. */
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    87
void md5_finish(md5_state_t *pms, md5_byte_t digest[16]);
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    88
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    89
#ifdef __cplusplus
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    90
}  /* end extern "C" */
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    91
#endif
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff changeset
    92
2436
7d5df545bd5d (svn r2962) - const correctness for all Get* functions and most Draw* functions that don't change their pointer parameters
Darkvater
parents: 2186
diff changeset
    93
#endif /* MD5_INCLUDED */