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#if IS_ENABLED(CONFIG_HASH_VERIFY) 18#define HARGS 6 19#else 20#define HARGS 5 21#endif 22 23static int do_hash(struct cmd_tbl *cmdtp, int flag, int argc, 24 char *const argv[]) 25{ 26 char *s; 27 int flags = HASH_FLAG_ENV; 28 29 if (argc < (HARGS - 1)) 30 return CMD_RET_USAGE; 31 32#if IS_ENABLED(CONFIG_HASH_VERIFY) 33 if (!strcmp(argv[1], "-v")) { 34 flags |= HASH_FLAG_VERIFY; 35 argc--; 36 argv++; 37 } 38#endif 39 /* Move forward to 'algorithm' parameter */ 40 argc--; 41 argv++; 42 for (s = *argv; *s; s++) 43 *s = tolower(*s); 44 return hash_command(*argv, flags, cmdtp, flag, argc - 1, argv + 1); 45} 46 47U_BOOT_CMD( 48 hash, HARGS, 1, do_hash, 49 "compute hash message digest", 50 "algorithm address count [[*]hash_dest]\n" 51 " - compute message digest [save to env var / *address]" 52#if IS_ENABLED(CONFIG_HASH_VERIFY) 53 "\nhash -v algorithm address count [*]hash\n" 54 " - verify message digest of memory area to immediate value, \n" 55 " env var or *address" 56#endif 57); 58