diff --git a/common/cmd_md5sum.c b/common/cmd_md5sum.c
index b93dd9b..fbe0aba 100644
--- a/common/cmd_md5sum.c
+++ b/common/cmd_md5sum.c
@@ -1,4 +1,7 @@
 /*
+ * (C) Copyright 2011
+ * Joe Hershberger, National Instruments, joe.hershberger@ni.com
+ *
  * (C) Copyright 2000
  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  *
@@ -25,6 +28,96 @@
 #include <command.h>
 #include <u-boot/md5.h>
 
+#ifdef CONFIG_MD5SUM_VERIFY
+static int parse_verify_sum(char *verify_str, u8 *vsum)
+{
+	if (*verify_str == '*') {
+		u8 *ptr;
+
+		ptr = (u8 *)simple_strtoul(verify_str + 1, NULL, 16);
+		memcpy(vsum, ptr, 16);
+	} else {
+		unsigned int i;
+		char *vsum_str;
+
+		if (strlen(verify_str) == 32)
+			vsum_str = verify_str;
+		else {
+			vsum_str = getenv(verify_str);
+			if (vsum_str == NULL || strlen(vsum_str) != 32)
+				return 1;
+		}
+
+		for (i = 0; i < 16; i++) {
+			char *nullp = vsum_str + (i + 1) * 2;
+			char end = *nullp;
+
+			*nullp = '\0';
+			*(u8 *)(vsum + i) =
+				simple_strtoul(vsum_str + (i * 2), NULL, 16);
+			*nullp = end;
+		}
+	}
+	return 0;
+}
+
+int do_md5sum(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+	ulong addr, len;
+	unsigned int i;
+	u8 output[16];
+	u8 vsum[16];
+	int verify = 0;
+	int ac;
+	char * const *av;
+
+	if (argc < 3)
+		return CMD_RET_USAGE;
+
+	av = argv + 1;
+	ac = argc - 1;
+	if (strcmp(*av, "-v") == 0) {
+		verify = 1;
+		av++;
+		ac--;
+		if (ac < 3)
+			return CMD_RET_USAGE;
+	}
+
+	addr = simple_strtoul(*av++, NULL, 16);
+	len = simple_strtoul(*av++, NULL, 16);
+
+	md5_wd((unsigned char *) addr, len, output, CHUNKSZ_MD5);
+
+	if (!verify) {
+		printf("md5 for %08lx ... %08lx ==> ", addr, addr + len - 1);
+		for (i = 0; i < 16; i++)
+			printf("%02x", output[i]);
+		printf("\n");
+	} else {
+		char *verify_str = *av++;
+
+		if (parse_verify_sum(verify_str, vsum)) {
+			printf("ERROR: %s does not contain a valid md5 sum\n",
+				verify_str);
+			return 1;
+		}
+		if (memcmp(output, vsum, 16) != 0) {
+			printf("md5 for %08lx ... %08lx ==> ", addr,
+				addr + len - 1);
+			for (i = 0; i < 16; i++)
+				printf("%02x", output[i]);
+			printf(" != ");
+			for (i = 0; i < 16; i++)
+				printf("%02x", vsum[i]);
+			printf(" ** ERROR **\n");
+			return 1;
+		}
+	}
+
+	return 0;
+}
+#else
 static int do_md5sum(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
 	unsigned long addr, len;
@@ -45,9 +138,21 @@
 
 	return 0;
 }
+#endif
 
+#ifdef CONFIG_MD5SUM_VERIFY
+U_BOOT_CMD(
+	md5sum,	5,	1,	do_md5sum,
+	"compute MD5 message digest",
+	"address count\n"
+		"    - compute MD5 message digest\n"
+	"md5sum -v address count [*]sum\n"
+		"    - verify md5sum of memory area"
+);
+#else
 U_BOOT_CMD(
 	md5sum,	3,	1,	do_md5sum,
 	"compute MD5 message digest",
 	"address count"
 );
+#endif
