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