diff options
| author | Simon Glass <sjg@chromium.org> | 2012-12-05 14:46:37 +0000 | 
|---|---|---|
| committer | Tom Rini <trini@ti.com> | 2012-12-11 13:17:34 -0700 | 
| commit | e50b12c95cb12c8e8a5efcc1047747740fcf8e6a (patch) | |
| tree | bf76810857f424d8065f331d1d56572de14be86a /common/cmd_sha1sum.c | |
| parent | 460408ef9a14b8f8896d1bc8aa0f702b47c26bb8 (diff) | |
| download | olio-uboot-2014.01-e50b12c95cb12c8e8a5efcc1047747740fcf8e6a.tar.xz olio-uboot-2014.01-e50b12c95cb12c8e8a5efcc1047747740fcf8e6a.zip | |
sha1sum: Use generic hash layer
Update the code to use the hash layer instead of local code.
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'common/cmd_sha1sum.c')
| -rw-r--r-- | common/cmd_sha1sum.c | 129 | 
1 files changed, 4 insertions, 125 deletions
| diff --git a/common/cmd_sha1sum.c b/common/cmd_sha1sum.c index 8db5456c9..fe927ab24 100644 --- a/common/cmd_sha1sum.c +++ b/common/cmd_sha1sum.c @@ -26,73 +26,11 @@  #include <common.h>  #include <command.h> +#include <hash.h>  #include <sha1.h> -/* - * Store the resulting sum to an address or variable - */ -static void store_result(const u8 *sum, const char *dest) -{ -	unsigned int i; - -	if (*dest == '*') { -		u8 *ptr; - -		ptr = (u8 *)simple_strtoul(dest + 1, NULL, 16); -		for (i = 0; i < 20; i++) -			*ptr++ = sum[i]; -	} else { -		char str_output[41]; -		char *str_ptr = str_output; - -		for (i = 0; i < 20; i++) { -			sprintf(str_ptr, "%02x", sum[i]); -			str_ptr += 2; -		} -		str_ptr = '\0'; -		setenv(dest, str_output); -	} -} - -#ifdef CONFIG_SHA1SUM_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, 20); -	} else { -		unsigned int i; -		char *vsum_str; - -		if (strlen(verify_str) == 40) -			vsum_str = verify_str; -		else { -			vsum_str = getenv(verify_str); -			if (vsum_str == NULL || strlen(vsum_str) != 40) -				return 1; -		} - -		for (i = 0; i < 20; 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_sha1sum(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])  { -	ulong addr, len; -	unsigned int i; -	u8 output[20]; -	u8 vsum[20];  	int verify = 0;  	int ac;  	char * const *av; @@ -102,75 +40,16 @@ int do_sha1sum(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])  	av = argv + 1;  	ac = argc - 1; +#ifdef CONFIG_SHA1SUM_VERIFY  	if (strcmp(*av, "-v") == 0) {  		verify = 1;  		av++;  		ac--; -		if (ac < 3) -			return CMD_RET_USAGE;  	} +#endif -	addr = simple_strtoul(*av++, NULL, 16); -	len = simple_strtoul(*av++, NULL, 16); - -	sha1_csum_wd((unsigned char *) addr, len, output, CHUNKSZ_SHA1); - -	if (!verify) { -		printf("SHA1 for %08lx ... %08lx ==> ", addr, addr + len - 1); -		for (i = 0; i < 20; i++) -			printf("%02x", output[i]); -		printf("\n"); - -		if (ac > 2) -			store_result(output, *av); -	} else { -		char *verify_str = *av++; - -		if (parse_verify_sum(verify_str, vsum)) { -			printf("ERROR: %s does not contain a valid SHA1 sum\n", -				verify_str); -			return 1; -		} -		if (memcmp(output, vsum, 20) != 0) { -			printf("SHA1 for %08lx ... %08lx ==> ", addr, -				addr + len - 1); -			for (i = 0; i < 20; i++) -				printf("%02x", output[i]); -			printf(" != "); -			for (i = 0; i < 20; i++) -				printf("%02x", vsum[i]); -			printf(" ** ERROR **\n"); -			return 1; -		} -	} - -	return 0; -} -#else -static int do_sha1sum(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) -{ -	unsigned long addr, len; -	unsigned int i; -	u8 output[20]; - -	if (argc < 3) -		return CMD_RET_USAGE; - -	addr = simple_strtoul(argv[1], NULL, 16); -	len = simple_strtoul(argv[2], NULL, 16); - -	sha1_csum_wd((unsigned char *) addr, len, output, CHUNKSZ_SHA1); -	printf("SHA1 for %08lx ... %08lx ==> ", addr, addr + len - 1); -	for (i = 0; i < 20; i++) -		printf("%02x", output[i]); -	printf("\n"); - -	if (argc > 3) -		store_result(output, argv[3]); - -	return 0; +	return hash_command("sha1", verify, cmdtp, flag, ac, av);  } -#endif  #ifdef CONFIG_SHA1SUM_VERIFY  U_BOOT_CMD( |