1 /* 2 * Copyright (c) 2012 The Chromium OS Authors. 3 * 4 * (C) Copyright 2011 5 * Joe Hershberger, National Instruments, joe.hershberger@ni.com 6 * 7 * (C) Copyright 2000 8 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. 9 * 10 * SPDX-License-Identifier: GPL-2.0+ 11 */ 12 13 #include <common.h> 14 #include <command.h> 15 #include <hash.h> 16 #include <linux/ctype.h> 17 18 static int do_hash(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) 19 { 20 char *s; 21 int flags = HASH_FLAG_ENV; 22 23 #ifdef CONFIG_HASH_VERIFY 24 if (argc < 4) 25 return CMD_RET_USAGE; 26 if (!strcmp(argv[1], "-v")) { 27 flags |= HASH_FLAG_VERIFY; 28 argc--; 29 argv++; 30 } 31 #endif 32 /* Move forward to 'algorithm' parameter */ 33 argc--; 34 argv++; 35 for (s = *argv; *s; s++) 36 *s = tolower(*s); 37 return hash_command(*argv, flags, cmdtp, flag, argc - 1, argv + 1); 38 } 39 40 #ifdef CONFIG_HASH_VERIFY 41 #define HARGS 6 42 #else 43 #define HARGS 5 44 #endif 45 46 U_BOOT_CMD( 47 hash, HARGS, 1, do_hash, 48 "compute hash message digest", 49 "algorithm address count [[*]hash_dest]\n" 50 " - compute message digest [save to env var / *address]" 51 #ifdef CONFIG_HASH_VERIFY 52 "\nhash -v algorithm address count [*]hash\n" 53 " - verify message digest of memory area to immediate value, \n" 54 " env var or *address" 55 #endif 56 ); 57