Message ID | 1418810752-2364-4-git-send-email-ruchika.gupta@freescale.com |
---|---|
State | Superseded |
Delegated to: | Tom Rini |
Headers | show |
Hi, On 17 December 2014 at 03:05, Ruchika Gupta <ruchika.gupta@freescale.com> wrote: > Signed-off-by: Ruchika Gupta <ruchika.gupta@freescale.com> > CC: Simon Glass <sjg@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
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):
Signed-off-by: Ruchika Gupta <ruchika.gupta@freescale.com> CC: Simon Glass <sjg@chromium.org> --- common/hash.c | 35 ++++++++++++++++++++++++++--------- include/hash.h | 15 +++++++++++++++ 2 files changed, 41 insertions(+), 9 deletions(-)