1c9502b53SPoul-Henning Kamp /* MD5.H - header file for MD5C.C 2c9502b53SPoul-Henning Kamp */ 3c9502b53SPoul-Henning Kamp 460727d8bSWarner Losh /*- 562cf53fdSPedro F. Giffuni SPDX-License-Identifier: RSA-MD 662cf53fdSPedro F. Giffuni 760727d8bSWarner Losh Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All 8c9502b53SPoul-Henning Kamp rights reserved. 9c9502b53SPoul-Henning Kamp 10c9502b53SPoul-Henning Kamp License to copy and use this software is granted provided that it 11c9502b53SPoul-Henning Kamp is identified as the "RSA Data Security, Inc. MD5 Message-Digest 12c9502b53SPoul-Henning Kamp Algorithm" in all material mentioning or referencing this software 13c9502b53SPoul-Henning Kamp or this function. 14c9502b53SPoul-Henning Kamp 15c9502b53SPoul-Henning Kamp License is also granted to make and use derivative works provided 16c9502b53SPoul-Henning Kamp that such works are identified as "derived from the RSA Data 17c9502b53SPoul-Henning Kamp Security, Inc. MD5 Message-Digest Algorithm" in all material 18c9502b53SPoul-Henning Kamp mentioning or referencing the derived work. 19c9502b53SPoul-Henning Kamp 20c9502b53SPoul-Henning Kamp RSA Data Security, Inc. makes no representations concerning either 21c9502b53SPoul-Henning Kamp the merchantability of this software or the suitability of this 22c9502b53SPoul-Henning Kamp software for any particular purpose. It is provided "as is" 23c9502b53SPoul-Henning Kamp without express or implied warranty of any kind. 24c9502b53SPoul-Henning Kamp 25c9502b53SPoul-Henning Kamp These notices must be retained in any copies of any part of this 26c9502b53SPoul-Henning Kamp documentation and/or software. 27c9502b53SPoul-Henning Kamp */ 28c9502b53SPoul-Henning Kamp 29a4c3c477SPoul-Henning Kamp #ifndef _SYS_MD5_H_ 30a4c3c477SPoul-Henning Kamp #define _SYS_MD5_H_ 31b1955eecSAndre Oppermann 32*e7a629c8SKyle Evans #include <sys/types.h> 33*e7a629c8SKyle Evans 34b1955eecSAndre Oppermann #define MD5_BLOCK_LENGTH 64 35b1955eecSAndre Oppermann #define MD5_DIGEST_LENGTH 16 36b1955eecSAndre Oppermann #define MD5_DIGEST_STRING_LENGTH (MD5_DIGEST_LENGTH * 2 + 1) 37b1955eecSAndre Oppermann 38c9502b53SPoul-Henning Kamp /* MD5 context. */ 39c60e2168SPeter Wemm typedef struct MD5Context { 4040060a90SPoul-Henning Kamp u_int32_t state[4]; /* state (ABCD) */ 4140060a90SPoul-Henning Kamp u_int32_t count[2]; /* number of bits, modulo 2^64 (lsb first) */ 42c9502b53SPoul-Henning Kamp unsigned char buffer[64]; /* input buffer */ 43c9502b53SPoul-Henning Kamp } MD5_CTX; 44c9502b53SPoul-Henning Kamp 45*e7a629c8SKyle Evans #ifndef _KERNEL 46*e7a629c8SKyle Evans 47*e7a629c8SKyle Evans /* Ensure libmd symbols do not clash with libcrypto */ 48*e7a629c8SKyle Evans 49*e7a629c8SKyle Evans #ifndef MD5Init 50*e7a629c8SKyle Evans #define MD5Init _libmd_MD5Init 51*e7a629c8SKyle Evans #endif 52*e7a629c8SKyle Evans #ifndef MD5Update 53*e7a629c8SKyle Evans #define MD5Update _libmd_MD5Update 54*e7a629c8SKyle Evans #endif 55*e7a629c8SKyle Evans #ifndef MD5Pad 56*e7a629c8SKyle Evans #define MD5Pad _libmd_MD5Pad 57*e7a629c8SKyle Evans #endif 58*e7a629c8SKyle Evans #ifndef MD5Final 59*e7a629c8SKyle Evans #define MD5Final _libmd_MD5Final 60*e7a629c8SKyle Evans #endif 61*e7a629c8SKyle Evans #ifndef MD5Transform 62*e7a629c8SKyle Evans #define MD5Transform _libmd_MD5Transform 63*e7a629c8SKyle Evans #endif 64*e7a629c8SKyle Evans #ifndef MD5End 65*e7a629c8SKyle Evans #define MD5End _libmd_MD5End 66*e7a629c8SKyle Evans #endif 67*e7a629c8SKyle Evans #ifndef MD5Fd 68*e7a629c8SKyle Evans #define MD5Fd _libmd_MD5Fd 69*e7a629c8SKyle Evans #endif 70*e7a629c8SKyle Evans #ifndef MD5FdChunk 71*e7a629c8SKyle Evans #define MD5FdChunk _libmd_MD5FdChunk 72*e7a629c8SKyle Evans #endif 73*e7a629c8SKyle Evans #ifndef MD5File 74*e7a629c8SKyle Evans #define MD5File _libmd_MD5File 75*e7a629c8SKyle Evans #endif 76*e7a629c8SKyle Evans #ifndef MD5FileChunk 77*e7a629c8SKyle Evans #define MD5FileChunk _libmd_MD5FileChunk 78*e7a629c8SKyle Evans #endif 79*e7a629c8SKyle Evans #ifndef MD5Data 80*e7a629c8SKyle Evans #define MD5Data _libmd_MD5Data 81*e7a629c8SKyle Evans #endif 82*e7a629c8SKyle Evans 83*e7a629c8SKyle Evans #endif 84*e7a629c8SKyle Evans 85f7787644SJoerg Wunsch #include <sys/cdefs.h> 86f7787644SJoerg Wunsch 87f7787644SJoerg Wunsch __BEGIN_DECLS 88c9502b53SPoul-Henning Kamp void MD5Init (MD5_CTX *); 8925a14196SPoul-Henning Kamp void MD5Update (MD5_CTX *, const void *, unsigned int); 908254c3c5SAlan Somers void MD5Final (unsigned char[__min_size(MD5_DIGEST_LENGTH)], MD5_CTX *); 915f4ea90bSConrad Meyer #ifndef _KERNEL 925f4ea90bSConrad Meyer char * MD5End(MD5_CTX *, char *); 93de13c242SEd Maste char * MD5Fd(int, char *); 94de13c242SEd Maste char * MD5FdChunk(int, char *, off_t, off_t); 955f4ea90bSConrad Meyer char * MD5File(const char *, char *); 965f4ea90bSConrad Meyer char * MD5FileChunk(const char *, char *, off_t, off_t); 975f4ea90bSConrad Meyer char * MD5Data(const void *, unsigned int, char *); 985f4ea90bSConrad Meyer #endif 99f7787644SJoerg Wunsch __END_DECLS 100a4c3c477SPoul-Henning Kamp #endif /* _SYS_MD5_H_ */ 101