Use hcrypto for kernel md5
authorSimon Wilkinson <sxw@your-file-system.com>
Sat, 24 Apr 2010 14:43:59 +0000 (15:43 +0100)
committerDerrick Brashear <shadow@dementia.org>
Fri, 19 Nov 2010 13:08:11 +0000 (05:08 -0800)
Use the hcrypto code for kernel md5 too.

Change-Id: I84663a5e29ef8ce4cb0f20be0604198c13b72c43
Reviewed-on: http://gerrit.openafs.org/2578
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

src/afs/afs_cell.c
src/afs/afs_md5.c [deleted file]
src/afs/afs_md5.h [deleted file]
src/afs/afs_util.c
src/crypto/kernel/config.h [new file with mode: 0644]
src/crypto/kernel/roken.h [new file with mode: 0644]
src/libafs/Makefile.common.in
src/libafs/MakefileProto.LINUX.in
src/libuafs/Makefile.common.in

index c6f8c2f..03ed2c3 100644 (file)
@@ -19,7 +19,7 @@
 #include "afsincludes.h"       /* Afs-based standard headers */
 #include "afs/afs_stats.h"     /* afs statistics */
 #include "afs/afs_osi.h"
-#include "afs/afs_md5.h"
+#include "hcrypto/md5.h"
 
 /* Local variables. */
 afs_rwlock_t afs_xcell;                /* Export for cmdebug peeking at locks */
