hash: Use lower case for hash algorithm names
authorSimon Glass <sjg@chromium.org>
Sun, 24 Feb 2013 17:33:32 +0000 (17:33 +0000)
committerSimon Glass <sjg@chromium.org>
Fri, 1 Mar 2013 03:49:13 +0000 (19:49 -0800)
Rather than use strcasecmp() in the hash algorithm search, require the
caller to do this first. Most of U-Boot can use lower case anyway, and
the hash command can convert to lower case before calling hash_command().
This saves needing strcasecmp() for boards that use hashing but not
the hash command.

Signed-off-by: Simon Glass <sjg@chromium.org>
common/cmd_hash.c
common/hash.c
include/hash.h

index 8c03b5c7238c354cdc2ca0ebb0e275c92f23f537..4fe0e7861369f5d5198361f628244d7f260a55b2 100644 (file)
 #include <common.h>
 #include <command.h>
 #include <hash.h>
+#include <linux/ctype.h>
 
 static int do_hash(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
+       char *s;
 #ifdef CONFIG_HASH_VERIFY
        int flags = HASH_FLAG_ENV;
 
@@ -45,6 +47,8 @@ static int do_hash(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        /* Move forward to 'algorithm' parameter */
        argc--;
        argv++;
+       for (s = *argv; *s; s++)
+               *s = tolower(*s);
        return hash_command(*argv, flags, cmdtp, flag, argc - 1, argv + 1);
 }
 
index 0d04c4c9a0ce381f879ba48bca2e153d6d40e4ef..f5badcb930075c3f535b162507a707492e8a2e70 100644 (file)
@@ -32,7 +32,8 @@
 
 /*
  * These are the hash algorithms we support. Chips which support accelerated
- * crypto could perhaps add named version of these algorithms here.
+ * crypto could perhaps add named version of these algorithms here. Note that
+ * algorithm names must be in lower case.
  */
 static struct hash_algo hash_algo[] = {
        /*
@@ -42,7 +43,7 @@ static struct hash_algo hash_algo[] = {
         */
 #ifdef CONFIG_CMD_SHA1SUM
        {
-               "SHA1",
+               "sha1",
                SHA1_SUM_LEN,
                sha1_csum_wd,
                CHUNKSZ_SHA1,
@@ -51,7 +52,7 @@ static struct hash_algo hash_algo[] = {
 #endif
 #ifdef CONFIG_SHA256
        {
-               "SHA256",
+               "sha256",
                SHA256_SUM_LEN,
                sha256_csum_wd,
                CHUNKSZ_SHA256,
@@ -59,7 +60,7 @@ static struct hash_algo hash_algo[] = {
 #define MULTI_HASH
 #endif
        {
-               "CRC32",
+               "crc32",
                4,
                crc32_wd_buf,
                CHUNKSZ_CRC32,
@@ -202,7 +203,7 @@ static struct hash_algo *find_hash_algo(const char *name)
        int i;
 
        for (i = 0; i < ARRAY_SIZE(hash_algo); i++) {
-               if (!strcasecmp(name, hash_algo[i].name))
+               if (!strcmp(name, hash_algo[i].name))
                        return &hash_algo[i];
        }
 
index f2b2c4520de2e877e3361c361107949f4b4f25b5..2dbbd9b7d5789e3c42b3d489156954697c47ea49 100644 (file)
@@ -61,7 +61,7 @@ enum {
  *
  * This common function is used to implement specific hash commands.
  *
- * @algo_name:         Hash algorithm being used
+ * @algo_name:         Hash algorithm being used (lower case!)
  * @flags:             Flags value (HASH_FLAG_...)
  * @cmdtp:             Pointer to command table entry
  * @flag:              Some flags normally 0 (see CMD_FLAG_.. above)