diff --git a/contrib/pgcrypto/md5.c b/contrib/pgcrypto/md5.c
index 4a236178760628fdeb48b90255f32756f58f50f1..baf9ae00f9523d5d27deec9d8765376f150ce36c 100644
--- a/contrib/pgcrypto/md5.c
+++ b/contrib/pgcrypto/md5.c
@@ -1,4 +1,4 @@
-/*	$PostgreSQL: pgsql/contrib/pgcrypto/md5.c,v 1.11 2004/05/07 00:24:57 tgl Exp $	*/
+/*	$PostgreSQL: pgsql/contrib/pgcrypto/md5.c,v 1.12 2004/08/29 16:43:05 tgl Exp $	*/
 /*	   $KAME: md5.c,v 1.3 2000/02/22 14:01:17 itojun Exp $	   */
 
 /*
@@ -155,20 +155,18 @@ md5_loop(md5_ctxt * ctxt, const uint8 *input, unsigned len)
 
 	if (len >= gap)
 	{
-		bcopy((void *) input, (void *) (ctxt->md5_buf + ctxt->md5_i),
-			  gap);
+		memmove(ctxt->md5_buf + ctxt->md5_i, input, gap);
 		md5_calc(ctxt->md5_buf, ctxt);
 
 		for (i = gap; i + MD5_BUFLEN <= len; i += MD5_BUFLEN)
 			md5_calc((uint8 *) (input + i), ctxt);
 
 		ctxt->md5_i = len - i;
-		bcopy((void *) (input + i), (void *) ctxt->md5_buf, ctxt->md5_i);
+		memmove(ctxt->md5_buf, input + i, ctxt->md5_i);
 	}
 	else
 	{
-		bcopy((void *) input, (void *) (ctxt->md5_buf + ctxt->md5_i),
-			  len);
+		memmove(ctxt->md5_buf + ctxt->md5_i, input, len);
 		ctxt->md5_i += len;
 	}
 }
@@ -182,24 +180,21 @@ md5_pad(md5_ctxt * ctxt)
 	gap = MD5_BUFLEN - ctxt->md5_i;
 	if (gap > 8)
 	{
-		bcopy((void *) md5_paddat,
-			  (void *) (ctxt->md5_buf + ctxt->md5_i),
-			  gap - sizeof(ctxt->md5_n));
+		memmove(ctxt->md5_buf + ctxt->md5_i, md5_paddat,
+				gap - sizeof(ctxt->md5_n));
 	}
 	else
 	{
 		/* including gap == 8 */
-		bcopy((void *) md5_paddat, (void *) (ctxt->md5_buf + ctxt->md5_i),
-			  gap);
+		memmove(ctxt->md5_buf + ctxt->md5_i, md5_paddat, gap);
 		md5_calc(ctxt->md5_buf, ctxt);
-		bcopy((void *) (md5_paddat + gap),
-			  (void *) ctxt->md5_buf,
-			  MD5_BUFLEN - sizeof(ctxt->md5_n));
+		memmove(ctxt->md5_buf, md5_paddat + gap,
+				MD5_BUFLEN - sizeof(ctxt->md5_n));
 	}
 
 	/* 8 byte word */
 #if BYTE_ORDER == LITTLE_ENDIAN
-	bcopy(&ctxt->md5_n8[0], &ctxt->md5_buf[56], 8);
+	memmove(&ctxt->md5_buf[56], &ctxt->md5_n8[0], 8);
 #endif
 #if BYTE_ORDER == BIG_ENDIAN
 	ctxt->md5_buf[56] = ctxt->md5_n8[7];
@@ -220,7 +215,7 @@ md5_result(uint8 *digest, md5_ctxt * ctxt)
 {
 	/* 4 byte words */
 #if BYTE_ORDER == LITTLE_ENDIAN
-	bcopy(&ctxt->md5_st8[0], digest, 16);
+	memmove(digest, &ctxt->md5_st8[0], 16);
 #endif
 #if BYTE_ORDER == BIG_ENDIAN
 	digest[0] = ctxt->md5_st8[3];
diff --git a/contrib/pgcrypto/sha1.c b/contrib/pgcrypto/sha1.c
index 0fc78bba437787ff80afd42cb8c4ef6c1e734476..1a013f5409552674e9774a97de0eb7560041b609 100644
--- a/contrib/pgcrypto/sha1.c
+++ b/contrib/pgcrypto/sha1.c
@@ -1,4 +1,4 @@
-/*	$PostgreSQL: pgsql/contrib/pgcrypto/sha1.c,v 1.13 2004/05/07 00:24:57 tgl Exp $ */
+/*	$PostgreSQL: pgsql/contrib/pgcrypto/sha1.c,v 1.14 2004/08/29 16:43:05 tgl Exp $ */
 /*	   $KAME: sha1.c,v 1.3 2000/02/22 14:01:18 itojun Exp $    */
 
 /*
@@ -102,7 +102,7 @@ sha1_step(struct sha1_ctxt * ctxt)
 #if BYTE_ORDER == LITTLE_ENDIAN
 	struct sha1_ctxt tctxt;
 
-	bcopy(&ctxt->m.b8[0], &tctxt.m.b8[0], 64);
+	memmove(&tctxt.m.b8[0], &ctxt->m.b8[0], 64);
 	ctxt->m.b8[0] = tctxt.m.b8[3];
 	ctxt->m.b8[1] = tctxt.m.b8[2];
 	ctxt->m.b8[2] = tctxt.m.b8[1];
@@ -304,7 +304,7 @@ sha1_loop(struct sha1_ctxt * ctxt, const uint8 *input0, size_t len)
 		gaplen = 64 - gapstart;
 
 		copysiz = (gaplen < len - off) ? gaplen : len - off;
-		bcopy(&input[off], &ctxt->m.b8[gapstart], copysiz);
+		memmove(&ctxt->m.b8[gapstart], &input[off], copysiz);
 		COUNT += copysiz;
 		COUNT %= 64;
 		ctxt->c.b64[0] += copysiz * 8;
@@ -322,7 +322,7 @@ sha1_result(struct sha1_ctxt * ctxt, uint8 *digest0)
 	digest = (uint8 *) digest0;
 	sha1_pad(ctxt);
 #if BYTE_ORDER == BIG_ENDIAN
-	bcopy(&ctxt->h.b8[0], digest, 20);
+	memmove(digest, &ctxt->h.b8[0], 20);
 #else
 	digest[0] = ctxt->h.b8[3];
 	digest[1] = ctxt->h.b8[2];