1 /* $NetBSD: md5.h,v 1.1.1.2 2014/07/12 11:57:50 spz Exp $ */ 2 /* crypto/md/md5.h */ 3 /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) 4 * All rights reserved. 5 * 6 * This package is an SSL implementation written 7 * by Eric Young (eay@cryptsoft.com). 8 * The implementation was written so as to conform with Netscapes SSL. 9 * 10 * This library is free for commercial and non-commercial use as long as 11 * the following conditions are aheared to. The following conditions 12 * apply to all code found in this distribution, be it the RC4, RSA, 13 * lhash, DES, etc., code; not just the SSL code. The SSL documentation 14 * included with this distribution is covered by the same copyright terms 15 * except that the holder is Tim Hudson (tjh@cryptsoft.com). 16 * 17 * Copyright remains Eric Young's, and as such any Copyright notices in 18 * the code are not to be removed. 19 * If this package is used in a product, Eric Young should be given attribution 20 * as the author of the parts of the library used. 21 * This can be in the form of a textual message at program startup or 22 * in documentation (online or textual) provided with the package. 23 * 24 * Redistribution and use in source and binary forms, with or without 25 * modification, are permitted provided that the following conditions 26 * are met: 27 * 1. Redistributions of source code must retain the copyright 28 * notice, this list of conditions and the following disclaimer. 29 * 2. Redistributions in binary form must reproduce the above copyright 30 * notice, this list of conditions and the following disclaimer in the 31 * documentation and/or other materials provided with the distribution. 32 * 3. All advertising materials mentioning features or use of this software 33 * must display the following acknowledgement: 34 * "This product includes cryptographic software written by 35 * Eric Young (eay@cryptsoft.com)" 36 * The word 'cryptographic' can be left out if the rouines from the library 37 * being used are not cryptographic related :-). 38 * 4. If you include any Windows specific code (or a derivative thereof) from 39 * the apps directory (application code) you must include an acknowledgement: 40 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 41 * 42 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 43 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 44 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 45 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 46 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 47 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 48 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 49 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 50 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 51 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 52 * SUCH DAMAGE. 53 * 54 * The licence and distribution terms for any publically available version or 55 * derivative of this code cannot be changed. i.e. this code cannot simply be 56 * copied and put under another distribution licence 57 * [including the GNU Public Licence.] 58 */ 59 60 /* 61 * Portions Copyright (c) 2007,2009 by Internet Systems Consortium, Inc. ("ISC") 62 * 63 * Permission to use, copy, modify, and distribute this software for any 64 * purpose with or without fee is hereby granted, provided that the above 65 * copyright notice and this permission notice appear in all copies. 66 * 67 * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES 68 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 69 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR 70 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 71 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 72 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT 73 * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 74 * 75 * Internet Systems Consortium, Inc. 76 * 950 Charter Street 77 * Redwood City, CA 94063 78 * <info@isc.org> 79 * https://www.isc.org/ 80 */ 81 82 #ifndef HEADER_MD5_H 83 #define HEADER_MD5_H 84 85 #ifdef __cplusplus 86 extern "C" { 87 #endif 88 89 #define MD5_CBLOCK 64 90 #define MD5_LBLOCK 16 91 #define MD5_BLOCK 16 92 #define MD5_LAST_BLOCK 56 93 #define MD5_LENGTH_BLOCK 8 94 #define MD5_DIGEST_LENGTH 16 95 96 typedef struct MD5state_st 97 { 98 unsigned long A,B,C,D; 99 unsigned long Nl,Nh; 100 unsigned long data[MD5_LBLOCK]; 101 int num; 102 } MD5_CTX; 103 104 #ifndef NOPROTO 105 void MD5_Init(MD5_CTX *c); 106 void MD5_Update(MD5_CTX *c, const unsigned char *data, unsigned long len); 107 void MD5_Final(unsigned char *md, MD5_CTX *c); 108 unsigned char *MD5(unsigned char *d, unsigned long n, unsigned char *md); 109 #else 110 void MD5_Init(); 111 void MD5_Update(); 112 void MD5_Final(); 113 unsigned char *MD5(); 114 #endif 115 116 /* to provide backward compatibleness to RSAREF calls ogud@tis.com 1997/11/14 */ 117 #define MD5Init(c) MD5_Init(c) 118 #define MD5Update(c,data, len) MD5_Update(c,data,len) 119 #define MD5Final(md, c) MD5_Final(md, c) 120 #ifdef __cplusplus 121 } 122 #endif 123 124 #endif 125