@@ -924,6 +924,7 @@ afs_NewCell(char *acellName, afs_int32 * acellHosts, int aflags,
 {
     struct cell *tc, *tcl = 0;
     afs_int32 i, newc = 0, code = 0;
+    struct md5 m;
 
     AFS_STATCNT(afs_NewCell);
 
@@ -939,7 +940,9 @@ afs_NewCell(char *acellName, afs_int32 * acellHosts, int aflags,
        tc->cellName = afs_strdup(acellName);
        tc->fsport = AFS_FSPORT;
        tc->vlport = AFS_VLPORT;
-       AFS_MD5_String(tc->cellHandle, tc->cellName, strlen(tc->cellName));
+       MD5_Init(&m);
+       MD5_Update(&m, tc->cellName, strlen(tc->cellName));
+       MD5_Final(tc->cellHandle, &m);
        AFS_RWLOCK_INIT(&tc->lock, "cell lock");
        newc = 1;
        aflags |= CNoSUID;
diff --git a/src/afs/afs_md5.c b/src/afs/afs_md5.c
deleted file mode 100644 (file)
index 6bbf920..0000000
+++ /dev/null
@@ -1,284 +0,0 @@
-/*
- * Copyright (c) 1995 - 2001 Kungliga Tekniska Högskolan
- * (Royal Institute of Technology, Stockholm, Sweden).
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <afsconfig.h>
-#include "afs/param.h"
-#include "afs/sysincludes.h"
-#include "afsincludes.h"
-
-
-
-#include "afs_md5.h"
-
-#define A m->counter[0]
-#define B m->counter[1]
-#define C m->counter[2]
-#define D m->counter[3]
-#define X data
-
-void
-AFS_MD5_Init(struct afs_md5 *m)
-{
-    m->sz[0] = 0;
-    m->sz[1] = 0;
-    D = 0x10325476;
-    C = 0x98badcfe;
-    B = 0xefcdab89;
-    A = 0x67452301;
-}
-
-#define F(x,y,z) CRAYFIX((x & y) | (~x & z))
-#define G(x,y,z) CRAYFIX((x & z) | (y & ~z))
-#define H(x,y,z) (x ^ y ^ z)
-#define I(x,y,z) CRAYFIX(y ^ (x | ~z))
-
-#define DOIT(a,b,c,d,k,s,i,OP) \
-a = b + cshift(a + OP(b,c,d) + X[k] + (i), s)
-
-#define DO1(a,b,c,d,k,s,i) DOIT(a,b,c,d,k,s,i,F)
-#define DO2(a,b,c,d,k,s,i) DOIT(a,b,c,d,k,s,i,G)
-#define DO3(a,b,c,d,k,s,i) DOIT(a,b,c,d,k,s,i,H)
-#define DO4(a,b,c,d,k,s,i) DOIT(a,b,c,d,k,s,i,I)
-
-static inline void
-calc(struct afs_md5 *m, afs_uint32 * data)
-{
-    afs_uint32 AA, BB, CC, DD;
-
-    AA = A;
-    BB = B;
-    CC = C;
-    DD = D;
-
-    /* Round 1 */
-
-    DO1(A, B, C, D, 0, 7, 0xd76aa478);
-    DO1(D, A, B, C, 1, 12, 0xe8c7b756);
-    DO1(C, D, A, B, 2, 17, 0x242070db);
-    DO1(B, C, D, A, 3, 22, 0xc1bdceee);
-
-    DO1(A, B, C, D, 4, 7, 0xf57c0faf);
-    DO1(D, A, B, C, 5, 12, 0x4787c62a);
-    DO1(C, D, A, B, 6, 17, 0xa8304613);
-    DO1(B, C, D, A, 7, 22, 0xfd469501);
-
-    DO1(A, B, C, D, 8, 7, 0x698098d8);
-    DO1(D, A, B, C, 9, 12, 0x8b44f7af);
-    DO1(C, D, A, B, 10, 17, 0xffff5bb1);
-    DO1(B, C, D, A, 11, 22, 0x895cd7be);
-
-    DO1(A, B, C, D, 12, 7, 0x6b901122);
-    DO1(D, A, B, C, 13, 12, 0xfd987193);
-    DO1(C, D, A, B, 14, 17, 0xa679438e);
-    DO1(B, C, D, A, 15, 22, 0x49b40821);
-
-    /* Round 2 */
-
-    DO2(A, B, C, D, 1, 5, 0xf61e2562);
-    DO2(D, A, B, C, 6, 9, 0xc040b340);
-    DO2(C, D, A, B, 11, 14, 0x265e5a51);
-    DO2(B, C, D, A, 0, 20, 0xe9b6c7aa);
-
-    DO2(A, B, C, D, 5, 5, 0xd62f105d);
-    DO2(D, A, B, C, 10, 9, 0x2441453);
-    DO2(C, D, A, B, 15, 14, 0xd8a1e681);
-    DO2(B, C, D, A, 4, 20, 0xe7d3fbc8);
-
-    DO2(A, B, C, D, 9, 5, 0x21e1cde6);
-    DO2(D, A, B, C, 14, 9, 0xc33707d6);
-    DO2(C, D, A, B, 3, 14, 0xf4d50d87);
-    DO2(B, C, D, A, 8, 20, 0x455a14ed);
-
-    DO2(A, B, C, D, 13, 5, 0xa9e3e905);
-    DO2(D, A, B, C, 2, 9, 0xfcefa3f8);
-    DO2(C, D, A, B, 7, 14, 0x676f02d9);
-    DO2(B, C, D, A, 12, 20, 0x8d2a4c8a);
-
-    /* Round 3 */
-
-    DO3(A, B, C, D, 5, 4, 0xfffa3942);
-    DO3(D, A, B, C, 8, 11, 0x8771f681);
-    DO3(C, D, A, B, 11, 16, 0x6d9d6122);
-    DO3(B, C, D, A, 14, 23, 0xfde5380c);
-
-    DO3(A, B, C, D, 1, 4, 0xa4beea44);
-    DO3(D, A, B, C, 4, 11, 0x4bdecfa9);
-    DO3(C, D, A, B, 7, 16, 0xf6bb4b60);
-    DO3(B, C, D, A, 10, 23, 0xbebfbc70);
-
-    DO3(A, B, C, D, 13, 4, 0x289b7ec6);
-    DO3(D, A, B, C, 0, 11, 0xeaa127fa);
-    DO3(C, D, A, B, 3, 16, 0xd4ef3085);
-    DO3(B, C, D, A, 6, 23, 0x4881d05);
-
-    DO3(A, B, C, D, 9, 4, 0xd9d4d039);
-    DO3(D, A, B, C, 12, 11, 0xe6db99e5);
-    DO3(C, D, A, B, 15, 16, 0x1fa27cf8);
-    DO3(B, C, D, A, 2, 23, 0xc4ac5665);
-
-    /* Round 4 */
-
-    DO4(A, B, C, D, 0, 6, 0xf4292244);
-    DO4(D, A, B, C, 7, 10, 0x432aff97);
-    DO4(C, D, A, B, 14, 15, 0xab9423a7);
-    DO4(B, C, D, A, 5, 21, 0xfc93a039);
-
-    DO4(A, B, C, D, 12, 6, 0x655b59c3);
-    DO4(D, A, B, C, 3, 10, 0x8f0ccc92);
-    DO4(C, D, A, B, 10, 15, 0xffeff47d);
-    DO4(B, C, D, A, 1, 21, 0x85845dd1);
-
-    DO4(A, B, C, D, 8, 6, 0x6fa87e4f);
-    DO4(D, A, B, C, 15, 10, 0xfe2ce6e0);
-    DO4(C, D, A, B, 6, 15, 0xa3014314);
-    DO4(B, C, D, A, 13, 21, 0x4e0811a1);
-
-    DO4(A, B, C, D, 4, 6, 0xf7537e82);
-    DO4(D, A, B, C, 11, 10, 0xbd3af235);
-    DO4(C, D, A, B, 2, 15, 0x2ad7d2bb);
-    DO4(B, C, D, A, 9, 21, 0xeb86d391);
-
-    A += AA;
-    B += BB;
-    C += CC;
-    D += DD;
-}
-
-/*
- * From `Performance analysis of MD5' by Joseph D. Touch <touch@isi.edu>
- */
-
-#if defined(WORDS_BIGENDIAN)
-static inline afs_uint32
-swap_afs_uint32(afs_uint32 t)
-{
-    afs_uint32 temp1, temp2;
-
-    temp1 = cshift(t, 16);
-    temp2 = temp1 >> 8;
-    temp1 &= 0x00ff00ff;
-    temp2 &= 0x00ff00ff;
-    temp1 <<= 8;
-    return temp1 | temp2;
-}
-#endif
-
-struct x32 {
-    unsigned int a:32;
-    unsigned int b:32;
-};
-
-void
-AFS_MD5_Update(struct afs_md5 *m, const void *v, size_t len)
-{
-    const unsigned char *p = v;
-    size_t old_sz = m->sz[0];
-    size_t offset;
-
-    m->sz[0] += len * 8;
-    if (m->sz[0] < old_sz)
-       ++m->sz[1];
-    offset = (old_sz / 8) % 64;
-    while (len > 0) {
-       size_t l = min(len, 64 - offset);
-       memcpy(m->save + offset, p, l);
-       offset += l;
-       p += l;
-       len -= l;
-       if (offset == 64) {
-#if defined(WORDS_BIGENDIAN)
-           int i;
-           afs_uint32 cur[16];
-           struct x32 *ui = (struct x32 *)m->save;
-           for (i = 0; i < 8; i++) {
-               cur[2 * i + 0] = swap_afs_uint32(ui[i].a);
-               cur[2 * i + 1] = swap_afs_uint32(ui[i].b);
-           }
-           calc(m, cur);
-#else
-           calc(m, (afs_uint32 *) m->save);
-#endif
-           offset = 0;
-       }
-    }
-}
-
-void
-AFS_MD5_Final(void *res, struct afs_md5 *m)
-{
-    static unsigned char zeros[72];
-    unsigned offset = (m->sz[0] / 8) % 64;
-    unsigned int dstart = (120 - offset - 1) % 64 + 1;
-
-    *zeros = 0x80;
-    memset(zeros + 1, 0, sizeof(zeros) - 1);
-    zeros[dstart + 0] = (m->sz[0] >> 0) & 0xff;
-    zeros[dstart + 1] = (m->sz[0] >> 8) & 0xff;
-    zeros[dstart + 2] = (m->sz[0] >> 16) & 0xff;
-    zeros[dstart + 3] = (m->sz[0] >> 24) & 0xff;
-    zeros[dstart + 4] = (m->sz[1] >> 0) & 0xff;
-    zeros[dstart + 5] = (m->sz[1] >> 8) & 0xff;
-    zeros[dstart + 6] = (m->sz[1] >> 16) & 0xff;
-    zeros[dstart + 7] = (m->sz[1] >> 24) & 0xff;
-    AFS_MD5_Update(m, zeros, dstart + 8);
-    {
-       int i;
-       unsigned char *r = (unsigned char *)res;
-
-       for (i = 0; i < 4; ++i) {
-           r[4 * i] = m->counter[i] & 0xFF;
-           r[4 * i + 1] = (m->counter[i] >> 8) & 0xFF;
-           r[4 * i + 2] = (m->counter[i] >> 16) & 0xFF;
-           r[4 * i + 3] = (m->counter[i] >> 24) & 0xFF;
-       }
-    }
-#if 0
-    {
-       int i;
-       afs_uint32 *r = (afs_uint32 *) res;
-
-       for (i = 0; i < 4; ++i)
-           r[i] = swap_afs_uint32(m->counter[i]);
-    }
-#endif
-}
-
-void
-AFS_MD5_String(void *res, const void *v, size_t len)
-{
-    struct afs_md5 m;
-
-    AFS_MD5_Init(&m);
-    AFS_MD5_Update(&m, v, len);
-    AFS_MD5_Final(res, &m);
-}
diff --git a/src/afs/afs_md5.h b/src/afs/afs_md5.h
deleted file mode 100644 (file)
index 935e18f..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 1995 - 2001 Kungliga Tekniska Högskolan
- * (Royal Institute of Technology, Stockholm, Sweden).
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/* $Id$ */
-
-
-struct afs_md5 {
-    unsigned int sz[2];
-    afs_uint32 counter[4];
-    unsigned char save[64];
-};
-
-void AFS_MD5_Init(struct afs_md5 *m);
-void AFS_MD5_Update(struct afs_md5 *m, const void *p, size_t len);
-void AFS_MD5_Final(void *res, struct afs_md5 *m);      /* afs_uint32 res[4] */
-void AFS_MD5_String(void *res, const void *v, size_t len);
-
-/* stuff in common between md4, md5, and sha1 */
-
-#ifndef min
-#define min(a,b) (((a)>(b))?(b):(a))
-#endif
-
-/* Vector Crays doesn't have a good 32-bit type, or more precisely,
-   int32_t as defined by <bind/bitypes.h> isn't 32 bits, and we don't
-   want to depend in being able to redefine this type.  To cope with
-   this we have to clamp the result in some places to [0,2^32); no
-   need to do this on other machines.  Did I say this was a mess?
-   */
-
-#ifdef _CRAY
-#define CRAYFIX(X) ((X) & 0xffffffff)
-#else
-#define CRAYFIX(X) (X)
-#endif
-
-#if !defined(inline) && !defined(__GNUC__)
-#define inline
-#endif
-
-static inline afs_uint32
-cshift(afs_uint32 x, unsigned int n)
-{
-    x = CRAYFIX(x);
-    return CRAYFIX((x << n) | (x >> (32 - n)));
-}
index 09646bd..37484d9 100644 (file)
@@ -37,7 +37,7 @@
 #include "afs/afs_stats.h"     /* afs statistics */
 
 #ifdef AFS_LINUX20_ENV
-#include "afs/afs_md5.h"       /* For MD5 inodes - Linux only */
+#include "hcrypto/md5.h"
 #endif
 
 #if    defined(AFS_SUN56_ENV)
@@ -374,13 +374,13 @@ afs_calc_inum(afs_int32 volume, afs_int32 vnode)
 {
     afs_int32 ino, vno = vnode;
     char digest[16];
-    struct afs_md5 ct;
+    struct md5 ct;
 
     if (afs_new_inum) {
-       AFS_MD5_Init(&ct);
-       AFS_MD5_Update(&ct, &volume, 4);
-       AFS_MD5_Update(&ct, &vnode, 4);
-       AFS_MD5_Final(digest, &ct);
+       MD5_Init(&ct);
+       MD5_Update(&ct, &volume, 4);
+       MD5_Update(&ct, &vnode, 4);
+       MD5_Final(digest, &ct);
        memcpy(&ino, digest, sizeof(afs_int32));
        ino ^= (ino ^ vno) & 1;
     } else {
diff --git a/src/crypto/kernel/config.h b/src/crypto/kernel/config.h
new file mode 100644 (file)
index 0000000..9d60b48
--- /dev/null
@@ -0,0 +1,4 @@
+#include <afsconfig.h>
+#include "afs/param.h"
+#include "afs/sysincludes.h"
+#include "afsincludes.h"
diff --git a/src/crypto/kernel/roken.h b/src/crypto/kernel/roken.h
new file mode 100644 (file)
index 0000000..e69de29
index 8bd1193..ca31511 100644 (file)
@@ -23,6 +23,7 @@ TOP_SRC_VNOPS = ${TOP_SRCDIR}/afs/VNOPS
 TOP_SRC_RXKAD = ${TOP_SRCDIR}/rxkad
 
 COMMON_INCLUDE = -I. -I.. -I../nfs \
+       -I$(TOP_SRCDIR)/crypto/kernel \
        -I${TOP_SRCDIR} \
        -I${TOP_SRCDIR}/afs \
        -I${TOP_SRCDIR}/afs/${MKAFS_OSTYPE} \
@@ -30,6 +31,7 @@ COMMON_INCLUDE = -I. -I.. -I../nfs \
        -I${TOP_SRCDIR}/rx/${MKAFS_OSTYPE} \
        -I${TOP_SRCDIR}/rxkad \
        -I${TOP_SRCDIR}/util \
+       -I${TOP_SRCDIR}/external/heimdal \
        -I${TOP_OBJDIR}/src \
        -I${TOP_OBJDIR}/src/afs \
        -I${TOP_OBJDIR}/src/afs/${MKAFS_OSTYPE} \
@@ -93,7 +95,6 @@ AFSAOBJS = \
        afs_init.o \
        afs_lock.o      \
        afs_mariner.o \
-       afs_md5.o \
        afs_memcache.o  \
        afs_fetchstore.o        \
        afs_osi.o               \
@@ -170,6 +171,7 @@ AFSAOBJS = \
        xdr_afsuuid.o   \
        xdr.o           \
        Ktoken.xdr.o    \
+       md5.o           \
        afs_uuid.o $(AFS_OS_OBJS)
 
 # These next two allow nfs and nonfs builds to occur in the same directory.
@@ -274,8 +276,6 @@ afs_init.o: $(TOP_SRC_AFS)/afs_init.c
        $(CRULE_OPT)
 afs_mariner.o: $(TOP_SRC_AFS)/afs_mariner.c
        $(CRULE_OPT)
-afs_md5.o: $(TOP_SRC_AFS)/afs_md5.c
-       $(CRULE_OPT)
 afs_osidnlc.o: $(TOP_SRC_AFS)/afs_osidnlc.c
        $(CRULE_OPT)
 afs_osi.o:     $(TOP_SRC_AFS)/afs_osi.c
@@ -486,6 +486,10 @@ afs_pag_user.o: $(TOP_SRC_AFS)/afs_user.c
 rx_pag_knet.o: $(TOP_SRC_RX)/${MKAFS_OSTYPE}/rx_knet.c
        $(CRULE_NOOPT)
 
+# Crypto
+md5.o: $(TOP_SRCDIR)/external/heimdal/hcrypto/md5.c
+       $(CRULE_OPT)
+
 # Files which are specific to particular architectures/targets
 # but have common build rules. Place here instead of duplicating
 # in the per-platform Makefiles.
index 63b2f35..655c0ce 100644 (file)
@@ -79,6 +79,9 @@ COMMON_DEFINES=-D__KERNEL__ -DKERNEL -D_KERNEL -DMODULE ${SMP_DEF}
 LINUX_KERNEL_PATH=@LINUX_KERNEL_PATH@
 LINUX_KERNEL_BUILD=@LINUX_KERNEL_BUILD@
 
+CFLAGS_md5.o = -I$(TOP_SRCDIR)/crypto/kernel \
+              -I$(TOP_SRCDIR)/external/heimdal/hcrypto
+
 # System specific build commands and flags
 <linux26 linux_26>
 # All the platform-specific and kernel-related things are provided by
index e91128c..70a1300 100644 (file)
@@ -108,7 +108,6 @@ UAFSOBJ = \
        $(UOBJ)/afs_lock.o      \
        $(UOBJ)/afs_mariner.o \
        $(UOBJ)/afs_memcache.o  \
-       $(UOBJ)/afs_md5.o       \
        $(UOBJ)/afs_fetchstore.o        \
        $(UOBJ)/afs_osidnlc.o   \
        $(UOBJ)/afs_osi_pag.o \
@@ -250,7 +249,6 @@ AFSWEBOBJ = \
        $(WEBOBJ)/afs_lock.o \
        $(WEBOBJ)/afs_mariner.o \
        $(WEBOBJ)/afs_memcache.o \
-       $(WEBOBJ)/afs_md5.o \
        $(WEBOBJ)/afs_fetchstore.o \
        $(WEBOBJ)/afs_osidnlc.o \
        $(WEBOBJ)/afs_osi_pag.o \
@@ -392,7 +390,6 @@ AFSWEBOBJKRB = \
        $(WEBOBJ)/afs_lock.o \
        $(WEBOBJ)/afs_mariner.o \
        $(WEBOBJ)/afs_memcache.o \
-       $(WEBOBJ)/afs_md5.o \
        $(WEBOBJ)/afs_fetchstore.o \
        $(WEBOBJ)/afs_osidnlc.o \
        $(WEBOBJ)/afs_osi_pag.o \
@@ -529,7 +526,6 @@ JUAFSOBJ = \
        $(JUAFS)/afs_lock.o     \
        $(JUAFS)/afs_mariner.o \
        $(JUAFS)/afs_memcache.o \
-       $(JUAFS)/afs_md5.o \
        $(JUAFS)/afs_fetchstore.o       \
        $(JUAFS)/afs_osidnlc.o  \
        $(JUAFS)/afs_osi_pag.o \
@@ -752,8 +748,6 @@ $(UOBJ)/afs_lock.o: $(TOP_SRC_AFS)/afs_lock.c
        $(CRULE1)
 $(UOBJ)/afs_memcache.o: $(TOP_SRC_AFS)/afs_memcache.c
        $(CRULE1)
-$(UOBJ)/afs_md5.o: $(TOP_SRC_AFS)/afs_md5.c
-       $(CRULE1)
 $(UOBJ)/afs_fetchstore.o: $(TOP_SRC_AFS)/afs_fetchstore.c
        $(CRULE1)
 $(UOBJ)/afs_stat.o: $(TOP_SRC_AFS)/afs_stat.c