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