sync this with changes made in libkern.

This commit is contained in:
explorer 1999-02-04 05:10:36 +00:00
parent b131132411
commit ee5b58d3f8

View File

@ -1,4 +1,4 @@
/* $NetBSD: md5c.c,v 1.7 1998/11/13 15:48:29 christos Exp $ */ /* $NetBSD: md5c.c,v 1.8 1999/02/04 05:10:36 explorer Exp $ */
/* /*
* This file is derived from the RSA Data Security, Inc. MD5 Message-Digest * This file is derived from the RSA Data Security, Inc. MD5 Message-Digest
@ -31,9 +31,10 @@
#if !defined(_KERNEL) #if !defined(_KERNEL)
#include "namespace.h" #include "namespace.h"
#endif
#include <sys/types.h> #include <sys/types.h>
#else
#include <sys/param.h>
#endif
#if defined(_KERNEL) || defined(_STANDALONE) #if defined(_KERNEL) || defined(_STANDALONE)
#include <sys/systm.h> #include <sys/systm.h>
@ -43,7 +44,16 @@
#include <md5.h> #include <md5.h>
#endif /* _KERNEL || _STANDALONE */ #endif /* _KERNEL || _STANDALONE */
/*
* XXX Kludge until there is resolution regarding mem*() functions
* XXX in the kernel.
*/
#if defined(_KERNEL) || defined(_STANDALONE)
#define memcpy(s, d, l) bcopy((d), (s), (l))
#define ZEROIZE(d, l) bzero((d), (l))
#else
#define ZEROIZE(d, l) memset((d), 0, (l)) #define ZEROIZE(d, l) memset((d), 0, (l))
#endif /* _KERNEL || _STANDALONE */
typedef unsigned char *POINTER; typedef unsigned char *POINTER;
typedef u_int16_t UINT2; typedef u_int16_t UINT2;
@ -207,7 +217,8 @@ MD5Update(context, input, inputLen)
/* Transform as many times as possible. */ /* Transform as many times as possible. */
if (inputLen >= partLen) { if (inputLen >= partLen) {
memcpy(&context->buffer[idx], input, partLen); memcpy((POINTER)&context->buffer[idx],
(POINTER)input, partLen);
MD5Transform(context->state, context->buffer); MD5Transform(context->state, context->buffer);
for (i = partLen; i + 63 < inputLen; i += 64) for (i = partLen; i + 63 < inputLen; i += 64)
@ -218,7 +229,8 @@ MD5Update(context, input, inputLen)
i = 0; i = 0;
/* Buffer remaining input */ /* Buffer remaining input */
memcpy(&context->buffer[idx], &input[i], inputLen - i); memcpy((POINTER)&context->buffer[idx], (POINTER)&input[i],
inputLen - i);
} }
/* /*
@ -248,7 +260,7 @@ MD5Final(digest, context)
Encode(digest, context->state, 16); Encode(digest, context->state, 16);
/* Zeroize sensitive information. */ /* Zeroize sensitive information. */
ZEROIZE(context, sizeof(*context)); ZEROIZE((POINTER)context, sizeof(*context));
} }
/* /*
@ -341,5 +353,5 @@ MD5Transform(state, block)
state[3] += d; state[3] += d;
/* Zeroize sensitive information. */ /* Zeroize sensitive information. */
ZEROIZE(x, sizeof (x)); ZEROIZE((POINTER)x, sizeof (x));
} }