[U-Boot] [PATCH 3/4] gen: Add sha256 command

Simon Glass sjg at chromium.org
Wed Feb 27 21:22:01 CET 2013


Hi Akshay,

On Wed, Feb 27, 2013 at 7:24 AM, Akshay Saraswat <akshay.s at samsung.com> wrote:
> sha256 command is added which can be used to test SHA 256 hash
> algorithm.
>
> TEST=sha256 0x40008000 0x2B 0x40009000
> Used mm and md to write a standard string to memory location
> 0x40008000 and ran the above command to verify the output.
>
> Signed-off-by: ARUN MANKUZHI <arun.m at samsung.com>
> Signed-off-by: Akshay Saraswat <akshay.s at samsung.com>
> ---
>  common/Makefile     |  1 +
>  common/cmd_sha256.c | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 70 insertions(+)
>  create mode 100644 common/cmd_sha256.c

Rather than adding this command, can you please use 'hash sha256'
instead? This is in common/hash.c.

Regards,
Simon

>
> diff --git a/common/Makefile b/common/Makefile
> index 54fcc81..6170ed5 100644
> --- a/common/Makefile
> +++ b/common/Makefile
> @@ -201,6 +201,7 @@ COBJS-$(CONFIG_MENU) += menu.o
>  COBJS-$(CONFIG_MODEM_SUPPORT) += modem.o
>  COBJS-$(CONFIG_UPDATE_TFTP) += update.o
>  COBJS-$(CONFIG_USB_KEYBOARD) += usb_kbd.o
> +COBJS-$(CONFIG_CMD_SHA256) += cmd_sha256.o
>  COBJS-$(CONFIG_CMD_DFU) += cmd_dfu.o
>  COBJS-$(CONFIG_CMD_GPT) += cmd_gpt.o
>  endif
> diff --git a/common/cmd_sha256.c b/common/cmd_sha256.c
> new file mode 100644
> index 0000000..e4f6b56
> --- /dev/null
> +++ b/common/cmd_sha256.c
> @@ -0,0 +1,69 @@
> +/*
> + * Copyright 2000-2009
> + * Wolfgang Denk, DENX Software Engineering, wd at denx.de.
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +#include <common.h>
> +#include <command.h>
> +#ifdef CONFIG_EXYNOS_ACE_SHA
> +#include <asm/arch/ace_sha.h>
> +#else
> +#include <sha256.h>
> +#endif
> +
> +int do_sha256(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
> +{
> +       unsigned long inlen;
> +       unsigned char *input, *out;
> +       int i;
> +#ifndef CONFIG_EXYNOS_ACE_SHA
> +       sha256_context sha_cnxt;
> +#endif
> +       if (argc < 4) {
> +               printf("usage: sha256 <input> <input length> <output>\n");
> +               return 0;
> +       }
> +       input = (unsigned char *)simple_strtoul(argv[1], NULL, 16);
> +       inlen = simple_strtoul(argv[2], NULL, 16);
> +       out = (unsigned char *)simple_strtoul(argv[3], NULL, 16);
> +
> +#ifdef CONFIG_EXYNOS_ACE_SHA
> +       ace_sha_hash_digest(out, input, inlen, 2);
> +#else
> +       sha256_starts(&sha_cnxt);
> +
> +       sha256_update(&sha_cnxt, input, inlen);
> +
> +       sha256_finish(&sha_cnxt, out);
> +#endif
> +
> +       for (i = 0; i < 32; i++)
> +               printf("0x%02X ", out[i]);
> +       printf("\n");
> +
> +       return 0;
> +}
> +
> +U_BOOT_CMD(
> +       sha256, 4, 1, do_sha256,
> +       "print hash result",
> +       "<input> <inputlength> <output>"
> +);
> --
> 1.8.0
>


More information about the U-Boot mailing list