md5.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:6k
源码类别:

Symbian

开发平台:

C/C++

  1. /* ***** BEGIN LICENSE BLOCK ***** 
  2.  * Version: RCSL 1.0/RPSL 1.0 
  3.  *  
  4.  * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
  5.  *      
  6.  * The contents of this file, and the files included with this file, are 
  7.  * subject to the current version of the RealNetworks Public Source License 
  8.  * Version 1.0 (the "RPSL") available at 
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed 
  10.  * the file under the RealNetworks Community Source License Version 1.0 
  11.  * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
  12.  * in which case the RCSL will apply. You may also obtain the license terms 
  13.  * directly from RealNetworks.  You may not use this file except in 
  14.  * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
  15.  * applicable to this file, the RCSL.  Please see the applicable RPSL or 
  16.  * RCSL for the rights, obligations and limitations governing use of the 
  17.  * contents of the file.  
  18.  *  
  19.  * This file is part of the Helix DNA Technology. RealNetworks is the 
  20.  * developer of the Original Code and owns the copyrights in the portions 
  21.  * it created. 
  22.  *  
  23.  * This file, and the files included with this file, is distributed and made 
  24.  * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  25.  * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  26.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
  27.  * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  28.  * 
  29.  * Technology Compatibility Kit Test Suite(s) Location: 
  30.  *    http://www.helixcommunity.org/content/tck 
  31.  * 
  32.  * Contributor(s): 
  33.  *  
  34.  * ***** END LICENSE BLOCK ***** */ 
  35. /*
  36.   Copyright (C) 1999, 2002 Aladdin Enterprises.  All rights reserved.
  37.   This software is provided 'as-is', without any express or implied
  38.   warranty.  In no event will the authors be held liable for any damages
  39.   arising from the use of this software.
  40.   Permission is granted to anyone to use this software for any purpose,
  41.   including commercial applications, and to alter it and redistribute it
  42.   freely, subject to the following restrictions:
  43.   1. The origin of this software must not be misrepresented; you must not
  44.      claim that you wrote the original software. If you use this software
  45.      in a product, an acknowledgment in the product documentation would be
  46.      appreciated but is not required.
  47.   2. Altered source versions must be plainly marked as such, and must not be
  48.      misrepresented as being the original software.
  49.   3. This notice may not be removed or altered from any source distribution.
  50.   L. Peter Deutsch
  51.   ghost@aladdin.com
  52.  */
  53. /*
  54.   Independent implementation of MD5 (RFC 1321).
  55.   This code implements the MD5 Algorithm defined in RFC 1321, whose
  56.   text is available at
  57. http://www.ietf.org/rfc/rfc1321.txt
  58.   The code is derived from the text of the RFC, including the test suite
  59.   (section A.5) but excluding the rest of Appendix A.  It does not include
  60.   any code or documentation that is identified in the RFC as being
  61.   copyrighted.
  62.   The original and principal author of md5.h is L. Peter Deutsch
  63.   <ghost@aladdin.com>.  Other authors are noted in the change history
  64.   that follows (in reverse chronological order):
  65.   2002-04-13 lpd Removed support for non-ANSI compilers; removed
  66. references to Ghostscript; clarified derivation from RFC 1321;
  67. now handles byte order either statically or dynamically.
  68.   1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
  69.   1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5);
  70. added conditionalization for C++ compilation from Martin
  71. Purschke <purschke@bnl.gov>.
  72.   1999-05-03 lpd Original version.
  73.  */
  74. #ifndef md5_INCLUDED
  75. #  define md5_INCLUDED
  76. /*
  77.  * These should cause all callers and callees of the md5_ 
  78.  * function names to use a unique Helix specific name space
  79.  * of HX_md5_xxx. This will facilitate the inclusion of our 
  80.  * code into code bases that also use the md5_ functions. 
  81.  */
  82. #define md5_init    HX_md5_init
  83. #define md5_append  HX_md5_append
  84. #define md5_finish  HX_md5_finish
  85. #define MD5End      HX_MD5End
  86. #define MD5Data     HX_MD5Data
  87. #ifdef _BIG_ENDIAN
  88. #define ARCH_IS_BIG_ENDIAN 1
  89. #else
  90. #define ARCH_IS_BIG_ENDIAN 0
  91. #endif
  92. /*
  93.  * This package supports both compile-time and run-time determination of CPU
  94.  * byte order.  If ARCH_IS_BIG_ENDIAN is defined as 0, the code will be
  95.  * compiled to run only on little-endian CPUs; if ARCH_IS_BIG_ENDIAN is
  96.  * defined as non-zero, the code will be compiled to run only on big-endian
  97.  * CPUs; if ARCH_IS_BIG_ENDIAN is not defined, the code will be compiled to
  98.  * run on either big- or little-endian CPUs, but will run slightly less
  99.  * efficiently on either one than if ARCH_IS_BIG_ENDIAN is defined.
  100.  */
  101. typedef unsigned char md5_byte_t; /* 8-bit byte */
  102. typedef unsigned int md5_word_t; /* 32-bit word */
  103. /* Define the state of the MD5 Algorithm. */
  104. typedef struct md5_state_s {
  105.     md5_word_t count[2]; /* message length in bits, lsw first */
  106.     md5_word_t abcd[4]; /* digest buffer */
  107.     md5_byte_t buf[64]; /* accumulate block */
  108. } md5_state_t;
  109. #ifdef __cplusplus
  110. extern "C" 
  111. {
  112. #endif
  113. /* Initialize the algorithm. */
  114. void md5_init(md5_state_t *pms);
  115. /* Append a string to the message. */
  116. void md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes);
  117. /* Finish the message and return the digest. */
  118. /* changed order to match expected usage. */
  119. void md5_finish(md5_byte_t digest[16], md5_state_t *pms);
  120. char * MD5End(md5_state_t *ctx, char *p);
  121. char * MD5Data(char *, const unsigned char *, unsigned int);
  122. #ifdef __cplusplus
  123. }  /* end extern "C" */
  124. #endif
  125. #endif /* md5_INCLUDED */