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