1 /*
\r * Copyright (c) 1995, 1996, 1997 Kungliga Tekniska H
\9agskolan
\r * (Royal Institute of Technology, Stockholm, Sweden).
\r * All rights reserved.
\r *
\r * Redistribution and use in source and binary forms, with or without
\r * modification, are permitted provided that the following conditions
\r * are met:
\r *
\r * 1. Redistributions of source code must retain the above copyright
\r * notice, this list of conditions and the following disclaimer.
\r *
\r * 2. Redistributions in binary form must reproduce the above copyright
\r * notice, this list of conditions and the following disclaimer in the
\r * documentation and/or other materials provided with the distribution.
\r *
\r * 3. All advertising materials mentioning features or use of this software
\r * must display the following acknowledgement:
\r * This product includes software developed by the Kungliga Tekniska
\r * H
\9agskolan and its contributors.
\r *
\r * 4. Neither the name of the Institute nor the names of its contributors
\r * may be used to endorse or promote products derived from this software
\r * without specific prior written permission.
\r *
\r * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
\r * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
\r * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
\r * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
\r * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
\r * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
\r * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
\r * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
\r * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
\r * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
\r * SUCH DAMAGE.
\r */
\r\r/* $Id: md5.h,v 1.2 2001/12/04 02:06:30 rjs3 Exp $ */
\r\r#include <stdlib.h>
\r#ifdef HAVE_SYS_TYPES_H
\r#include <sys/types.h>
\r#endif
\r#ifdef HAVE_SYS_BITYPES_H
\r#include <sys/bitypes.h>
\r#endif
\r#ifdef KRB5
\r#include <krb5-types.h>
\r#elif defined(KRB4)
\r#include <ktypes.h>
\r#endif
\r\rstruct md5 {
\r unsigned int offset;
\r unsigned int sz;
\r u_int32_t counter[4];
\r unsigned char save[64];
\r};
\r\rvoid md5_init (struct md5 *m);
\rvoid md5_update (struct md5 *m, const void *p, size_t len);
\rvoid md5_finito (struct md5 *m, void *res); /* u_int32_t res[4] */
\r\r/*
\r * Functions for compatibility that have never been tested.
\r */
\rtypedef struct {
\r u_int32_t i[2]; /* number of _bits_ handled mod 2^64 */
\r u_int32_t buf[4]; /* scratch buffer */
\r unsigned char in[64]; /* input buffer */
\r} MD5_CTX_PREAMBLE;
\r\rtypedef struct {
\r union {
\r MD5_CTX_PREAMBLE preamble_;
\r struct md5 d5;
\r } m;
\r} MD5_CTX;
\r\rvoid MD5Init (MD5_CTX *mdContext);
\rvoid MD5Update (MD5_CTX *mdContext,
\r const unsigned char *inBuf,
\r unsigned int inLen);
\rvoid MD5Final (unsigned char digest[16], MD5_CTX *mdContext);
\r\r#ifndef NO_MD5_MACROS
\r#define MD5Init(mdContext) md5_init(&(mdContext)->m.d5)
\r#define MD5Update(mdCtx, inBuf, inLen) md5_update(&(mdCtx)->m.d5, inBuf, inLen)
\r#define MD5Final(digest, mdCtx) md5_finito(&(mdCtx)->m.d5, (digest))
\r#endif
\r