[U-Boot] [PATCH 3/4] [RFC] hash: Add function to find hash_algo struct with progressive hash

2014-12-17 Thread Ruchika Gupta
Signed-off-by: Ruchika Gupta ruchika.gu...@freescale.com
CC: Simon Glass s...@chromium.org
---
 common/hash.c  | 35 ++-
 include/hash.h | 15 +++
 2 files changed, 41 insertions(+), 9 deletions(-)

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

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 3/4] [RFC] hash: Add function to find hash_algo struct with progressive hash

2014-12-17 Thread Simon Glass
Hi,

On 17 December 2014 at 03:05, Ruchika Gupta ruchika.gu...@freescale.com wrote:
 Signed-off-by: Ruchika Gupta ruchika.gu...@freescale.com
 CC: Simon Glass s...@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
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot