1/* 2 * Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC") 3 * Copyright (C) 2000, 2001 Internet Software Consortium. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for any 6 * purpose with or without fee is hereby granted, provided that the above 7 * copyright notice and this permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH 10 * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 11 * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, 12 * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 13 * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 14 * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 15 * PERFORMANCE OF THIS SOFTWARE. 16 */ 17 18/* $Id: md5.h,v 1.16 2007/06/19 23:47:18 tbox Exp $ */ 19 20/*! \file isc/md5.h 21 * \brief This is the header file for the MD5 message-digest algorithm. 22 * 23 * The algorithm is due to Ron Rivest. This code was 24 * written by Colin Plumb in 1993, no copyright is claimed. 25 * This code is in the public domain; do with it what you wish. 26 * 27 * Equivalent code is available from RSA Data Security, Inc. 28 * This code has been tested against that, and is equivalent, 29 * except that you don't need to include two pages of legalese 30 * with every copy. 31 * 32 * To compute the message digest of a chunk of bytes, declare an 33 * MD5Context structure, pass it to MD5Init, call MD5Update as 34 * needed on buffers full of bytes, and then call MD5Final, which 35 * will fill a supplied 16-byte array with the digest. 36 * 37 * Changed so as no longer to depend on Colin Plumb's `usual.h' 38 * header definitions; now uses stuff from dpkg's config.h 39 * - Ian Jackson <ijackson@nyx.cs.du.edu>. 40 * Still in the public domain. 41 */ 42 43#ifndef ISC_MD5_H 44#define ISC_MD5_H 1 45 46#include <isc/lang.h> 47#include <isc/types.h> 48 49#define ISC_MD5_DIGESTLENGTH 16U 50 51typedef struct { 52 isc_uint32_t buf[4]; 53 isc_uint32_t bytes[2]; 54 isc_uint32_t in[16]; 55} isc_md5_t; 56 57ISC_LANG_BEGINDECLS 58 59void 60isc_md5_init(isc_md5_t *ctx); 61 62void 63isc_md5_invalidate(isc_md5_t *ctx); 64 65void 66isc_md5_update(isc_md5_t *ctx, const unsigned char *buf, unsigned int len); 67 68void 69isc_md5_final(isc_md5_t *ctx, unsigned char *digest); 70 71ISC_LANG_ENDDECLS 72 73#endif /* ISC_MD5_H */ 74