[U-Boot] [PATCH 3/4] [RFC] hash: Add function to find hash_algo struct with progressive hash
Simon Glass
sjg at chromium.org
Wed Dec 17 22:59:53 CET 2014
Hi,
On 17 December 2014 at 03:05, Ruchika Gupta <ruchika.gupta at freescale.com> wrote:
> Signed-off-by: Ruchika Gupta <ruchika.gupta at freescale.com>
> CC: Simon Glass <sjg at chromium.org>
> ---
> common/hash.c | 35 ++++++++++++++++++++++++++---------
> include/hash.h | 15 +++++++++++++++
> 2 files changed, 41 insertions(+), 9 deletions(-)
>
Can you please add a commit message? I think I can see what this is
doing, but I'm not sure...
> diff --git a/common/hash.c b/common/hash.c
> index 12d6759..87263df 100644
> --- a/common/hash.c
> +++ b/common/hash.c
> @@ -20,7 +20,7 @@
> #include <asm/io.h>
> #include <asm/errno.h>
>
> -#ifdef CONFIG_CMD_SHA1SUM
> +#ifdef CONFIG_SHA256
> static int hash_init_sha1(struct hash_algo *algo, void **ctxp)
> {
> sha1_context *ctx = malloc(sizeof(sha1_context));
> @@ -125,12 +125,8 @@ static struct hash_algo hash_algo[] = {
> CHUNKSZ_SHA256,
> },
> #endif
> - /*
> - * This is CONFIG_CMD_SHA1SUM instead of CONFIG_SHA1 since otherwise
> - * it bloats the code for boards which use SHA1 but not the 'hash'
> - * or 'sha1sum' commands.
> - */
> -#ifdef CONFIG_CMD_SHA1SUM
> +
> +#ifdef CONFIG_SHA1
> {
> "sha1",
> SHA1_SUM_LEN,
> @@ -140,7 +136,6 @@ static struct hash_algo hash_algo[] = {
> hash_update_sha1,
> hash_finish_sha1,
> },
> -#define MULTI_HASH
> #endif
> #ifdef CONFIG_SHA256
> {
> @@ -152,7 +147,6 @@ static struct hash_algo hash_algo[] = {
> hash_update_sha256,
> hash_finish_sha256,
> },
> -#define MULTI_HASH
> #endif
> {
> "crc32",
> @@ -165,6 +159,10 @@ static struct hash_algo hash_algo[] = {
> },
> };
>
> +#if defined(CONFIG_SHA256) || defined(CONFIG_CMD_SHA1SUM)
> +#define MULTI_HASH
> +#endif
> +
> #if defined(CONFIG_HASH_VERIFY) || defined(CONFIG_CMD_HASH)
> #define MULTI_HASH
> #endif
> @@ -311,6 +309,25 @@ int hash_lookup_algo(const char *algo_name, struct hash_algo **algop)
> return -EPROTONOSUPPORT;
> }
>
> +int hash_progressive_lookup_algo(const char *algo_name,
> + struct hash_algo **algop)
> +{
> + int i;
> +
> + for (i = 0; i < ARRAY_SIZE(hash_algo); i++) {
> + if (!strcmp(algo_name, hash_algo[i].name)) {
> + if (hash_algo[i].hash_init) {
> + *algop = &hash_algo[i];
> + return 0;
> + }
> + }
> + }
> +
> + debug("Unknown hash algorithm '%s'\n", algo_name);
> + return -EPROTONOSUPPORT;
> +}
> +
> +
> void hash_show(struct hash_algo *algo, ulong addr, ulong len, uint8_t *output)
> {
> int i;
> diff --git a/include/hash.h b/include/hash.h
> index d8ec4f0..059f84e 100644
> --- a/include/hash.h
> +++ b/include/hash.h
> @@ -128,6 +128,21 @@ int hash_block(const char *algo_name, const void *data, unsigned int len,
> int hash_lookup_algo(const char *algo_name, struct hash_algo **algop);
>
> /**
> + * hash_progressive_lookup_algo() - Look up the hash_algo struct with progressive
> + * hash support for an algorithm
> + *
> + * The function returns the pointer to the struct or -EPROTONOSUPPORT if the
> + * algorithm is not available with progressive hash support.
> + *
> + * @algo_name: Hash algorithm to look up
> + * @algop: Pointer to the hash_algo struct if found
> + *
> + * @return 0 if ok, -EPROTONOSUPPORT for an unknown algorithm.
> + */
> +int hash_progressive_lookup_algo(const char *algo_name,
> + struct hash_algo **algop);
> +
> +/**
> * hash_show() - Print out a hash algorithm and value
> *
> * You will get a message like this (without a newline at the end):
> --
> 1.8.1.4
>
Regards,
Simon
More information about the U-Boot
mailing list